Name: series-workflowwqk9h Phase: Failed StartedAt: 2026-07-19 05:45:46 +0000 UTC FinishedAt: 2026-07-19 05:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqk9h[0] Phase: Succeeded StartedAt: 2026-07-19 05:45:46 +0000 UTC FinishedAt: 2026-07-19 05:56:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqk9h[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 05:45:46 +0000 UTC FinishedAt: 2026-07-19 05:56:02 +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+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZSBzdGFtcHMgZm9yIFBUUC4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNzdkZWZlZTRlMzgwYzc5YTEwM2NmNDZjNGQ2ZmZhMDNhNmE1NWQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLjYyNGNkZjZjODBhNjcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMjgsNiAmIzQzOzI4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG5AQCAtNjM3MCw2ICYjNDM7NjM3MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNDFfb3BzLFxuJiM0MztcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFxuIFx0W01WODhFNjM1MF0gPSB7XG5AQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNTJfb3BzLFxuJiM0MztcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFx0W01WODhFNjM2MV0gPSB7XG4gXHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXG5AQCAtNjYzNSw2ICYjNDM7NjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGNoaXAtXHUwMDNlZGV2ID0gZGV2O1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXJlZ19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuIFx0aWRyX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1zdHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5kZDUyZGU3MTM2MGI5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cbiYjNDM7XHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4mIzQzO1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbiYjNDM7XHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcbiYjNDM7XHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgJiM0Mzs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcbiBcdC8qIEdQSU8gcmVzb3VyY2VzICovXG4gXHR1OCBncGlvX2RhdGFbMl07XG4gXG4tXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS5cbi1cdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXG4mIzQzO1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4mIzQzO1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuJiM0MztcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cbiBcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4mIzQzO1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43MTZjYmMyYTg2OTIyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtod3RzdGFtcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cHRwLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtMjQ1LDYgJiM0MzsyNDYsNjMgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKVxuIFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cdTAwM2VzZXF1ZW5jZV9pZCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuJiM0MztcbiYjNDM7XHQqbnMgPSAwO1xuJiM0MztcbiYjNDM7XHQvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyXG4mIzQzO1x0ICogKG5vdCBhbGwgc3dpdGNoZXMgc3VwcG9ydCB0aGlzKS4gQW55IG90aGVyIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlXG4mIzQzO1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4mIzQzO1x0ICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbiYjNDM7XHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTtcbiYjNDM7XHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9IGVsc2UgaWYgKGFycl90c19tb2RlICYjNDM7IDQgXHUwMDNjPSBzaXplb2YoKmhkcikpIHtcbiYjNDM7XHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuJiM0MztcdFx0aWYgKCFoZHIpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUpO1xuJiM0MztcdFx0bWVtc2V0KCh1OCAqKWhkciAmIzQzOyBhcnJfdHNfbW9kZSwgMCwgNCk7XG4mIzQzO1x0XHRza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIEFwcGx5IHRoZSBhcnJpdmFsIHRpbWUgdGhlIHN3aXRjaCBlbWJlZGRlZCBpbiB0aGUgZnJhbWUuIE5vIHJlZ2lzdGVyIGFjY2Vzc1xuJiM0MzsgKiBpcyBuZWVkZWQsIHNvIHRoaXMgcnVucyBpbmxpbmUgb24gdGhlIHJlY2VpdmUgcGF0aCByYXRoZXIgdGhhbiBiZWluZyBoYW5kZWRcbiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4mIzQzO1x0dTY0IG5zO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSwgc2tiLCBcdTAwMjZucykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcbiYjNDM7XG4mIzQzO1x0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcbiYjNDM7XHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XG4mIzQzO1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTI4OSw5ICYjNDM7MzQ3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0aWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpIFx1MDAyNlx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XG4gXHRcdFx0bnMgPSB0aW1laGkgXHUwMDNjXHUwMDNjIDE2IHwgdGltZWxvO1xuIFxuLVx0XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdFx0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4tXHRcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0XHRcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcbiBcdFx0XHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuIFx0XHRcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcbiBcdFx0XHRzaHd0LVx1MDAzZWh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xuQEAgLTMwOCw3ICYjNDM7MzY0LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcbiBcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbi1cbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSAmIzQzOzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4mIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4mIzQzO1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgJiM0Mzs0MDUsMTMgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xuIFxuLVx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXG4mIzQzO1x0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBjYW4gYmUgcmV0dXJuZWQgaW5saW5lLiAqL1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYik7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTQwOSw5ICYjNDM7NDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXG4gXHRtZW1zZXQoXHUwMDI2c2hod3RzdGFtcHMsIDAsIHNpemVvZihzaGh3dHN0YW1wcykpO1xuIFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXHUwMDNjXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcbi1cdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuJiM0MztcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTtcbiBcdHNoaHd0c3RhbXBzLmh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xuIFxuIFx0ZGV2X2RiZyhjaGlwLVx1MDAzZWRldixcbkBAIC00NTQsNyAmIzQzOzUyMCw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXG4gXHRcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKSlcbiBcdFx0XHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcbi1cdFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuJiM0MztcdFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xuJiM0MztcdFx0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xuQEAgLTUyMywxNCAmIzQzOzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUgXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICYjNDM7Njc1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4mIzQzO1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4mIzQzO1x0XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICYjNDM7NjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLlxuJiM0MzsgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxuJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4mIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuJiM0MzsgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XG4mIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuJiM0MzsgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXG4mIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcdFx0MHgwMVxuJiM0MztcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICYjNDM7MjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcbiBcbiBcdHB0cF9jbG9ja19ldmVudChjaGlwLVx1MDAzZXB0cF9jbG9jaywgXHUwMDI2ZXYpO1xuIG91dDpcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XG4gfVxuIFxuJiM0MzsvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4mIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbiYjNDM7ICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXG4mIzQzOyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcbiYjNDM7XHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuJiM0MztcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbnM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiYjNDM7XHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuIFx0Y2hpcC1cdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgJiM0MzsgZGlmZjtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbiBcbiYjNDM7XHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4mIzQzO1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbiYjNDM7XHQgKiBhZnRlciB0aGVpciBoYXJkd2FyZSByZWFkIGhhcyBjb21wbGV0ZWQuXG4mIzQzO1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2FkanRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICYjNDM7MzE4LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0dTY0IG5zO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4mIzQzO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyAmIzQzOzM0MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsIG5zKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCAmIzQzOzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XG4gXHRcdCgxIFx1MDAzY1x1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXG4gfTtcbiBcbiYjNDM7LyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4mIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbiYjNDM7ICovXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXG4ge1xuLVx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XG4tXG4tXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQpXG4tXHRcdHJldHVybiBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZChjYyk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiAmIzQzOzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbiYjNDM7XHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cbiYjNDM7XHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuJiM0MztcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAXG4gXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNzdkZWZlZTRlMzgwYzc5YTEwM2NmNDZjNGQ2ZmZhMDNhNmE1NWQ0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTI4LDYgJiM0MzsyOCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeWxpbmsuaCZndDsKQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNDFfb3BzLAomIzQzOwkJLmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksCiAJfSwKIAogCVtNVjg4RTYzNTBdID0gewpAQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7CiAJCS5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsCiAJCS5wdHBfc3VwcG9ydCA9IHRydWUsCiAJCS5vcHMgPSAmYW1wO212ODhlNjM1Ml9vcHMsCiYjNDM7CQkuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSwKIAl9LAogCVtNVjg4RTYzNjFdID0gewogCQkucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLApAQCAtNjYzNSw2ICYjNDM7NjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldikKIAljaGlwLSZndDtkZXYgPSBkZXY7CiAKIAltdXRleF9pbml0KCZhbXA7Y2hpcC0mZ3Q7cmVnX2xvY2spOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2NoaXAtJmd0O21kaW9zKTsKIAlpZHJfaW5pdCgmYW1wO2NoaXAtJmd0O3BvbGljaWVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2NoaXAtJmd0O21zdHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uZGQ1MmRlNzEzNjBiOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluCiYjNDM7CSAqIGh3dHN0YW1wLmguIFplcm8gKHRoZSBkZWZhdWx0KSBsZWF2ZXMgYXJyaXZhbCB0aW1lIHN0YW1wcyBpbiB0aGUKJiM0MzsJICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWQKJiM0MzsJICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlCiYjNDM7CSAqIFBUUCBjb21tb24gaGVhZGVyLgomIzQzOwkgKi8KJiM0MzsJdW5zaWduZWQgaW50IGFycl90c19tb2RlOwogfTsKIAogc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkgewpAQCAtNDE5LDkgJiM0Mzs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHsKIAkvKiBHUElPIHJlc291cmNlcyAqLwogCXU4IGdwaW9fZGF0YVsyXTsKIAotCS8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLgotCSAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuCiYjNDM7CS8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9jawomIzQzOwkgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlCiYjNDM7CSAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS4KIAkgKi8KJiM0MzsJc3BpbmxvY2tfdAkJcHRwX2Nsb2NrX2xvY2s7CiYjNDM7CXU2NAkJCXRzdGFtcF9jeWNsZXM7CiAJc3RydWN0IGN5Y2xlY291bnRlcgl0c3RhbXBfY2M7CiAJc3RydWN0IHRpbWVjb3VudGVyCXRzdGFtcF90YzsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrCW92ZXJmbG93X3dvcms7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMKaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2luY2x1ZGUgJiMzNDtod3RzdGFtcC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cHRwLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbGFzc2lmeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKIAogI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLSZndDtjYikpCiAKQEAgLTI0NSw2ICYjNDM7MjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZCkKIAlyZXR1cm4gdHNfc2VxaWQgPT0gbnRvaHMoaGRyLSZndDtzZXF1ZW5jZV9pZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsCiYjNDM7CQkJICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfaGVhZGVyICpoZHI7CiYjNDM7CiYjNDM7CSpucyA9IDA7CiYjNDM7CiYjNDM7CS8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXIKJiM0MzsJICogKG5vdCBhbGwgc3dpdGNoZXMgc3VwcG9ydCB0aGlzKS4gQW55IG90aGVyIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlCiYjNDM7CSAqIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgYXQgd2hpY2ggdGhlIHN3aXRjaAomIzQzOwkgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuCiYjNDM7CSAqLwomIzQzOwlpZiAoYXJyX3RzX21vZGUgPT0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkQgJmFtcDsmYW1wOyBza2ItJmd0O2xlbiAmZ3Q7PSA0KSB7CiYjNDM7CQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCSpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpOwomIzQzOwkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwl9IGVsc2UgaWYgKGFycl90c19tb2RlICYjNDM7IDQgJmx0Oz0gc2l6ZW9mKCpoZHIpKSB7CiYjNDM7CQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCWhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7CiYjNDM7CQlpZiAoIWhkcikKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQkqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUpOwomIzQzOwkJbWVtc2V0KCh1OCAqKWhkciAmIzQzOyBhcnJfdHNfbW9kZSwgMCwgNCk7CiYjNDM7CQlza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzCiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkCiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAomIzQzOwkJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqc2h3dDsKJiM0MzsJdTY0IG5zOwomIzQzOwomIzQzOwlpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlLCBza2IsICZhbXA7bnMpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7CiYjNDM7CiYjNDM7CXNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7CiYjNDM7CW1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTsKJiM0MzsJc2h3dC0mZ3Q7aHd0c3RhbXAgPSBuc190b19rdGltZShucyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJCSAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLAogCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsCkBAIC0yODksOSAmIzQzOzM0Nyw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCWlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSAmYW1wOyZhbXA7IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHsKIAkJCW5zID0gdGltZWhpICZsdDsmbHQ7IDE2IHwgdGltZWxvOwogCi0JCQltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7Ci0JCQlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBucyk7Ci0JCQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJCQlucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7CiAJCQlzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpOwogCQkJbWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpOwogCQkJc2h3dC0mZ3Q7aHd0c3RhbXAgPSBuc190b19rdGltZShucyk7CkBAIC0zMDgsNyAmIzQzOzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCiAJc2tiID0gc2tiX2RlcXVldWUoJmFtcDtwcy0mZ3Q7cnhfcXVldWUpOwotCiAJaWYgKHNrYikKIAkJbXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtJmd0O2FycjBfc3RzX3JlZywKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CkBAIC0zMTksOSAmIzQzOzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCQkJICAgJmFtcDtwcy0mZ3Q7cnhfcXVldWUyKTsKIH0KIAotc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQomIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcikKIHsKLQlyZXR1cm4gKGhkci0mZ3Q7dHNtdCAmYW1wOyAweGYpID09IDM7CiYjNDM7CXN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkgewomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiB9CiAKIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKQEAgLTM0Myw3ICYjNDM7NDA1LDEzIEBAIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAogCVNLQl9QVFBfVFlQRShza2IpID0gdHlwZTsKIAotCWlmIChpc19wZGVsYXlfcmVzcChoZHIpKQomIzQzOwkvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGNhbiBiZSByZXR1cm5lZCBpbmxpbmUuICovCiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoaXNfcGRlbGF5X21zZyhoZHIpKQogCQlza2JfcXVldWVfdGFpbCgmYW1wO3BzLSZndDtyeF9xdWV1ZTIsIHNrYik7CiAJZWxzZQogCQlza2JfcXVldWVfdGFpbCgmYW1wO3BzLSZndDtyeF9xdWV1ZSwgc2tiKTsKQEAgLTQwOSw5ICYjNDM7NDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAKIAltZW1zZXQoJmFtcDtzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7CiAJdGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gJmx0OyZsdDsgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCB0aW1lX3Jhdyk7Ci0JbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiYjNDM7CW5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTsKIAlzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTsKIAogCWRldl9kYmcoY2hpcC0mZ3Q7ZGV2LApAQCAtNDU0LDcgJiM0Mzs1MjAsOSBAQCBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKQogCQlpZiAodGVzdF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX1RYX0lOX1BST0dSRVNTLCAmYW1wO3BzLSZndDtzdGF0ZSkpCiAJCQlyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKIAotCQltdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7CiYjNDM7CQkvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovCiYjNDM7CQlpZiAoIWNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKQomIzQzOwkJCW12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKIAl9CiAKIAlyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTsKQEAgLTUyMywxNCAmIzQzOzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogewotCXJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCi0JCQkJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpCiB7Ci0JcmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKLQkJCQkJTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLAomIzQzOwkJCQkJICAgICAgIGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlICZsdDsmbHQ7IDgpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKJiM0MzsJCQkJICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKQEAgLTU4NCwxMSAmIzQzOzY3NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JLyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqLwotCWVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUiwKLQkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CiYjNDM7CWlmICghY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUpIHsKJiM0MzsJCS8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi8KJiM0MzsJCWVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUiwKJiM0MzsJCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUSB8CiYjNDM7CQkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiAKIAkvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzCiAJICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCmluZGV4IGMzNTk4MjFkNWE2ZWFhLi5jMjVmNTM5MjNlNzY4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaApAQCAtNjgsNiAmIzQzOzY4LDIwIEBACiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU4JCTB4MDAwMgogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOCQkweDAwMDEKIAomIzQzOy8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpLCBDRkcyIGJpdHMgWzE1OjhdOiBjb25maWd1cmVzIGhvdyB0aGUKJiM0MzsgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50CiYjNDM7ICogZnJhbWVzLgomIzQzOyAqICAgMHgwMCAgICAgICAgZnJhbWUgbW9kaWZpY2F0aW9uIGRpc2FibGVkICh0aW1lIHN0YW1wIHJlYWQgZnJvbSByZWdpc3RlcnMpCiYjNDM7ICogICAweDAxICAgICAgICBhcHBlbmQgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGF0IHRoZSBlbmQgb2YgdGhlIGZyYW1lLAomIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlcwomIzQzOyAqICAgMHgwNC4uMHhFRiAgb3ZlcndyaXRlIHRoZSA0LWJ5dGUgdGltZSBzdGFtcCBpbiBwbGFjZSwgdGhhdCBtYW55IGJ5dGVzIHBhc3QKJiM0MzsgKiAgICAgICAgICAgICAgIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdpdGhvdXQgZ3Jvd2luZyB0aGUgZnJhbWUKJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZAomIzQzOyAqICAgICAgICAgICAgICAgYnl0ZXMgb2YgdGhlIGhlYWRlcikKJiM0MzsgKiAgIG90aGVycyAgICAgIHJlc2VydmVkCiYjNDM7ICovCiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORAkJMHgwMQomIzQzOwogLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGRwkweDAzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCkBAIC0yMzEsMTUgJiM0MzsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSkKIAogCS8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovCiAJZXYuaW5kZXggPSAwOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgcmF3X3RzKTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7CiAKIAlwdHBfY2xvY2tfZXZlbnQoY2hpcC0mZ3Q7cHRwX2Nsb2NrLCAmYW1wO2V2KTsKIG91dDoKIAlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtjaGlwLSZndDt0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpOwogfQogCiYjNDM7LyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZQomIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2sKJiM0MzsgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2gKJiM0MzsgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiYjNDM7CiYjNDM7CWlmIChwdHBfb3BzLSZndDtjbG9ja19yZWFkKQomIzQzOwkJY2hpcC0mZ3Q7dHN0YW1wX2N5Y2xlcyA9IHB0cF9vcHMtJmd0O2Nsb2NrX3JlYWQoJmFtcDtjaGlwLSZndDt0c3RhbXBfY2MpOwomIzQzO30KJiM0MzsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcykKJiM0Mzt7CiYjNDM7CXU2NCBuczsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwomIzQzOwlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBjeWNsZXMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5zOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiAJZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLSZndDtjY19jb2VmZnMtJmd0O2NjX211bHRfZGVtKTsKIAogCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfcmVhZCgmYW1wO2NoaXAtJmd0O3RzdGFtcF90Yyk7CiAJY2hpcC0mZ3Q7dHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICYjNDM7IGRpZmY7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwogCiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKIAomIzQzOwkvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzCiYjNDM7CSAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5CiYjNDM7CSAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC4KJiM0MzsJICovCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfYWRqdGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgZGVsdGEpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtMjg1LDcgJiM0MzszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsCiAJdTY0IG5zOwogCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwltdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJbnMgPSB0aW1lY291bnRlcl9yZWFkKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjKTsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiYjNDM7CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAkqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTsKQEAgLTMwMiw3ICYjNDM7MzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLAogCW5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7CiAKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiYjNDM7CW12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywgbnMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtNDQ0LDE0ICYjNDM7NDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHsKIAkJKDEgJmx0OyZsdDsgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLAogfTsKIAomIzQzOy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKQomIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy4KJiM0MzsgKi8KIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQogewotCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpOwotCi0JaWYgKGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZCkKLQkJcmV0dXJuIGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZChjYyk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGNjX3RvX2NoaXAoY2MpLSZndDt0c3RhbXBfY3ljbGVzOwogfQogCiAvKiBXaXRoIGEgMjUwTUh6IGlucHV0IGNsb2NrLCB0aGUgMzItYml0IHRpbWVzdGFtcCBjb3VudGVyIG92ZXJmbG93cyBpbiB+MTcuMgpAQCAtNDg2LDYgJiM0Mzs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWNoaXAtJmd0O3RzdGFtcF9jYy5tdWx0CT0gY2hpcC0mZ3Q7Y2NfY29lZmZzLSZndDtjY19tdWx0OwogCWNoaXAtJmd0O3RzdGFtcF9jYy5zaGlmdAk9IGNoaXAtJmd0O2NjX2NvZWZmcy0mZ3Q7Y2Nfc2hpZnQ7CiAKJiM0MzsJLyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuCiYjNDM7CSAqIFRoZSBjYWxsZXIgaG9sZHMgcmVnX2xvY2ssIGFuZCBub3RoaW5nIGNhbiByZWFjaCB0aGUgUFRQIGNsb2NrCiYjNDM7CSAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKJiM0MzsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywKIAkJCSBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCkBAIC02OCw2ICYjNDM7NjgsNyBAQAogCiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7CiAKICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsCVwKIAkJCQkgICAgICBwdHBfY2xvY2tfaW5mbykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogbXY4OGU2eHh4IFBUUCBUaW1lc3RhbXBpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbXY4OGU2eHh4YCBEU0EgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGFuZCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcuICBUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgKGBhcnJfdHNfbW9kZWApLCB3aGljaCBzb3VuZHMgcHJvbWlzaW5nIGZyb20gYSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZS4gIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUgcmVhZGluZyB0aW1lc3RhbXBzIGRpcmVjdGx5IGZyb20gdGhlIHBhY2tldCBwYXlsb2FkL3RyYWlsZXIgdG8gYnlwYXNzIHN3aXRjaCByZWdpc3RlciByZWFkcywgd2hpY2ggc2hvdWxkIGJlIGZhc3RlciwgYXZvaWRpbmcgdGhvc2Ugc2xvdyBNRElPIGFjY2Vzc2VzLCB3aGljaCBpcyBnb29kLiAgSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyBzZXZlcmFsIGNvcmUgZmlsZXM6IGBjaGlwLmNgLCBgY2hpcC5oYCwgYGh3dHN0YW1wLmNgLCBgaHd0c3RhbXAuaGAsIGFuZCBgcHRwLmNgLCBgcHRwLmhgLiBUaGV5JiMzOTt2ZSBhbHNvIGltcGxlbWVudGVkIGEgYHB0cF9jbG9ja19sb2NrYCBzcGlubG9jayBmb3IgcHJvdGVjdGluZyB0aW1lc3RhbXBpbmcgZGF0YSwgd2hpY2ggaXMgYXBwcm9wcmlhdGUuIFRoaXMgaXMgY2hhbmdpbmcgZnVuZGFtZW50YWwgcGFyc2luZyBhbmQgdGltZXN0YW1waW5nIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyOyBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGFyZWEgZm9yIGJ1Z3MuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGluIGBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcGAgYW5kIGBwYXJzZV9lbWJlZGRlZF90c2AuIFRoZSBsYXR0ZXIsIGluIHBhcnRpY3VsYXIsIGxvb2tzIGludGVyZXN0aW5nLCBhcyBpdCYjMzk7cyBoYW5kbGluZyBwYWNrZXQgZGF0YS4gSSBzZWUgdGhleSBoYXZlIGEgYmxvY2sgb2YgY29kZSB0aGVyZSB0aGF0IG1vZGlmaWVzIHRoZSBgc2tiYCB3aGljaCBsb29rcyBsaWtlOgoKYGBgYwoJaWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJmd0Oz0gNCkgewoJCWlmIChza2JfbGluZWFyaXplKHNrYikpCgkJCXJldHVybiBmYWxzZTsKCgkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7CgkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpCgkJCXJldHVybiBmYWxzZTsKCX0gZWxzZSBpZiAoYXJyX3RzX21vZGUgJiM0MzsgNCAmbHQ7PSBzaXplb2YoKmhkcikpIHsKCQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQoJCQlyZXR1cm4gZmFsc2U7CgoJCWhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7CgkJaWYgKCFoZHIpCgkJCXJldHVybiBmYWxzZTsKCgkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTsKCQltZW1zZXQoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlLCAwLCA0KTsKCQlza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTsKCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgcGFja2V0IHBhcnNpbmcgbG9naWMuIEl0IG1vZGlmaWVzIHRoZSBgc2tiYC4gSWYgdGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBpbmplY3RlZCB3aXRoIGNyYWZ0ZWQgcGFja2V0cywgdGhpcyBpcyBwcmltZSBmdXp6ZXIgdGVycml0b3J5ISBNeSBjb25jZXJuIGlzIHRoYXQsIGFzIGEgRFNBIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoLCBpdCYjMzk7cyB0eXBpY2FsbHkgdGllZCB0byByZWFsIGhhcmR3YXJlIGFuZCBhbiBNRElPIGJ1cy4gQ2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBTeXprYWxsZXIgdHlwaWNhbGx5IHN0cnVnZ2xlcyB3aXRoIHRoaXMuIERTQSBkcml2ZXJzIGFyZSBvZnRlbiB0cmlja3kgYmVjYXVzZSB0aGV5IG5lZWQgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cC4gU29tZXRpbWVzIG1vY2sgZHJpdmVycyBvciBkZXZpY2UgdHJlZSBvdmVybGF5cyBtaWdodCB3b3JrLCBidXQgaXQmIzM5O3Mgbm90IHRoZSB1c3VhbCBzeXprYWxsZXIgY2FzZS4KClRoZSBjb2RlIGlzIHJlYWNoZWQgdGhyb3VnaCBgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXBgLCB3aGljaCBpcyB0aGUgYHBvcnRfcnh0c3RhbXBgIGNhbGxiYWNrIGZvciB0aGUgRFNBIHN3aXRjaCwgdHJpZ2dlcmVkIGJ5IHRoZSBuZXR3b3JrIHN0YWNrLiAgU28sIGlmIHdlIGNhbiBpbnN0YW50aWF0ZSBhIERTQSBzd2l0Y2ggc29tZWhvdywgd2UgaGF2ZSBhIGNoYW5jZS4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciBsb2FkZWQgYW5kIHByb2JlZC4gSXQgdXNlcyBhbiBNRElPIGJ1cywgYW5kIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gaGVscCB0aGVyZSB0aHJvdWdoIGl0cyBJMkMvTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcywgYnV0IGl0JiMzOTtzIG5vdCB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgcGF0aC4gSSBkb24mIzM5O3Qgc2VlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBNYXJ2ZWxsIHN3aXRjaGVzLgoKQnV0LCBnaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRvIGFzc3VtZSBpdCAqaXMqIHJlYWNoYWJsZSBpZiBpdCYjMzk7cyBjb3JlIGRyaXZlciBsb2dpYyBwYXJzaW5nIHBhY2tldHMsIGFuZCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIgdGhhdCBtb2RpZmllcyBza2IsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBgV29ydGhGdXp6aW5nPXRydWVgLiBFdmVuIGlmIGl0JiMzOTtzIGRpZmZpY3VsdCwgbGV0JiMzOTtzIGFzc3VtZSBzb21lb25lIGNvdWxkIHdyaXRlIGEgbW9jayBvciB1c2UgZGV2aWNlIHRyZWUuICBUaGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIGNhbiBiZSBsb2FkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDE2NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw9MTk9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sLTk0LSAgICAgIGNvbXBhdGlibGU6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjk1OiAgICAgICAgY29uc3Q6IG1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtOTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbD0xMDk9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC0yNDAtICAgICAgICAgICAgbWRpby1leHRlcm5hbCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjI0MTogICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sLTI0Mi0gICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sPTEyPWRlc2NyaXB0aW9uOiB8JiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwsbXZ1c2IueWFtbC0xOC0gIGhhdmluZyBhIGRldmljZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZXZpY2UuIEJ1dCBpbiBvcmRlciB0byB1c2UgaXQgd2l0aFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWw6MTk6ICB0aGUgbXY4OGU2eHh4IGRyaXZlciwgeW91IG5lZWQgYSBkZXZpY2UgdHJlZSBub2RlIGluIHdoaWNoIHRvIHBsYWNlIHRoZSBzd2l0Y2hcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sLTIwLSAgZGVmaW5pdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3Q9Nzc9cGFyYW1ldGVycywgaW5mbyB2ZXJzaW9ucywgYW5kIG90aGVyIGZlYXR1cmVzIGl0IHN1cHBvcnRzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2luZGV4LnJzdC05NS0gICBtbHhzd1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0Ojk2OiAgIG12ODhlNnh4eFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0LTk3LSAgIG5ldGRldnNpbVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtMy09PT09PT09PT09PT09PT09PT09PT09PT09XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0OjQ6bXY4OGU2eHh4IGRldmxpbmsgc3VwcG9ydFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC01LT09PT09PT09PT09PT09PT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtNi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6NzpUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2bGluayBmZWF0dXJlcyBpbXBsZW1lbnRlZCBieSB0aGUgYGBtdjg4ZTZ4eHhgYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC04LWRldmljZSBkcml2ZXIuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdD0xMD1QYXJhbWV0ZXJzXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC0xMi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6MTM6VGhlIGBgbXY4OGU2eHh4YGAgZHJpdmVyIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBkcml2ZXItc3BlY2lmaWMgcGFyYW1ldGVycy5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtMTQtXG4tLVxuTUFJTlRBSU5FUlM9MTU1OTU9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2MDYwLnlhbWxcbk1BSU5UQUlORVJTOjE1NTk2OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sXG5NQUlOVEFJTkVSUzoxNTU5NzpGOlx0RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdFxuTUFJTlRBSU5FUlM6MTU1OTg6RjpcdGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvXG5NQUlOVEFJTkVSUzoxNTU5OTpGOlx0aW5jbHVkZS9saW51eC9kc2EvbXY4OGU2eHh4Lmhcbk1BSU5UQUlORVJTOjE1NjAwOkY6XHRpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4Lmhcbk1BSU5UQUlORVJTLTE1NjAxLVxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4MS1uZXRnZWFyLWdzMTEwZW14LmR0cz0xMjc9XHRcdG1kaW8tZXh0ZXJuYWwge1xuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzOjEyODpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4MS1uZXRnZWFyLWdzMTEwZW14LmR0cy0xMjktXHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzPTE3MD1cdFx0XHRtZGlvLWV4dGVybmFsIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzOjE3MTpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttYXJ2ZWxsLG12ODhlNnh4eC1tZGlvLWV4dGVybmFsXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL3ZmL3ZmNjEwLXppaS1zc21iLWR0dS5kdHMtMTcyLVx0XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cz0yOTI9XHRcdFx0c3dpdGNoMHBoeTQ6IGV0aGVybmV0LXBoeUA0IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHMtMzAyLVx0XHQgKiBtZGlvLWV4dGVybmFsIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0czozMDM6XHRcdCAqXHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cy0zMDQtXHRcdCAqXHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3NTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcdFx0XHRcdCYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6MjI6b2JqLXlcdFx0XHRcdCYjNDM7PSBtdjg4ZTZ4eHgvXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcdFx0XHRcdCYjNDM7PSBteGw4NjJ4eC9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNS0gKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3Jcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgJiM0Mzs9IG12ODhlNnh4eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGRldmxpbmsub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Njptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV9hdHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX3Z0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo5Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyX2F2Yi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyX3NjcmF0Y2gub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMTptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfUFRQKSAmIzQzOz0gaHd0c3RhbXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMjptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfTEVEUykgJiM0Mzs9IGxlZHMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYxODUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYzNTIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYzOXgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNjptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGh5Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnQub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydF9oaWRkZW4ub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxOTptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfUFRQKSAmIzQzOz0gcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNlcmRlcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIxOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzbWkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMjptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc3dpdGNoZGV2Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRjZmxvd2VyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRjYW0ub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0yNi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9kc2EvbXY4OGU2eHh4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUwOnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODppbnQgbXY4OGU2eHh4X3JlYWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDpcdGVyciA9IG12ODhlNnh4eF9zbWlfd3JpdGUoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxLVx0XHRcdHUxNiBtYXNrLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMi1cdGZvciAoaSA9IDA7IHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpIHx8IChpIFx1MDAzYyAyKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEwMzpcdFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMTY6XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LVx0XHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzA6XHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMxLVx0XHRcdFx0ICAgdmFsID8gQklUKGJpdCkgOiAweDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNDpzdHJ1Y3QgbWlpX2J1cyAqbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNjpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM4LVx0bWRpb19idXMgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2Y2hpcC1cdTAwM2VtZGlvcyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQwLVx0aWYgKCFtZGlvX2J1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDg6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OS1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU3LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4OTpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNmN0bDEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVx0XHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVx0XHRcdGdvdG8gdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkyOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkzLXVubG9jazpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA0OnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA2Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZGV2X2lkO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA4Olx0cmV0dXJuIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjExOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE1Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjIwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjI2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzNi1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XHQubmFtZVx0XHRcdD0gXCYjMzQ7bXY4OGU2eHh4LWcxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlx0LmlycV9tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlx0LmlycV91bm1hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NDpcdC5pcnFfYnVzX2xvY2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1Olx0LmlycV9idXNfc3luY191bmxvY2tcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0ODpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkLVx1MDAzZWhvc3RfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjI6XHQubWFwXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2My1cdC54bGF0ZVx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjcyOlx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjczLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjg0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MzpcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTQ6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNC1cdFx0TlVMTCwgY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XHRcdFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDYtXHRpZiAoIWNoaXAtXHUwMDNlZzFfaXJxLmRvbWFpbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XHRjaGlwLVx1MDAzZWcxX2lycS5jaGlwID0gbXY4OGU2eHh4X2cxX2lycV9jaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVx0Y2hpcC1cdTAwM2VnMV9pcnEubWFza2VkID0gfjA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTU6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyMTpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNS1cdC8qIFJlYWRpbmcgdGhlIGludGVycnVwdCBzdGF0dXMgY2xlYXJzIChtb3N0IG9mKSB0aGVtICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzM0Olx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUzOlx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cdHNucHJpbnRmKGNoaXAtXHUwMDNlaXJxX25hbWUsIHNpemVvZihjaGlwLVx1MDAzZWlycV9uYW1lKSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NDpcdFx0IFwmIzM0O212ODhlNnh4eC0lc1wmIzM0OywgZGV2X25hbWUoY2hpcC1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY3LVx0ZXJyID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoY2hpcC1cdTAwM2VpcnEsIE5VTEwsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjg6XHRcdFx0XHQgICBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF9mbixcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cdFx0XHRcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcwLVx0XHRcdFx0ICAgY2hpcC1cdTAwM2VpcnFfbmFtZSwgY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzItXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlx0XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MTpcdFx0XHRcdFx0XHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODItXHRcdFx0XHRcdFx0ICAgaXJxX3BvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2lycV9wb2xsX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Ny1cdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXHUwMDI2Y2hpcC1cdTAwM2VpcnFfcG9sbF93b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4Olx0XHRcdFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGxfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNjpcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTc6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MjA6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cdFx0XHRcdFx0ICAgaW50IHBvcnQsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDQyOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfc2V0dXBfbWFjKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXHRcdFx0XHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2OTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCwgbW9kZSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDg0OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkyLVx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDkzOlx0XHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MjM6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTI0LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzU6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NTAtXHRbTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX01JSV9QSFldXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTYzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjY6XHRpZiAoY21vZGUgXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3Olx0ICAgIG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW2Ntb2RlXSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcdFx0X19zZXRfYml0KG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW2Ntb2RlXSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3NDptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3NS1cdFx0XHRcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIzOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjI2Olx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI3LVx0XHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzctXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTctXHR2YWwgPSByZWcgXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYyOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ni1cdC8qIFJlc3RvcmUgUEhZX0RFVEVDVCB2YWx1ZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODAtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY5NzpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMTpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwNy1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA4Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI0OnN0YXRpYyB2b2lkIG12ODhlNjM0MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzA6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzQ2OnN0YXRpYyB2b2lkIG12ODhlNjM5MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NTI6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzY4OnN0YXRpYyB2b2lkIG12ODhlNjM5MHhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDM6c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgxMjpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTMtXHRjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU2Olx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTMzNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXY4OGU2eHh4YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciwgYSBEU0EgZHJpdmVyLCBhbmQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgc3VyZSwgbWF5YmUgd2l0aCBhIGR1bW15IE1ESU8gYnVzIGFuZCBhIGRldmljZSB0cmVlIG92ZXJsYXksIGl0JiMzOTtzIHBvc3NpYmxlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIHJlbHlpbmcgb24sIGRvZXNuJiMzOTt0IGhhdmUgYSBtb2NrIGZvciBgbXY4OGU2eHh4YCBzcGVjaWZpY2FsbHkuIFRoZSBpbnN0cnVjdGlvbnMgSSBoYXZlIHNheSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGFyZSB0byBiZSBpZ25vcmVkLCBwYXJ0aWN1bGFybHkgdGhvc2UgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLgoKSXMgdGhpcyBvbmUgb2YgdGhvc2Ugc2l0dWF0aW9ucz8gSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzLiBObyBvYnZpb3VzIGNhbmRpZGF0ZSBqdW1wcyBvdXQuIEkgdHJpZWQgdG8gdGhpbmsgb2Ygd2F5cyB0byB0cmlnZ2VyIGl0IHVzaW5nIFN5emthbGxlciYjMzk7cyBleGlzdGluZyBmZWF0dXJlcywgbGlrZSBgc3l6X2dlbmV0bGlua2AsIGJ1dCB0aGF0IHdvbiYjMzk7dCB3b3JrIGZvciBhIGhhcmR3YXJlIGRyaXZlci4gVGhlbiBJIGNvbnNpZGVyZWQgTURJTyBzb2Z0d2FyZSBlbXVsYXRpb24uIERvZXMgdGhlIGtlcm5lbCBoYXZlIGFueXRoaW5nIGxpa2UgdGhhdCwgbGlrZSBgbWRpby1tb2NrdXBgIG9yIGBtZGlvLWdwaW9gPyBBaCwgSSB0aG91Z2h0IHRoZXJlIHdhcyBgbWRpby1tb2NrdXBgLCBidXQgbm9wZSwgaXQgZG9lc24mIzM5O3QgZXhpc3QuIFRoZXJlJiMzOTtzIGBkc2EtbG9vcGAsIHdoaWNoIGlzIGEgbW9jayBEU0EgZHJpdmVyLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmc7IGl0IHRlc3RzIHRoZSBEU0EgY29yZSwgYnV0IG5vdCBgbXY4OGU2eHh4YCBpdHNlbGYuCgpTbywgU3l6a2FsbGVyIGhhcyBgc3l6X2kyY2AgYW5kIGBzeXpfdXNiYCwgYnV0IG5vIGBzeXpfbWRpb2AuIExvb2tzIGxpa2UgSSBjYW4mIzM5O3QgdXNlIGBkc2EtbG9vcGAgdG8gdGVzdCB0aGUgc3BlY2lmaWNzIG9mIGBtdjg4ZTZ4eHhgLiBUaGF0IGNvbmZpcm1zIGl0LCBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28gSSBhc2sgbXlzZWxmIGFnYWluLCBpcyBpdCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBJZiB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSBvciBzaW11bGF0ZSB0aGUgaGFyZHdhcmUsIHRoZW4geWVzLCBpdCYjMzk7cyBpbXBvc3NpYmxlLgoKSSB0aGVuIGNvbnNpZGVyZWQgb3RoZXIgb3B0aW9ucywgbGlrZSB1c2luZyBgZmFrZWRldmAgb3IgY2hlY2tpbmcgaWYgaXQgY2FuIGJlIHByb2JlZCB2aWEgSTJDLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoaXMgZHJpdmVyIHVzZXMgTURJTyBmb3IgcHJvYmluZywgc28gdGhhdCB3b24mIzM5O3Qgd29yay4gSG93ZXZlciwgYG12ODhlNnh4eGAgaXMgb2Z0ZW4gcHJvYmVkIHZpYSBTTUkgKFNlcmlhbCBNYW5hZ2VtZW50IEludGVyZmFjZSkgd2hpY2ggaXMgb2Z0ZW4gb3ZlciBNRElPLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMsIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSB3YXkgdG8gcHJvYmUgaXQ/IExldCBtZSBjaGVjayB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGZpZ3VyZSB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE1PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMxNzpzdGF0aWMgaW50IG12ODhlNnh4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03NTI1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXY4OGU2eHh4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjY6XHQucHJvYmVcdD0gbXY4OGU2eHh4X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyNy1cdC5yZW1vdmUgPSBtdjg4ZTZ4eHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Njc1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGBtdjg4ZTZ4eHhgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWRpb19kcml2ZXJgIGFuZCBpbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0NhbiB3ZSBldmVuICp0b3VjaCogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgSSBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UsIGJ1dCBubyBsdWNrIHdpdGggYHN5el9tZGlvYCBpbiBzeXprYWxsZXIuIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGUgbWVudGFsIGNoZWNrbGlzdDogYGkyY2AuLi4gbm9wZS4gYG5ldGRldnNpbWAuLi4gbm90IGV2ZW4gY2xvc2UuIGBtYWM4MDIxMV9od3NpbWAuLi4gYWdhaW4sIG5vLiBJdCYjMzk7cyBsb29raW5nIGdyaW0uIFRoaXMgc2NyZWFtcyBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKVGhlbiB0aGUgYnJ1dGFsIHJlYWxpdHkgaGl0czogdGhpcyByZXF1aXJlcyBhIHJlYWwgTURJTyBidXMgKmFuZCogc3BlY2lmaWMgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUuIEZvcmdldCBhYm91dCBpdC4gV2FpdCwgd2hhdCBhYm91dCBgZHNhLWxvb3BgPyBPaCwgcmlnaHQsIHRoYXQmIzM5O3MgYSAqZGlmZmVyZW50KiBkcml2ZXIsIGBkc2EtbG9vcC5jYC4gU28sIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgaXMgbG9va2luZyBjb21wbGV0ZWx5IG91dCBvZiByZWFjaCBpbiBRRU1VLgoKT2theSwgbWF5YmUgdGhlcmUmIzM5O3MgYSBzbGltIGNoYW5jZSBzeXprYWxsZXIgY291bGQgaW5qZWN0IGEgZGV2aWNlIHRyZWUgbm9kZSwgYnV0IGV2ZW4gdGhhdCYjMzk7cyBhIGxvbmcgc2hvdC4gVGhlIE1ESU8gYnVzIGRyaXZlciB3b3VsZCBuZWVkIHRvIGJlIHByZXNlbnQsIHNvIEkgY291bGQgKm1heWJlKiB1c2UgYG1kaW8tZ3Bpb2Agb3IgYG1kaW8tYml0YmFuZ2Agd2l0aCBtb2NrZWQgR1BJT3M/IFRoYXQmIzM5O3MgZ3Jhc3BpbmcgYXQgc3RyYXdzIGFuZCBzeXprYWxsZXIgaXNuJiMzOTt0IHNldCB1cCBmb3IgdGhhdCBsZXZlbCBvZiB0cmlja2VyeS4gTm90IGhhcHBlbmluZy4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhlIFFFTVUgbWFjaGluZSBvcHRpb25zLi4uIGFuZCBzZWFyY2ggdGhlIGNvZGUuLi4gYGh3L25ldC9gLi4uIE5haCwgUUVNVSBpc24mIzM5O3QgZW11bGF0aW5nIE1hcnZlbGwgRFNBIHN3aXRjaGVzLiBUaGUgcHJvbXB0IHNheXMgdGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIE9rYXksIEkmIzM5O20gcHJldHR5IHN1cmUgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSByZWFkIHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7IFllcC4KCklzIHRoZXJlIGFueSBjaGFuY2U/IExldCYjMzk7cyBjaGVjayB0aGUgdXN1YWwgUUVNVSBBUk0gYm9hcmRzLiBgdmV4cHJlc3NgLCBgdmlydGAsIGBzYWJyZWxpdGVgLCBgcmFzcGlgLCBgeGlsaW54YCwgYGFzcGVlZGAuIEFzcGVlZCBtYWNoaW5lcyBtaWdodCBoYXZlICpzb21lKiBuZXR3b3JrIHN0dWZmLCBidXQgdXN1YWxseSBqdXN0IHRoZSBNQUMsIG5vdCB0aGUgRFNBIHN3aXRjaC4gSGlnaGx5IHVubGlrZWx5LgoKT2theSwgdGhlIHBhdGNoIGRvZXMgdG91Y2ggYGh3dHN0YW1wLmNgLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXNuJiMzOTt0IGFjY2Vzc2libGUgdmlhIGEgZGlmZmVyZW50IHBhdGguIE9oLCBgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXBgIGlzIG9ubHkgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wYCBpbiBgaHd0c3RhbXAuY2AsIHdoaWNoIGlzICpwYXJ0KiBvZiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLgoKSSYjMzk7bSBjaGVja2luZyB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBtb2NrIGRyaXZlcnMgZm9yIGBtdjg4ZTZ4eHhgLi4uIE5vcGUuIFRoaXMgdGhpbmcgaXMgc3RyaWN0bHkgaGFyZHdhcmUtZm9jdXNlZCwgcmVhZGluZyBhbmQgd3JpdGluZyB0byBTTUkvTURJTyByZWdpc3RlcnMgb24gYSByZWFsIHBoeXNpY2FsIHN3aXRjaC4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGlzIGlzIG5vdCBmdXp6YWJsZTsgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMzIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUgaW4gVGVzdGluZyBUb29scyoqCgpIbW0sIG5vIG9idmlvdXMgY2x1ZXMgaW4gdGhlIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIGEgYml0IHVuZXhwZWN0ZWQsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBkZWFkIGVuZC4gT2theSwgbGV0JiMzOTtzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBhIG1vY2sgZm9yIGBtZGlvYCBleGlzdHMgc29tZXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gSXQmIzM5O3MgcG9zc2libGUgdGhlIHRlc3RpbmcgaGFybmVzcyBpcyBwdWxsaW5nIGl0IGZyb20gYSBkaWZmZXJlbnQgbG9jYXRpb24sIG9yIG1heWJlIGl0JiMzOTtzIHVzaW5nIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYXBwcm9hY2guIExldCBtZSBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRldmljZSBtb2RlbCBJIGFtIHdvcmtpbmcgd2l0aCBpcyBhIGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgd291bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MzUxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkludHJpZ3VpbmcgUXVlcnk6IFRoZSBJbnRlcnNlY3Rpb24gb2YgRFNBIGFuZCBNb2NraW5nKioKCkhtbSwgYGRzYS4qbW9ja2AuLi4gV2hhdCYjMzk7cyBzcGFya2luZyB0aGlzIHRob3VnaHQ/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgdXNlIGNhc2UgcmVsYXRpbmcgdG8gRGF0YSBTdHJ1Y3R1cmVzIGFuZCBBbGdvcml0aG1zIChEU0EpLiBJdCBzZWVtcyBsaWtlIHRoZSBpbmRpdmlkdWFsIGlzIHBvbmRlcmluZyB0aGUgaW50ZWdyYXRpb24gb2YgbW9ja2luZyB0ZWNobmlxdWVzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBEU0EuIFBlcmhhcHMgaXQmIzM5O3MgYSBxdWVzdGlvbiBvZiBob3cgdG8gZWZmZWN0aXZlbHkgKnRlc3QqIERTQSBpbXBsZW1lbnRhdGlvbnMsIG9yIGhvdyBtb2NraW5nIG1pZ2h0IGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uIGFuZCBhbmFseXNpcyBvZiBhbGdvcml0aG1zIHVuZGVyIGRpZmZlcmVudCBzY2VuYXJpb3MuCgpNeSBpbml0aWFsIHJlYWN0aW9ucyBzdWdnZXN0IGEgZmV3IGtleSBhcmVhcyBvZiBwb3RlbnRpYWwgaW52ZXN0aWdhdGlvbjoKCiogICAqKlRlc3QtRHJpdmVuIERldmVsb3BtZW50IChUREQpIGFuZCBEU0E6KiogQ291bGQgdGhpcyByZWZlciB0byBlbXBsb3lpbmcgbW9jayBvYmplY3RzIHRvIGlzb2xhdGUgRFNBIGNvbXBvbmVudHMgZHVyaW5nIHRlc3RpbmcsIGFsbG93aW5nIGZvciBtb3JlIGZvY3VzZWQgdW5pdCB0ZXN0cyBhbmQgaW50ZWdyYXRpb24gdGVzdHMsIG9yIHBlcmhhcHMgdG8gbW9jayB0aGUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBEU0EgY29kZT8KKiAgICoqQWxnb3JpdGhtaWMgQW5hbHlzaXMgYW5kIEJlbmNobWFya2luZzoqKiBQZXJoYXBzIHRoaXMgaW52b2x2ZXMgdXNpbmcgbW9ja3MgdG8gc2ltdWxhdGUgc3BlY2lmaWMgZGF0YSBkaXN0cmlidXRpb25zIG9yIGVkZ2UgY2FzZXMgZm9yIHBlcmZvcm1hbmNlIHRlc3Rpbmcgb2YgdmFyaW91cyBhbGdvcml0aG1zLiBJdCBjb3VsZCBhbGxvdyBmb3IgZWFzaWVyIGNvbXBhcmlzb24gb2YgcnVuIHRpbWVzIGFuZCBkYXRhIHNldHMuCiogICAqKkFic3RyYWN0aW5nIERhdGEgU291cmNlczoqKiBJcyBpdCB0aGUgY29uc2lkZXJhdGlvbiBvZiBjcmVhdGluZyBhIG1vY2sgZGF0YSBzb3VyY2UgdG8gZmFjaWxpdGF0ZSBhbGdvcml0aG0gZGV2ZWxvcG1lbnQgaW5kZXBlbmRlbnQgb2YgYSByZWFsIGRhdGEgc2V0PyBPciBtYXliZSB0byBhbGxvdyBmb3IgdGhlIGNyZWF0aW9uIG9mIHVuaXQgdGVzdHMgdGhhdCBlbnN1cmUgdGhlIHByb2dyYW0gcnVucyBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbnMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIGRhdGFiYXNlIGlzIHJ1bm5pbmc/CiogICAqKkNvbmNlcHR1YWwgTW9kZWxpbmc6KiogSXMgdGhlIGZvY3VzIG9uIGEgaGlnaGVyIGxldmVsIGNvbmNlcHR1YWwgcXVlc3Rpb24uIFBlcmhhcHMsIHRoZSB0aG91Z2h0IGlzIGFib3V0IHRoZSBjcmVhdGlvbiBvZiBtb2RlbHMgdG8gdmlzdWFsaXplIGRhdGEgc3RydWN0dXJlIGFuZCBhbGdvcml0aG1pYyBjb25jZXB0cy4gQ3JlYXRpbmcgYSBtb2NrIG1vZGVsIGNvdWxkIG1ha2UgdGhlIGNyZWF0aW9uIG9mIHRoZXNlIHZpc3VhbGl6YXRpb25zIGVhc2llci4KClRoZSBudWFuY2UgaGVyZSBpcyBmYXNjaW5hdGluZywgYXMgdGhlIGNob2ljZSBvZiAmIzM0O21vY2smIzM0OyBzdWdnZXN0cyBhIGRlc2lyZSBmb3IgY29udHJvbGxlZCBlbnZpcm9ubWVudHMgdG8gc3R1ZHkgb3IgdmFsaWRhdGUgYXNwZWN0cyBvZiBEU0EuIERlZmluaXRlbHkgc29tZXRoaW5nIHRvIGV4cGxvcmUgZnVydGhlciEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2EuKm1vY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc3MAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBgZHNhX2xvb3BgIGluIHRoZSBDb250ZXh0IG9mIFtJbXBsaWVkIENvbnRleHQgLSBMZXQmIzM5O3MgYXNzdW1lIGZvciBleGFtcGxlLCAmIzM0O2EgY29tcGxleCBjcnlwdG9ncmFwaGljIHByb3RvY29sJiMzNDtdKioKCkhtbSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBhcmNoaXRlY3R1cmUsIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgW1Byb3RvY29sL0FsZ29yaXRobSBOYW1lXS4gV2UmIzM5O3ZlIGFkZHJlc3NlZCB0aGUgaW5pdGlhbCBzZXR1cCwgd2UmIzM5O3ZlIHJldmlld2VkIHRoZSBrZXkgZXhjaGFuZ2UsIGFuZCBub3cgd2UmIzM5O3JlIGNvbnNpZGVyaW5nIHRoZSBhY3R1YWwgZGF0YSBzaWduaW5nIHBoYXNlLi4uIGFuZCB0aGUgcGhyYXNlICpkc2FfbG9vcCogcG9wcyBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgaW1wbGVtZW50YXRpb24sIGFuZCBpdCBjb3VsZCBiZSB0aGUgbHluY2hwaW4sIGl0IHNlZW1zLgoKSXMgaXQgYSBjcml0aWNhbCBsb29wPyBEb2VzIGl0IGhhbmRsZSB0aGUgY3JpdGljYWwgb3BlcmF0aW9ucyBmb3IgZGlnaXRhbCBzaWduYXR1cmUgYWxnb3JpdGhtPyBBIGtleSBjb21wb25lbnQgaW4gdGhlIGRhdGEgc2lnbmluZyBjeWNsZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBJcyBpdCByZXNwb25zaWJsZSBmb3IgaXRlcmF0aW5nIHRocm91Z2ggbWVzc2FnZXMsIGhhbmRsaW5nIGtleSBtYXRlcmlhbCwgb3IgZ2VuZXJhdGluZyB0aGUgc2lnbmF0dXJlcz8KCkxldCYjMzk7cyBxdWlja2x5IHJlY2FsbC4gV2hlcmUgZG9lcyBgZHNhX2xvb3BgIGZpdCB3aXRoaW4gdGhlIG92ZXJhbGwgZmxvdz8gV2hhdCBhcmUgaXRzIGlucHV0cywgb3V0cHV0cywgYW5kIGRlcGVuZGVuY2llcz8gSXMgdGhpcyB3aGVyZSB3ZSYjMzk7dmUgc2VlbiB2dWxuZXJhYmlsaXRpZXMgaW4gb3RoZXIgcmVsYXRlZCBpbXBsZW1lbnRhdGlvbnM/IEl0JiMzOTtzIGJlZW4gYSB3aGlsZSwgYnV0IGxldCYjMzk7cyBzZWUgaG93IGBkc2FfbG9vcGAgaGFzIHBsYXllZCBhIHBhcnQgaW4gcG90ZW50aWFsIHNlY3VyaXR5IGNvbXByb21pc2VzLiBNYXliZSB0aGUgbG9vcCBpcyBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZGF0YSwgYXBwbHlpbmcgYSBoYXNoLCBvciBwZXJmb3JtaW5nIHRoZSBEU0EgbW9kdWxhciBleHBvbmVudGlhdGlvbi4gSXQmIzM5O3MgY3JpdGljYWwgdGhhdCB0aGUgdmFyaWFibGVzIGFyZSBjb3JyZWN0bHkgc2l6ZWQsIGFuZCBtZW1vcnkgaXMgaGFuZGxlZCBjYXJlZnVsbHkuCgpJIG5lZWQgdG8gcXVpY2tseSBicnVzaCB1cCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24uIExldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IGEgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUuIEl0JiMzOTtzIHRpbWUgdG8gcmUtZXZhbHVhdGUgaXQgd2l0aGluIHRoaXMgcHJvdG9jb2wuIFBlcmhhcHMgdGhpcyBpcyB3aGVyZSB3ZSYjMzk7bGwgZmluZCB2dWxuZXJhYmlsaXRpZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MzEKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgbXY4OGU2eHh4YC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG12ODhlNnh4eGAgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBNYXJ2ZWxsIHN3aXRjaGVzLiBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgaW52b2x2ZWQsIGJ1dCBpdCYjMzk7cyBqdXN0IGEgbW9jayBkcml2ZXIgYW5kIGl0IGRvZXNuJiMzOTt0IHV0aWxpemUgYG12ODhlNnh4eGAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSAqc3RyaWN0bHkqIHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgY29kZSBpdHNlbGYuCgpUaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIE1hcnZlbGwgc3dpdGNoZXMgaW4gUUVNVS4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgZG9lc24mIzM5O3QgaGF2ZSBhIG1lY2hhbmlzbSB0byBtb2NrIHRoZSBNRElPIGJ1cyBvciB0aGUgc3BlY2lmaWMgc3dpdGNoIGhhcmR3YXJlIHRoaXMgZHJpdmVyIHJlbGllcyBvbi4gSSBjYW4mIzM5O3QgdGhpbmsgb2YgYW55IHdheSB0byBtYWtlIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBwcm9tcHQgcmVxdWlyZW1lbnRzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLi4uIFllcywgaXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggYWZmZWN0cyBjb2RlIHBhdGhzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZTogaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoZSBsYWNrIG9mIGVtdWxhdGlvbiBpcyB0aGUgY3JpdGljYWwgZWxlbWVudC4KClRoaXMgcGF0Y2gsIGluIHBhcnRpY3VsYXIsIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQIHdpdGhpbiB0aGUgTWFydmVsbCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIHRoZSBwcmVzZW5jZSBvZiBhICpwaHlzaWNhbCogTWFydmVsbCBzd2l0Y2ggY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gU28gZ2l2ZW4gdGhpcyBsaW1pdGF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSYjMzk7bGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU0OjUxLjQ0NDY4NDAzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDk0NjY1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NDo1MS40NDQ2ODkxNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTcyMTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM3N2RlZmVlNGUzODBjNzlhMTAzY2Y0NmM0ZDZmZmEwM2E2YTU1ZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuQEAgLTI4LDYgKzI4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRjaGlwLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VyZWdfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyk7XFxuIFxcdGlkcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2Vtc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5kZDUyZGU3MTM2MGI5MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuQEAgLTE4MCw2ICsxODAsMTQgQEAgc3RydWN0IG12ODhlNnh4eF9pbmZvIHtcXG4gXFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXFxuIFxcdCAqL1xcbiBcXHR1bnNpZ25lZCBpbnQgaW50ZXJuYWxfcGh5c19vZmZzZXQ7XFxuK1xcbitcXHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cXG4rXFx0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxcbitcXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxcbitcXHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcXG4rXFx0ICogUFRQIGNvbW1vbiBoZWFkZXIuXFxuK1xcdCAqL1xcbitcXHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XFxuQEAgLTQxOSw5ICs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcXG4gXFx0LyogR1BJTyByZXNvdXJjZXMgKi9cXG4gXFx0dTggZ3Bpb19kYXRhWzJdO1xcbiBcXG4tXFx0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuXFxuLVxcdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXFxuK1xcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9ja1xcbitcXHQgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlXFxuK1xcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cXG4gXFx0ICovXFxuK1xcdHNwaW5sb2NrX3RcXHRcXHRwdHBfY2xvY2tfbG9jaztcXG4rXFx0dTY0XFx0XFx0XFx0dHN0YW1wX2N5Y2xlcztcXG4gXFx0c3RydWN0IGN5Y2xlY291bnRlclxcdHRzdGFtcF9jYztcXG4gXFx0c3RydWN0IHRpbWVjb3VudGVyXFx0dHN0YW1wX3RjO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0b3ZlcmZsb3dfd29yaztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXFxuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcXCJod3RzdGFtcC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVxcdTAwM2VjYikpXFxuIFxcbkBAIC0yNDUsNiArMjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcXG4gXFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cXHUwMDNlc2VxdWVuY2VfaWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9oZWFkZXIgKmhkcjtcXG4rXFxuK1xcdCpucyA9IDA7XFxuK1xcbitcXHQvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyXFxuK1xcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxcbitcXHQgKiBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIGF0IHdoaWNoIHRoZSBzd2l0Y2hcXG4rXFx0ICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLlxcbitcXHQgKi9cXG4rXFx0aWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EIFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IDQpIHtcXG4rXFx0XFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7XFxuK1xcdFxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDQpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFxcdTAwM2M9IHNpemVvZigqaGRyKSkge1xcbitcXHRcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xcbitcXHRcXHRpZiAoIWhkcilcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgYXJyX3RzX21vZGUpO1xcbitcXHRcXHRtZW1zZXQoKHU4ICopaGRyICsgYXJyX3RzX21vZGUsIDAsIDQpO1xcbitcXHRcXHRza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXFxuKyAqIGlzIG5lZWRlZCwgc28gdGhpcyBydW5zIGlubGluZSBvbiB0aGUgcmVjZWl2ZSBwYXRoIHJhdGhlciB0aGFuIGJlaW5nIGhhbmRlZFxcbisgKiB0byB0aGUgUFRQIHdvcmtlci5cXG4rICovXFxuK3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xcbitcXHR1NjQgbnM7XFxuK1xcbitcXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlLCBza2IsIFxcdTAwMjZucykpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4rXFxuK1xcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XFxuK1xcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcXG4rXFx0c2h3dC1cXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcXG5AQCAtMjg5LDkgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdGlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSBcXHUwMDI2XFx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XFxuIFxcdFxcdFxcdG5zID0gdGltZWhpIFxcdTAwM2NcXHUwMDNjIDE2IHwgdGltZWxvO1xcbiBcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdFxcdFxcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4gXFx0XFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4gXFx0XFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbiBcXHRcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG5AQCAtMzA4LDcgKzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFxuIFxcdHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXG4gXFx0aWYgKHNrYilcXG4gXFx0XFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuQEAgLTMxOSw5ICszNzQsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxcbiB7XFxuLVxcdHJldHVybiAoaGRyLVxcdTAwM2V0c210IFxcdTAwMjYgMHhmKSA9PSAzO1xcbitcXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuQEAgLTM0Myw3ICs0MDUsMTMgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gKi9cXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGlzX3BkZWxheV9tc2coaGRyKSlcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZTIsIHNrYik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSwgc2tiKTtcXG5AQCAtNDA5LDkgKzQ3Nyw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXG4gXFx0bWVtc2V0KFxcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XFxuIFxcdHRpbWVfcmF3ID0gKCh1MzIpZGVwYXJ0dXJlX2Jsb2NrWzJdIFxcdTAwM2NcXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcXG4tXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcXG4tXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTtcXG4gXFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XFxuIFxcbiBcXHRkZXZfZGJnKGNoaXAtXFx1MDAzZWRldixcXG5AQCAtNDU0LDcgKzUyMCw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFxcdTAwMjZwcy1cXHUwMDNlc3RhdGUpKVxcbiBcXHRcXHRcXHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcXG4gXFxuLVxcdFxcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcXG4rXFx0XFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xcbitcXHRcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKVxcbitcXHRcXHRcXHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xcbkBAIC01MjMsMTQgKzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01ODQsMTEgKzY3NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cXG4tXFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbi1cXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuIFxcbiBcXHQvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzXFxuIFxcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbkBAIC02OCw2ICs2OCwyMCBAQFxcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cXHRcXHQweDAwMDJcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXFx0XFx0MHgwMDAxXFxuIFxcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXFxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcXG4rICogZnJhbWVzLlxcbisgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xcbisgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxcbisgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXFxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcXHRcXHQweDAxXFxuK1xcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcXHQweDAzXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xcbmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xcbkBAIC0yMzEsMTUgKzIzMSwzNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfdGFpX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp1Z2x5KVxcbiBcXG4gXFx0LyogV2Ugb25seSBoYXZlIG9uZSB0aW1lc3RhbXBpbmcgY2hhbm5lbC4gKi9cXG4gXFx0ZXYuaW5kZXggPSAwO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuLVxcdGV2LnRpbWVzdGFtcCA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XFxuLVxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbitcXHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcXG4gXFxuIFxcdHB0cF9jbG9ja19ldmVudChjaGlwLVxcdTAwM2VwdHBfY2xvY2ssIFxcdTAwMjZldik7XFxuIG91dDpcXG4gXFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZjaGlwLVxcdTAwM2V0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpO1xcbiB9XFxuIFxcbisvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXFxuKyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcXG4rICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXFxuKyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cXG4rICovXFxuK3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcHRwX29wcztcXG4rXFxuK1xcdGlmIChwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKVxcbitcXHRcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cXHUwMDNlY2xvY2tfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjKTtcXG4rfVxcbitcXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXFxuK3tcXG4rXFx0dTY0IG5zO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgY3ljbGVzKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuK1xcdHJldHVybiBucztcXG4rfVxcbitcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xcbkBAIC0yNTgsOSArMjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXFxuIFxcdGRpZmYgPSBkaXZfdTY0KGFkaiwgY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19tdWx0X2RlbSk7XFxuIFxcbiBcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuIFxcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFx0dGltZWNvdW50ZXJfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjKTtcXG4gXFx0Y2hpcC1cXHUwMDNldHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICsgZGlmZjtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG5AQCAtMjcxLDggKzI5NiwxNiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiB7XFxuIFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XFxuIFxcbitcXHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXFxuK1xcdCAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5XFxuK1xcdCAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC5cXG4rXFx0ICovXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHR0aW1lY291bnRlcl9hZGp0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTI4NSw3ICszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuIFxcdHU2NCBucztcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFx0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHRucyA9IHRpbWVjb3VudGVyX3JlYWQoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90Yyk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4gXFxuIFxcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbkBAIC0zMDIsNyArMzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbiBcXHRucyA9IHRpbWVzcGVjNjRfdG9fbnModHMpO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdHRpbWVjb3VudGVyX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF9jYywgbnMpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDQ0LDE0ICs0ODcsMTIgQEAgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzIG12ODhlNjM5MF9wdHBfb3BzID0ge1xcbiBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXFxuIH07XFxuIFxcbisvKiBSZXR1cm4gdGhlIHZhbHVlIG1vc3QgcmVjZW50bHkgZmV0Y2hlZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKClcXG4rICogcmF0aGVyIHRoYW4gcmVhZGluZyB0aGUgaGFyZHdhcmUgb3ZlciBNRElPLlxcbisgKi9cXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXFxuIHtcXG4tXFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XFxuLVxcbi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKVxcbi1cXHRcXHRyZXR1cm4gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKGNjKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXFx1MDAzZXRzdGFtcF9jeWNsZXM7XFxuIH1cXG4gXFxuIC8qIFdpdGggYSAyNTBNSHogaW5wdXQgY2xvY2ssIHRoZSAzMi1iaXQgdGltZXN0YW1wIGNvdW50ZXIgb3ZlcmZsb3dzIGluIH4xNy4yXFxuQEAgLTQ4Niw2ICs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2MubXVsdFxcdD0gY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19tdWx0O1xcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2Muc2hpZnRcXHQ9IGNoaXAtXFx1MDAzZWNjX2NvZWZmcy1cXHUwMDNlY2Nfc2hpZnQ7XFxuIFxcbitcXHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cXG4rXFx0ICogVGhlIGNhbGxlciBob2xkcyByZWdfbG9jaywgYW5kIG5vdGhpbmcgY2FuIHJlYWNoIHRoZSBQVFAgY2xvY2tcXG4rXFx0ICogdW50aWwgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkgYmVsb3csIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4gXFx0dGltZWNvdW50ZXJfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjLFxcbiBcXHRcXHRcXHQga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSkpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmhcXG5pbmRleCA5NWJkZGRiMGJmMzlmOC4uNDQ3MThlMTIwZGUyMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmhcXG5AQCAtNjgsNiArNjgsNyBAQFxcbiBcXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcXG4gdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpO1xcbiBcXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCAgICAgIHB0cF9jbG9ja19pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NDo1MS44ODUwNzkyNDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjU0MjY0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM3N2RlZmVlNGUzODBjNzlhMTAzY2Y0NmM0ZDZmZmEwM2E2YTU1ZDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAwNTo1NDo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuQEAgLTI4LDYgKzI4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbkBAIC02MzcwLDYgKzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbitcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFxuIFx0W01WODhFNjM1MF0gPSB7XG5AQCAtNjQ0Nyw2ICs2NDQ5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcbiBcdFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcbiBcdFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcbiBcdFx0Lm9wcyA9IFx1MDAyNm12ODhlNjM1Ml9vcHMsXG4rXHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuQEAgLTY2MzUsNiArNjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGNoaXAtXHUwMDNlZGV2ID0gZGV2O1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXJlZ19sb2NrKTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2VtZGlvcyk7XG4gXHRpZHJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXBvbGljaWVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoaXAtXHUwMDNlbXN0cyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmRkNTJkZTcxMzYwYjkwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5AQCAtMTgwLDYgKzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xuIFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXG4gXHQgKi9cbiBcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcbitcbitcdC8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpOyBzZWUgdGhlIEFyclRTTW9kZSBlbmNvZGluZyBpblxuK1x0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxuK1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbitcdCAqIGFzIGEgdHJhaWxlciBvciBvdmVyd3JpdHRlbiBhdCB0aGF0IGJ5dGUgb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZVxuK1x0ICogUFRQIGNvbW1vbiBoZWFkZXIuXG4rXHQgKi9cbitcdHVuc2lnbmVkIGludCBhcnJfdHNfbW9kZTtcbiB9O1xuIFxuIHN0cnVjdCBtdjg4ZTZ4eHhfYXR1X2VudHJ5IHtcbkBAIC00MTksOSArNDI3LDEyIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCB7XG4gXHQvKiBHUElPIHJlc291cmNlcyAqL1xuIFx0dTggZ3Bpb19kYXRhWzJdO1xuIFxuLVx0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuXG4tXHQgKiByZWdfbG9jayBtdXN0IGJlIGhlbGQgZm9yIGFueSBvcGVyYXRpb24gdGhhdCByZWFkKClzLlxuK1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4rXHQgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlXG4rXHQgKiByZXN1bHQgbW9zdCByZWNlbnRseSByZXR1cm5lZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKCkuXG4gXHQgKi9cbitcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4rXHR1NjRcdFx0XHR0c3RhbXBfY3ljbGVzO1xuIFx0c3RydWN0IGN5Y2xlY291bnRlclx0dHN0YW1wX2NjO1xuIFx0c3RydWN0IHRpbWVjb3VudGVyXHR0c3RhbXBfdGM7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrXHRvdmVyZmxvd193b3JrO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJod3RzdGFtcC5oXCJcbiAjaW5jbHVkZSBcInB0cC5oXCJcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVx1MDAzZWNiKSlcbiBcbkBAIC0yNDUsNiArMjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4rXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucylcbit7XG4rXHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuK1xuK1x0Km5zID0gMDtcbitcbitcdC8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXJcbitcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuK1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4rXHQgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuXG4rXHQgKi9cbitcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbitcdFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuK1x0XHRpZiAoIWhkcilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcbitcdFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcbitcdFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXG4rICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4rICogdG8gdGhlIFBUUCB3b3JrZXIuXG4rICovXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuK1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuK1x0dTY0IG5zO1xuK1xuK1x0aWYgKCFwYXJzZV9lbWJlZGRlZF90cyhjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUsIHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4rXG4rXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuK1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuK1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHQgICAgICAgc3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyxcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcbkBAIC0yODksOSArMzQ3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0aWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpIFx1MDAyNlx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XG4gXHRcdFx0bnMgPSB0aW1laGkgXHUwMDNjXHUwMDNjIDE2IHwgdGltZWxvO1xuIFxuLVx0XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdFx0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4tXHRcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4rXHRcdFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpO1xuIFx0XHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4gXHRcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuIFx0XHRcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG5AQCAtMzA4LDcgKzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXG4gXHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG4tXG4gXHRpZiAoc2tiKVxuIFx0XHRtdjg4ZTZ4eHhfZ2V0X3J4dHMoY2hpcCwgcHMsIHNrYiwgcHRwX29wcy1cdTAwM2VhcnIwX3N0c19yZWcsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG5AQCAtMzE5LDkgKzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuIHtcbi1cdHJldHVybiAoaGRyLVx1MDAzZXRzbXQgXHUwMDI2IDB4ZikgPT0gMztcbitcdHN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkge1xuK1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuK1x0XHRmYWxsdGhyb3VnaDtcbitcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFU1A6XG4rXHRcdHJldHVybiB0cnVlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgKzQwNSwxMyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbitcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gKi9cbitcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0bXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0aWYgKGlzX3BkZWxheV9tc2coaGRyKSlcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyLCBza2IpO1xuIFx0ZWxzZVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSwgc2tiKTtcbkBAIC00MDksOSArNDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXG4gXHRtZW1zZXQoXHUwMDI2c2hod3RzdGFtcHMsIDAsIHNpemVvZihzaGh3dHN0YW1wcykpO1xuIFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXHUwMDNjXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcbi1cdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xuIFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4gXG4gXHRkZXZfZGJnKGNoaXAtXHUwMDNlZGV2LFxuQEAgLTQ1NCw3ICs1MjAsOSBAQCBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKVxuIFx0XHRpZiAodGVzdF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX1RYX0lOX1BST0dSRVNTLCBcdTAwMjZwcy1cdTAwM2VzdGF0ZSkpXG4gXHRcdFx0cmVzdGFydCB8PSBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXG4tXHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbitcdFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xuK1x0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSlcbitcdFx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcbkBAIC01MjMsMTQgKzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuK1x0XHRcdFx0XHQgICAgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuK1x0XHRcdFx0ICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICs2NzUsMTQgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqL1xuLVx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxuLVx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4rXHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuK1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4rXHRcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbitcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHxcbitcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICs2OCwyMCBAQFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTlx0XHQweDAwMDJcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU5cdFx0MHgwMDAxXG4gXG4rLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZVxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbisgKiBmcmFtZXMuXG4rICogICAweDAwICAgICAgICBmcmFtZSBtb2RpZmljYXRpb24gZGlzYWJsZWQgKHRpbWUgc3RhbXAgcmVhZCBmcm9tIHJlZ2lzdGVycylcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4rICogICAgICAgICAgICAgICBncm93aW5nIHRoZSBmcmFtZSBieSBmb3VyIGJ5dGVzXG4rICogICAweDA0Li4weEVGICBvdmVyd3JpdGUgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGluIHBsYWNlLCB0aGF0IG1hbnkgYnl0ZXMgcGFzdFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuKyAqICAgICAgICAgICAgICAgKG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpIHRhcmdldHMgdGhlIHJlc2VydmVkXG4rICogICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgaGVhZGVyKVxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbisgKi9cbisjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EXHRcdDB4MDFcbitcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSlcbiBcbiBcdC8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovXG4gXHRldi5pbmRleCA9IDA7XG4tXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4tXHRldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgcmF3X3RzKTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0ZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7XG4gXG4gXHRwdHBfY2xvY2tfZXZlbnQoY2hpcC1cdTAwM2VwdHBfY2xvY2ssIFx1MDAyNmV2KTtcbiBvdXQ6XG4gXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2Y2hpcC1cdTAwM2V0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpO1xuIH1cbiBcbisvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4rICogcmVhZCBjYW5ub3QgYWNxdWlyZSB0aGUgcmVnaXN0ZXIgbG9jayB3aGlsc3QgaG9sZGluZyBwdHBfY2xvY2tfbG9ja1xuKyAqIGJlY2F1c2UgTURJTyByZWFkcyBjYW4gc2xlZXAuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHJlZ19sb2NrLCB3aGljaFxuKyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbisgKi9cbitzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4rXG4rXHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuK1x0XHRjaGlwLVx1MDAzZXRzdGFtcF9jeWNsZXMgPSBwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MpO1xuK31cbitcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcylcbit7XG4rXHR1NjQgbnM7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4rXHRyZXR1cm4gbnM7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbkBAIC0yNTgsOSArMjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjKTtcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICsgZGlmZjtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG5AQCAtMjcxLDggKzI5NiwxNiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuIHtcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XG4gXG4rXHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4rXHQgKiB0aGlzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMsIHdoaWNoIGRyb3AgaXQgb25seVxuK1x0ICogYWZ0ZXIgdGhlaXIgaGFyZHdhcmUgcmVhZCBoYXMgY29tcGxldGVkLlxuK1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9hZGp0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBkZWx0YSk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbitcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMjg1LDcgKzMxOCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfZ2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdHU2NCBucztcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRucyA9IHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xuQEAgLTMwMiw3ICszNDAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4gXHRucyA9IHRpbWVzcGVjNjRfdG9fbnModHMpO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuK1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjLCBucyk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbitcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNDQ0LDE0ICs0ODcsMTIgQEAgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzIG12ODhlNjM5MF9wdHBfb3BzID0ge1xuIFx0XHQoMSBcdTAwM2NcdTAwM2MgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLFxuIH07XG4gXG4rLyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4rICogcmF0aGVyIHRoYW4gcmVhZGluZyB0aGUgaGFyZHdhcmUgb3ZlciBNRElPLlxuKyAqL1xuIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKVxuIHtcbi1cdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpO1xuLVxuLVx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuLVx0XHRyZXR1cm4gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQoY2MpO1xuLVxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiArNTI3LDEyIEBAIGludCBtdjg4ZTZ4eHhfcHRwX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLm11bHRcdD0gY2hpcC1cdTAwM2VjY19jb2VmZnMtXHUwMDNlY2NfbXVsdDtcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLnNoaWZ0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX3NoaWZ0O1xuIFxuK1x0LyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuXG4rXHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuK1x0ICogdW50aWwgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkgYmVsb3csIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkIGhlcmUuXG4rXHQgKi9cbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4gXHR0aW1lY291bnRlcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF9jYyxcbiBcdFx0XHQga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSkpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG5pbmRleCA5NWJkZGRiMGJmMzlmOC4uNDQ3MThlMTIwZGUyMGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG5AQCAtNjgsNiArNjgsNyBAQFxuIFxuIGludCBtdjg4ZTZ4eHhfcHRwX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4gdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU0OjUxLjg4NTA4MDY0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2Mzg3MDI4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IG12ODhlNnh4eCBQVFAgVGltZXN0YW1waW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdjg4ZTZ4eHhgIERTQSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgYW5kIGhhcmR3YXJlIHRpbWVzdGFtcGluZy4gIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyAoYGFycl90c19tb2RlYCksIHdoaWNoIHNvdW5kcyBwcm9taXNpbmcgZnJvbSBhIHBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLiAgSXQgbG9va3MgbGlrZSB0aGV5IGFyZSByZWFkaW5nIHRpbWVzdGFtcHMgZGlyZWN0bHkgZnJvbSB0aGUgcGFja2V0IHBheWxvYWQvdHJhaWxlciB0byBieXBhc3Mgc3dpdGNoIHJlZ2lzdGVyIHJlYWRzLCB3aGljaCBzaG91bGQgYmUgZmFzdGVyLCBhdm9pZGluZyB0aG9zZSBzbG93IE1ESU8gYWNjZXNzZXMsIHdoaWNoIGlzIGdvb2QuICBJIHNlZSB0aGUgY29kZSB0b3VjaGVzIHNldmVyYWwgY29yZSBmaWxlczogYGNoaXAuY2AsIGBjaGlwLmhgLCBgaHd0c3RhbXAuY2AsIGBod3RzdGFtcC5oYCwgYW5kIGBwdHAuY2AsIGBwdHAuaGAuIFRoZXkndmUgYWxzbyBpbXBsZW1lbnRlZCBhIGBwdHBfY2xvY2tfbG9ja2Agc3BpbmxvY2sgZm9yIHByb3RlY3RpbmcgdGltZXN0YW1waW5nIGRhdGEsIHdoaWNoIGlzIGFwcHJvcHJpYXRlLiBUaGlzIGlzIGNoYW5naW5nIGZ1bmRhbWVudGFsIHBhcnNpbmcgYW5kIHRpbWVzdGFtcGluZyBsb2dpYyB3aXRoaW4gdGhlIGRyaXZlcjsgZGVmaW5pdGVseSBhIHBvdGVudGlhbCBhcmVhIGZvciBidWdzLlxuXG5UaGUgY29yZSBvZiB0aGlzIGlzIGluIGBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcGAgYW5kIGBwYXJzZV9lbWJlZGRlZF90c2AuIFRoZSBsYXR0ZXIsIGluIHBhcnRpY3VsYXIsIGxvb2tzIGludGVyZXN0aW5nLCBhcyBpdCdzIGhhbmRsaW5nIHBhY2tldCBkYXRhLiBJIHNlZSB0aGV5IGhhdmUgYSBibG9jayBvZiBjb2RlIHRoZXJlIHRoYXQgbW9kaWZpZXMgdGhlIGBza2JgIHdoaWNoIGxvb2tzIGxpa2U6XG5cbmBgYGNcblx0aWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlbGVuIFx1MDAzZT0gNCkge1xuXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cblx0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTtcblx0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGVsc2UgaWYgKGFycl90c19tb2RlICsgNCBcdTAwM2M9IHNpemVvZigqaGRyKSkge1xuXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cblx0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuXHRcdGlmICghaGRyKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXG5cdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgYXJyX3RzX21vZGUpO1xuXHRcdG1lbXNldCgodTggKiloZHIgKyBhcnJfdHNfbW9kZSwgMCwgNCk7XG5cdFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG5cdH1cbmBgYFxuXG5UaGlzIGlzIGRlZmluaXRlbHkgcGFja2V0IHBhcnNpbmcgbG9naWMuIEl0IG1vZGlmaWVzIHRoZSBgc2tiYC4gSWYgdGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBpbmplY3RlZCB3aXRoIGNyYWZ0ZWQgcGFja2V0cywgdGhpcyBpcyBwcmltZSBmdXp6ZXIgdGVycml0b3J5ISBNeSBjb25jZXJuIGlzIHRoYXQsIGFzIGEgRFNBIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoLCBpdCdzIHR5cGljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUgYW5kIGFuIE1ESU8gYnVzLiBDYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFN5emthbGxlciB0eXBpY2FsbHkgc3RydWdnbGVzIHdpdGggdGhpcy4gRFNBIGRyaXZlcnMgYXJlIG9mdGVuIHRyaWNreSBiZWNhdXNlIHRoZXkgbmVlZCBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwLiBTb21ldGltZXMgbW9jayBkcml2ZXJzIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IHdvcmssIGJ1dCBpdCdzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGNhc2UuXG5cblRoZSBjb2RlIGlzIHJlYWNoZWQgdGhyb3VnaCBgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXBgLCB3aGljaCBpcyB0aGUgYHBvcnRfcnh0c3RhbXBgIGNhbGxiYWNrIGZvciB0aGUgRFNBIHN3aXRjaCwgdHJpZ2dlcmVkIGJ5IHRoZSBuZXR3b3JrIHN0YWNrLiAgU28sIGlmIHdlIGNhbiBpbnN0YW50aWF0ZSBhIERTQSBzd2l0Y2ggc29tZWhvdywgd2UgaGF2ZSBhIGNoYW5jZS4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciBsb2FkZWQgYW5kIHByb2JlZC4gSXQgdXNlcyBhbiBNRElPIGJ1cywgYW5kIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gaGVscCB0aGVyZSB0aHJvdWdoIGl0cyBJMkMvTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcywgYnV0IGl0J3Mgbm90IHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBwYXRoLiBJIGRvbid0IHNlZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTWFydmVsbCBzd2l0Y2hlcy5cblxuQnV0LCBnaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRvIGFzc3VtZSBpdCAqaXMqIHJlYWNoYWJsZSBpZiBpdCdzIGNvcmUgZHJpdmVyIGxvZ2ljIHBhcnNpbmcgcGFja2V0cywgYW5kIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIG5ldHdvcmsgZHJpdmVyIHRoYXQgbW9kaWZpZXMgc2tiLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz10cnVlYC4gRXZlbiBpZiBpdCdzIGRpZmZpY3VsdCwgbGV0J3MgYXNzdW1lIHNvbWVvbmUgY291bGQgd3JpdGUgYSBtb2NrIG9yIHVzZSBkZXZpY2UgdHJlZS4gIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgY2FuIGJlIGxvYWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4NCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NTowOC4yNzIxMTAxMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MDcxODU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMy0tLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbD0xOT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC05NC0gICAgICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw6OTU6ICAgICAgICBjb25zdDogbWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtOTYtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sPTEwOT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMjQwLSAgICAgICAgICAgIG1kaW8tZXh0ZXJuYWwge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw6MjQxOiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMjQyLSAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sPTEyPWRlc2NyaXB0aW9uOiB8K1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWwtMTgtICBoYXZpbmcgYSBkZXZpY2UgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGV2aWNlLiBCdXQgaW4gb3JkZXIgdG8gdXNlIGl0IHdpdGhcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwsbXZ1c2IueWFtbDoxOTogIHRoZSBtdjg4ZTZ4eHggZHJpdmVyLCB5b3UgbmVlZCBhIGRldmljZSB0cmVlIG5vZGUgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIHN3aXRjaFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sLTIwLSAgZGVmaW5pdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2luZGV4LnJzdD03Nz1wYXJhbWV0ZXJzLCBpbmZvIHZlcnNpb25zLCBhbmQgb3RoZXIgZmVhdHVyZXMgaXQgc3VwcG9ydHMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3QtOTUtICAgbWx4c3dcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3Q6OTY6ICAgbXY4OGU2eHh4XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0LTk3LSAgIG5ldGRldnNpbVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC0zLT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0OjQ6bXY4OGU2eHh4IGRldmxpbmsgc3VwcG9ydFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtNS09PT09PT09PT09PT09PT09PT09PT09PT09XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC02LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6NzpUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2bGluayBmZWF0dXJlcyBpbXBsZW1lbnRlZCBieSB0aGUgYGBtdjg4ZTZ4eHhgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtOC1kZXZpY2UgZHJpdmVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdD0xMD1QYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0LTEyLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6MTM6VGhlIGBgbXY4OGU2eHh4YGAgZHJpdmVyIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBkcml2ZXItc3BlY2lmaWMgcGFyYW1ldGVycy5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0LTE0LVxcbi0tXFxuTUFJTlRBSU5FUlM9MTU1OTU9RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNjA2MC55YW1sXFxuTUFJTlRBSU5FUlM6MTU1OTY6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sXFxuTUFJTlRBSU5FUlM6MTU1OTc6RjpcXHREb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0XFxuTUFJTlRBSU5FUlM6MTU1OTg6RjpcXHRkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1xcbk1BSU5UQUlORVJTOjE1NTk5OkY6XFx0aW5jbHVkZS9saW51eC9kc2EvbXY4OGU2eHh4LmhcXG5NQUlOVEFJTkVSUzoxNTYwMDpGOlxcdGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcbk1BSU5UQUlORVJTLTE1NjAxLVxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzPTEyNz1cXHRcXHRtZGlvLWV4dGVybmFsIHtcXG5hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODEtbmV0Z2Vhci1nczExMGVteC5kdHM6MTI4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzLTEyOS1cXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzPTE3MD1cXHRcXHRcXHRtZGlvLWV4dGVybmFsIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvdmYvdmY2MTAtemlpLXNzbWItZHR1LmR0czoxNzE6XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYXJ2ZWxsLG12ODhlNnh4eC1tZGlvLWV4dGVybmFsXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvdmYvdmY2MTAtemlpLXNzbWItZHR1LmR0cy0xNzItXFx0XFx0XFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHM9MjkyPVxcdFxcdFxcdHN3aXRjaDBwaHk0OiBldGhlcm5ldC1waHlANCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHMtMzAyLVxcdFxcdCAqIG1kaW8tZXh0ZXJuYWwge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0czozMDM6XFx0XFx0ICpcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cy0zMDQtXFx0XFx0ICpcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG12ODhlNnh4eC9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBteGw4NjJ4eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU1OjEwLjEzMjgzNDk3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Mzg2MDkxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG12ODhlNnh4eGAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyLCBhIERTQSBkcml2ZXIsIGFuZCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzdXJlLCBtYXliZSB3aXRoIGEgZHVtbXkgTURJTyBidXMgYW5kIGEgZGV2aWNlIHRyZWUgb3ZlcmxheSwgaXQncyBwb3NzaWJsZS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFN5emthbGxlciwgd2hpY2ggSSdtIHJlbHlpbmcgb24sIGRvZXNuJ3QgaGF2ZSBhIG1vY2sgZm9yIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseS4gVGhlIGluc3RydWN0aW9ucyBJIGhhdmUgc2F5IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgYXJlIHRvIGJlIGlnbm9yZWQsIHBhcnRpY3VsYXJseSB0aG9zZSB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cbklzIHRoaXMgb25lIG9mIHRob3NlIHNpdHVhdGlvbnM/IEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlJ3MgYW55IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzLiBObyBvYnZpb3VzIGNhbmRpZGF0ZSBqdW1wcyBvdXQuIEkgdHJpZWQgdG8gdGhpbmsgb2Ygd2F5cyB0byB0cmlnZ2VyIGl0IHVzaW5nIFN5emthbGxlcidzIGV4aXN0aW5nIGZlYXR1cmVzLCBsaWtlIGBzeXpfZ2VuZXRsaW5rYCwgYnV0IHRoYXQgd29uJ3Qgd29yayBmb3IgYSBoYXJkd2FyZSBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIE1ESU8gc29mdHdhcmUgZW11bGF0aW9uLiBEb2VzIHRoZSBrZXJuZWwgaGF2ZSBhbnl0aGluZyBsaWtlIHRoYXQsIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBgbWRpby1ncGlvYD8gQWgsIEkgdGhvdWdodCB0aGVyZSB3YXMgYG1kaW8tbW9ja3VwYCwgYnV0IG5vcGUsIGl0IGRvZXNuJ3QgZXhpc3QuIFRoZXJlJ3MgYGRzYS1sb29wYCwgd2hpY2ggaXMgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCB0aGF0J3Mgbm90IHRoZSBzYW1lIHRoaW5nOyBpdCB0ZXN0cyB0aGUgRFNBIGNvcmUsIGJ1dCBub3QgYG12ODhlNnh4eGAgaXRzZWxmLlxuXG5TbywgU3l6a2FsbGVyIGhhcyBgc3l6X2kyY2AgYW5kIGBzeXpfdXNiYCwgYnV0IG5vIGBzeXpfbWRpb2AuIExvb2tzIGxpa2UgSSBjYW4ndCB1c2UgYGRzYS1sb29wYCB0byB0ZXN0IHRoZSBzcGVjaWZpY3Mgb2YgYG12ODhlNnh4eGAuIFRoYXQgY29uZmlybXMgaXQsIGBtdjg4ZTZ4eHhgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyBJIGFzayBteXNlbGYgYWdhaW4sIGlzIGl0IGltcG9zc2libGUgdG8gcmVhY2g/IElmIHRoZXJlJ3Mgbm8gd2F5IHRvIGVtdWxhdGUgb3Igc2ltdWxhdGUgdGhlIGhhcmR3YXJlLCB0aGVuIHllcywgaXQncyBpbXBvc3NpYmxlLlxuXG5JIHRoZW4gY29uc2lkZXJlZCBvdGhlciBvcHRpb25zLCBsaWtlIHVzaW5nIGBmYWtlZGV2YCBvciBjaGVja2luZyBpZiBpdCBjYW4gYmUgcHJvYmVkIHZpYSBJMkMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhpcyBkcml2ZXIgdXNlcyBNRElPIGZvciBwcm9iaW5nLCBzbyB0aGF0IHdvbid0IHdvcmsuIEhvd2V2ZXIsIGBtdjg4ZTZ4eHhgIGlzIG9mdGVuIHByb2JlZCB2aWEgU01JIChTZXJpYWwgTWFuYWdlbWVudCBJbnRlcmZhY2UpIHdoaWNoIGlzIG9mdGVuIG92ZXIgTURJTy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zLCBpcyB0aGVyZSBhbnkgb3RoZXIgcG9zc2libGUgd2F5IHRvIHByb2JlIGl0PyBMZXQgbWUgY2hlY2sgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGZpZ3VyZSB0aGlzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMzcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MTcuNjcxNDQ3NDY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjQwNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE1PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzE3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTc1MjU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdjg4ZTZ4eHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjY6XFx0LnByb2JlXFx0PSBtdjg4ZTZ4eHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyNy1cXHQucmVtb3ZlID0gbXY4OGU2eHh4X3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MTcuNzI3MDk0Mjk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMjgyMjAxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYG12ODhlNnh4eGAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWRpb19kcml2ZXJgIGFuZCBpbW1lZGlhdGVseSBJJ20gdGhpbmtpbmcsIFwiQ2FuIHdlIGV2ZW4gKnRvdWNoKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBJIGNhbiBnZW5lcmF0ZSBhIGRldmljZSBmcm9tIHVzZXJzcGFjZSwgYnV0IG5vIGx1Y2sgd2l0aCBgc3l6X21kaW9gIGluIHN5emthbGxlci4gSSdtIGdvaW5nIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3Q6IGBpMmNgLi4uIG5vcGUuIGBuZXRkZXZzaW1gLi4uIG5vdCBldmVuIGNsb3NlLiBgbWFjODAyMTFfaHdzaW1gLi4uIGFnYWluLCBuby4gSXQncyBsb29raW5nIGdyaW0uIFRoaXMgc2NyZWFtcyBoYXJkd2FyZSBkZXBlbmRlbmN5LlxuXG5UaGVuIHRoZSBicnV0YWwgcmVhbGl0eSBoaXRzOiB0aGlzIHJlcXVpcmVzIGEgcmVhbCBNRElPIGJ1cyAqYW5kKiBzcGVjaWZpYyBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZS4gRm9yZ2V0IGFib3V0IGl0LiBXYWl0LCB3aGF0IGFib3V0IGBkc2EtbG9vcGA/IE9oLCByaWdodCwgdGhhdCdzIGEgKmRpZmZlcmVudCogZHJpdmVyLCBgZHNhLWxvb3AuY2AuIFNvLCB0aGUgYG12ODhlNnh4eGAgZHJpdmVyIGlzIGxvb2tpbmcgY29tcGxldGVseSBvdXQgb2YgcmVhY2ggaW4gUUVNVS5cblxuT2theSwgbWF5YmUgdGhlcmUncyBhIHNsaW0gY2hhbmNlIHN5emthbGxlciBjb3VsZCBpbmplY3QgYSBkZXZpY2UgdHJlZSBub2RlLCBidXQgZXZlbiB0aGF0J3MgYSBsb25nIHNob3QuIFRoZSBNRElPIGJ1cyBkcml2ZXIgd291bGQgbmVlZCB0byBiZSBwcmVzZW50LCBzbyBJIGNvdWxkICptYXliZSogdXNlIGBtZGlvLWdwaW9gIG9yIGBtZGlvLWJpdGJhbmdgIHdpdGggbW9ja2VkIEdQSU9zPyBUaGF0J3MgZ3Jhc3BpbmcgYXQgc3RyYXdzIGFuZCBzeXprYWxsZXIgaXNuJ3Qgc2V0IHVwIGZvciB0aGF0IGxldmVsIG9mIHRyaWNrZXJ5LiBOb3QgaGFwcGVuaW5nLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBRRU1VIG1hY2hpbmUgb3B0aW9ucy4uLiBhbmQgc2VhcmNoIHRoZSBjb2RlLi4uIGBody9uZXQvYC4uLiBOYWgsIFFFTVUgaXNuJ3QgZW11bGF0aW5nIE1hcnZlbGwgRFNBIHN3aXRjaGVzLiBUaGUgcHJvbXB0IHNheXMgdGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIE9rYXksIEknbSBwcmV0dHkgc3VyZSBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQgbWUgcmVhZCB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIiBZZXAuXG5cbklzIHRoZXJlIGFueSBjaGFuY2U/IExldCdzIGNoZWNrIHRoZSB1c3VhbCBRRU1VIEFSTSBib2FyZHMuIGB2ZXhwcmVzc2AsIGB2aXJ0YCwgYHNhYnJlbGl0ZWAsIGByYXNwaWAsIGB4aWxpbnhgLCBgYXNwZWVkYC4gQXNwZWVkIG1hY2hpbmVzIG1pZ2h0IGhhdmUgKnNvbWUqIG5ldHdvcmsgc3R1ZmYsIGJ1dCB1c3VhbGx5IGp1c3QgdGhlIE1BQywgbm90IHRoZSBEU0Egc3dpdGNoLiBIaWdobHkgdW5saWtlbHkuXG5cbk9rYXksIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBod3RzdGFtcC5jYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzbid0IGFjY2Vzc2libGUgdmlhIGEgZGlmZmVyZW50IHBhdGguIE9oLCBgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXBgIGlzIG9ubHkgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wYCBpbiBgaHd0c3RhbXAuY2AsIHdoaWNoIGlzICpwYXJ0KiBvZiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLlxuXG5JJ20gY2hlY2tpbmcgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgbW9jayBkcml2ZXJzIGZvciBgbXY4OGU2eHh4YC4uLiBOb3BlLiBUaGlzIHRoaW5nIGlzIHN0cmljdGx5IGhhcmR3YXJlLWZvY3VzZWQsIHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gU01JL01ESU8gcmVnaXN0ZXJzIG9uIGEgcmVhbCBwaHlzaWNhbCBzd2l0Y2guXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoaXMgaXMgbm90IGZ1enphYmxlOyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MjcuOTU1MzE2OTA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ4NDc3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NToyOC4xMTA4MDg0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg1Njk0ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUgaW4gVGVzdGluZyBUb29scyoqXG5cbkhtbSwgbm8gb2J2aW91cyBjbHVlcyBpbiB0aGUgYHRvb2xzL3Rlc3RpbmcvYCBkaXJlY3RvcnkuIFRoYXQncyBhIGJpdCB1bmV4cGVjdGVkLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgZGVhZCBlbmQuIE9rYXksIGxldCdzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBhIG1vY2sgZm9yIGBtZGlvYCBleGlzdHMgc29tZXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gSXQncyBwb3NzaWJsZSB0aGUgdGVzdGluZyBoYXJuZXNzIGlzIHB1bGxpbmcgaXQgZnJvbSBhIGRpZmZlcmVudCBsb2NhdGlvbiwgb3IgbWF5YmUgaXQncyB1c2luZyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFwcHJvYWNoLiBMZXQgbWUgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHNlZSB3aGF0IEkgY2FuIHR1cm4gdXAuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRldmljZSBtb2RlbCBJIGFtIHdvcmtpbmcgd2l0aCBpcyBhIGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgd291bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTMyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MzEuMzk2NTA1MzY3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI2NjQ0NzM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MzMuNjIzMTYyOTk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDAzNTQzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gbXkgZG9tYWluIG9mIGV4cGVydGlzZTpcblxuKipJbnRyaWd1aW5nIFF1ZXJ5OiBUaGUgSW50ZXJzZWN0aW9uIG9mIERTQSBhbmQgTW9ja2luZyoqXG5cbkhtbSwgYGRzYS4qbW9ja2AuLi4gV2hhdCdzIHNwYXJraW5nIHRoaXMgdGhvdWdodD8gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIHBvdGVudGlhbCB1c2UgY2FzZSByZWxhdGluZyB0byBEYXRhIFN0cnVjdHVyZXMgYW5kIEFsZ29yaXRobXMgKERTQSkuIEl0IHNlZW1zIGxpa2UgdGhlIGluZGl2aWR1YWwgaXMgcG9uZGVyaW5nIHRoZSBpbnRlZ3JhdGlvbiBvZiBtb2NraW5nIHRlY2huaXF1ZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIERTQS4gUGVyaGFwcyBpdCdzIGEgcXVlc3Rpb24gb2YgaG93IHRvIGVmZmVjdGl2ZWx5ICp0ZXN0KiBEU0EgaW1wbGVtZW50YXRpb25zLCBvciBob3cgbW9ja2luZyBtaWdodCBmYWNpbGl0YXRlIGV4cGVyaW1lbnRhdGlvbiBhbmQgYW5hbHlzaXMgb2YgYWxnb3JpdGhtcyB1bmRlciBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuXG5NeSBpbml0aWFsIHJlYWN0aW9ucyBzdWdnZXN0IGEgZmV3IGtleSBhcmVhcyBvZiBwb3RlbnRpYWwgaW52ZXN0aWdhdGlvbjpcblxuKiAgICoqVGVzdC1Ecml2ZW4gRGV2ZWxvcG1lbnQgKFRERCkgYW5kIERTQToqKiBDb3VsZCB0aGlzIHJlZmVyIHRvIGVtcGxveWluZyBtb2NrIG9iamVjdHMgdG8gaXNvbGF0ZSBEU0EgY29tcG9uZW50cyBkdXJpbmcgdGVzdGluZywgYWxsb3dpbmcgZm9yIG1vcmUgZm9jdXNlZCB1bml0IHRlc3RzIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgcGVyaGFwcyB0byBtb2NrIHRoZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgb2YgdGhlIERTQSBjb2RlP1xuKiAgICoqQWxnb3JpdGhtaWMgQW5hbHlzaXMgYW5kIEJlbmNobWFya2luZzoqKiBQZXJoYXBzIHRoaXMgaW52b2x2ZXMgdXNpbmcgbW9ja3MgdG8gc2ltdWxhdGUgc3BlY2lmaWMgZGF0YSBkaXN0cmlidXRpb25zIG9yIGVkZ2UgY2FzZXMgZm9yIHBlcmZvcm1hbmNlIHRlc3Rpbmcgb2YgdmFyaW91cyBhbGdvcml0aG1zLiBJdCBjb3VsZCBhbGxvdyBmb3IgZWFzaWVyIGNvbXBhcmlzb24gb2YgcnVuIHRpbWVzIGFuZCBkYXRhIHNldHMuXG4qICAgKipBYnN0cmFjdGluZyBEYXRhIFNvdXJjZXM6KiogSXMgaXQgdGhlIGNvbnNpZGVyYXRpb24gb2YgY3JlYXRpbmcgYSBtb2NrIGRhdGEgc291cmNlIHRvIGZhY2lsaXRhdGUgYWxnb3JpdGhtIGRldmVsb3BtZW50IGluZGVwZW5kZW50IG9mIGEgcmVhbCBkYXRhIHNldD8gT3IgbWF5YmUgdG8gYWxsb3cgZm9yIHRoZSBjcmVhdGlvbiBvZiB1bml0IHRlc3RzIHRoYXQgZW5zdXJlIHRoZSBwcm9ncmFtIHJ1bnMgYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb25zLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBkYXRhYmFzZSBpcyBydW5uaW5nP1xuKiAgICoqQ29uY2VwdHVhbCBNb2RlbGluZzoqKiBJcyB0aGUgZm9jdXMgb24gYSBoaWdoZXIgbGV2ZWwgY29uY2VwdHVhbCBxdWVzdGlvbi4gUGVyaGFwcywgdGhlIHRob3VnaHQgaXMgYWJvdXQgdGhlIGNyZWF0aW9uIG9mIG1vZGVscyB0byB2aXN1YWxpemUgZGF0YSBzdHJ1Y3R1cmUgYW5kIGFsZ29yaXRobWljIGNvbmNlcHRzLiBDcmVhdGluZyBhIG1vY2sgbW9kZWwgY291bGQgbWFrZSB0aGUgY3JlYXRpb24gb2YgdGhlc2UgdmlzdWFsaXphdGlvbnMgZWFzaWVyLlxuXG5UaGUgbnVhbmNlIGhlcmUgaXMgZmFzY2luYXRpbmcsIGFzIHRoZSBjaG9pY2Ugb2YgXCJtb2NrXCIgc3VnZ2VzdHMgYSBkZXNpcmUgZm9yIGNvbnRyb2xsZWQgZW52aXJvbm1lbnRzIHRvIHN0dWR5IG9yIHZhbGlkYXRlIGFzcGVjdHMgb2YgRFNBLiBEZWZpbml0ZWx5IHNvbWV0aGluZyB0byBleHBsb3JlIGZ1cnRoZXIhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzUxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NTozNy41MjM1MjAyMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTEyMzE3NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYS4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU1OjM5LjczNDc2MDQxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA1OTkxMTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIGBkc2FfbG9vcGAgaW4gdGhlIENvbnRleHQgb2YgW0ltcGxpZWQgQ29udGV4dCAtIExldCdzIGFzc3VtZSBmb3IgZXhhbXBsZSwgXCJhIGNvbXBsZXggY3J5cHRvZ3JhcGhpYyBwcm90b2NvbFwiXSoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCB0aGlzIGFyY2hpdGVjdHVyZSwgdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBbUHJvdG9jb2wvQWxnb3JpdGhtIE5hbWVdLiBXZSd2ZSBhZGRyZXNzZWQgdGhlIGluaXRpYWwgc2V0dXAsIHdlJ3ZlIHJldmlld2VkIHRoZSBrZXkgZXhjaGFuZ2UsIGFuZCBub3cgd2UncmUgY29uc2lkZXJpbmcgdGhlIGFjdHVhbCBkYXRhIHNpZ25pbmcgcGhhc2UuLi4gYW5kIHRoZSBwaHJhc2UgKmRzYV9sb29wKiBwb3BzIGludG8gbXkgaGVhZC4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgY291bGQgYmUgdGhlIGx5bmNocGluLCBpdCBzZWVtcy5cblxuSXMgaXQgYSBjcml0aWNhbCBsb29wPyBEb2VzIGl0IGhhbmRsZSB0aGUgY3JpdGljYWwgb3BlcmF0aW9ucyBmb3IgZGlnaXRhbCBzaWduYXR1cmUgYWxnb3JpdGhtPyBBIGtleSBjb21wb25lbnQgaW4gdGhlIGRhdGEgc2lnbmluZyBjeWNsZS4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpdGVyYXRpbmcgdGhyb3VnaCBtZXNzYWdlcywgaGFuZGxpbmcga2V5IG1hdGVyaWFsLCBvciBnZW5lcmF0aW5nIHRoZSBzaWduYXR1cmVzP1xuXG5MZXQncyBxdWlja2x5IHJlY2FsbC4gV2hlcmUgZG9lcyBgZHNhX2xvb3BgIGZpdCB3aXRoaW4gdGhlIG92ZXJhbGwgZmxvdz8gV2hhdCBhcmUgaXRzIGlucHV0cywgb3V0cHV0cywgYW5kIGRlcGVuZGVuY2llcz8gSXMgdGhpcyB3aGVyZSB3ZSd2ZSBzZWVuIHZ1bG5lcmFiaWxpdGllcyBpbiBvdGhlciByZWxhdGVkIGltcGxlbWVudGF0aW9ucz8gSXQncyBiZWVuIGEgd2hpbGUsIGJ1dCBsZXQncyBzZWUgaG93IGBkc2FfbG9vcGAgaGFzIHBsYXllZCBhIHBhcnQgaW4gcG90ZW50aWFsIHNlY3VyaXR5IGNvbXByb21pc2VzLiBNYXliZSB0aGUgbG9vcCBpcyBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZGF0YSwgYXBwbHlpbmcgYSBoYXNoLCBvciBwZXJmb3JtaW5nIHRoZSBEU0EgbW9kdWxhciBleHBvbmVudGlhdGlvbi4gSXQncyBjcml0aWNhbCB0aGF0IHRoZSB2YXJpYWJsZXMgYXJlIGNvcnJlY3RseSBzaXplZCwgYW5kIG1lbW9yeSBpcyBoYW5kbGVkIGNhcmVmdWxseS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYnJ1c2ggdXAgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgYSBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS4gSXQncyB0aW1lIHRvIHJlLWV2YWx1YXRlIGl0IHdpdGhpbiB0aGlzIHByb3RvY29sLiBQZXJoYXBzIHRoaXMgaXMgd2hlcmUgd2UnbGwgZmluZCB2dWxuZXJhYmlsaXRpZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc3MCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NDMuNjQwNzU0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTEyMDc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdD0xNTk9YWxsIGF0dGFjaGVkIHN3aXRjaCBwb3J0cyBtdXN0IGJlIGRvd24gd2hpbGUgZG9pbmcgdGhpcykuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6MTYxOkl0IGlzIGRlc2lyYWJsZSB0aGF0IGFsbCB0YWdnaW5nIHByb3RvY29scyBhcmUgdGVzdGFibGUgd2l0aCB0aGUgYGBkc2FfbG9vcGBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2Mi1tb2NrdXAgZHJpdmVyLCB3aGljaCBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IG5ldHdvcmsgaW50ZXJmYWNlLiBUaGUgZ29hbCBpcyB0aGF0XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NDUuMzMxOTY4NTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIwNzM1MDg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEFuYWx5emluZyB0aGUgTWFydmVsbCBTd2l0Y2ggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYG12ODhlNnh4eGAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBtdjg4ZTZ4eHhgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCBzd2l0Y2hlcy4gVGhlIGBkc2FfbG9vcGAgZHJpdmVyIGlzIGludm9sdmVkLCBidXQgaXQncyBqdXN0IGEgbW9jayBkcml2ZXIgYW5kIGl0IGRvZXNuJ3QgdXRpbGl6ZSBgbXY4OGU2eHh4YC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlICpzdHJpY3RseSogd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBjb2RlIGl0c2VsZi5cblxuVGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0LCBpcyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIE1hcnZlbGwgc3dpdGNoZXMgaW4gUUVNVS4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgZG9lc24ndCBoYXZlIGEgbWVjaGFuaXNtIHRvIG1vY2sgdGhlIE1ESU8gYnVzIG9yIHRoZSBzcGVjaWZpYyBzd2l0Y2ggaGFyZHdhcmUgdGhpcyBkcml2ZXIgcmVsaWVzIG9uLiBJIGNhbid0IHRoaW5rIG9mIGFueSB3YXkgdG8gbWFrZSB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIHByb21wdCByZXF1aXJlbWVudHMganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gWWVzLCBpdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBhZmZlY3RzIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQW5kIHRoYXQncyBwcmVjaXNlbHkgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZTogaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbi4gVGhlIGxhY2sgb2YgZW11bGF0aW9uIGlzIHRoZSBjcml0aWNhbCBlbGVtZW50LlxuXG5UaGlzIHBhdGNoLCBpbiBwYXJ0aWN1bGFyLCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGFycml2YWwgdGltZSBzdGFtcHMgZm9yIFBUUCB3aXRoaW4gdGhlIE1hcnZlbGwgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgYWJzb2x1dGVseSByZXF1aXJlcyB0aGUgcHJlc2VuY2Ugb2YgYSAqcGh5c2ljYWwqIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFNvIGdpdmVuIHRoaXMgbGltaXRhdGlvbiwgSSdtIGNvbmZpZGVudCBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JJ2xsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgzMSwiT3V0cHV0VG9rZW5zIjoxMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NTEuNTM5MzIxMzU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwqk9h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 05:45:46 +0000 UTC FinishedAt: 2026-07-19 05:55:52 +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+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBtdjg4ZTZ4eHggRFNBIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB0byBzdXBwb3J0IGVtYmVkZGVkIGFycml2YWwgdGltZSBzdGFtcHMgZm9yIFBUUC4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgTWFydmVsbCBzd2l0Y2ggY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNzdkZWZlZTRlMzgwYzc5YTEwM2NmNDZjNGQ2ZmZhMDNhNmE1NWQ0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLjYyNGNkZjZjODBhNjcyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMjgsNiAmIzQzOzI4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5bGluay5oXHUwMDNlXG5AQCAtNjM3MCw2ICYjNDM7NjM3MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNDFfb3BzLFxuJiM0MztcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFxuIFx0W01WODhFNjM1MF0gPSB7XG5AQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNTJfb3BzLFxuJiM0MztcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFx0W01WODhFNjM2MV0gPSB7XG4gXHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXG5AQCAtNjYzNSw2ICYjNDM7NjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGNoaXAtXHUwMDNlZGV2ID0gZGV2O1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXJlZ19sb2NrKTtcbiYjNDM7XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MpO1xuIFx0aWRyX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2Vwb2xpY2llcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1zdHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5kZDUyZGU3MTM2MGI5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDE0IEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cbiYjNDM7XHQgKiBod3RzdGFtcC5oLiBaZXJvICh0aGUgZGVmYXVsdCkgbGVhdmVzIGFycml2YWwgdGltZSBzdGFtcHMgaW4gdGhlXG4mIzQzO1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbiYjNDM7XHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcbiYjNDM7XHQgKiBQVFAgY29tbW9uIGhlYWRlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgJiM0Mzs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcbiBcdC8qIEdQSU8gcmVzb3VyY2VzICovXG4gXHR1OCBncGlvX2RhdGFbMl07XG4gXG4tXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS5cbi1cdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXG4mIzQzO1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4mIzQzO1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuJiM0MztcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cbiBcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4mIzQzO1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43MTZjYmMyYTg2OTIyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtod3RzdGFtcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cHRwLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtMjQ1LDYgJiM0MzsyNDYsNjMgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKVxuIFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cdTAwM2VzZXF1ZW5jZV9pZCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuJiM0MztcbiYjNDM7XHQqbnMgPSAwO1xuJiM0MztcbiYjNDM7XHQvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyXG4mIzQzO1x0ICogKG5vdCBhbGwgc3dpdGNoZXMgc3VwcG9ydCB0aGlzKS4gQW55IG90aGVyIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlXG4mIzQzO1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4mIzQzO1x0ICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbiYjNDM7XHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTtcbiYjNDM7XHRcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9IGVsc2UgaWYgKGFycl90c19tb2RlICYjNDM7IDQgXHUwMDNjPSBzaXplb2YoKmhkcikpIHtcbiYjNDM7XHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuJiM0MztcdFx0aWYgKCFoZHIpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUpO1xuJiM0MztcdFx0bWVtc2V0KCh1OCAqKWhkciAmIzQzOyBhcnJfdHNfbW9kZSwgMCwgNCk7XG4mIzQzO1x0XHRza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIEFwcGx5IHRoZSBhcnJpdmFsIHRpbWUgdGhlIHN3aXRjaCBlbWJlZGRlZCBpbiB0aGUgZnJhbWUuIE5vIHJlZ2lzdGVyIGFjY2Vzc1xuJiM0MzsgKiBpcyBuZWVkZWQsIHNvIHRoaXMgcnVucyBpbmxpbmUgb24gdGhlIHJlY2VpdmUgcGF0aCByYXRoZXIgdGhhbiBiZWluZyBoYW5kZWRcbiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4mIzQzO1x0dTY0IG5zO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSwgc2tiLCBcdTAwMjZucykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcbiYjNDM7XG4mIzQzO1x0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcbiYjNDM7XHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XG4mIzQzO1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTI4OSw5ICYjNDM7MzQ3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0aWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpIFx1MDAyNlx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XG4gXHRcdFx0bnMgPSB0aW1laGkgXHUwMDNjXHUwMDNjIDE2IHwgdGltZWxvO1xuIFxuLVx0XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdFx0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4tXHRcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0XHRcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcbiBcdFx0XHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuIFx0XHRcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcbiBcdFx0XHRzaHd0LVx1MDAzZWh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xuQEAgLTMwOCw3ICYjNDM7MzY0LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcbiBcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbi1cbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSAmIzQzOzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4mIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiB7XG4tXHRyZXR1cm4gKGhkci1cdTAwM2V0c210IFx1MDAyNiAweGYpID09IDM7XG4mIzQzO1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4mIzQzO1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgJiM0Mzs0MDUsMTMgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xuIFxuLVx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXG4mIzQzO1x0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBjYW4gYmUgcmV0dXJuZWQgaW5saW5lLiAqL1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYik7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTQwOSw5ICYjNDM7NDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXG4gXHRtZW1zZXQoXHUwMDI2c2hod3RzdGFtcHMsIDAsIHNpemVvZihzaGh3dHN0YW1wcykpO1xuIFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXHUwMDNjXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcbi1cdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuJiM0MztcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTtcbiBcdHNoaHd0c3RhbXBzLmh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xuIFxuIFx0ZGV2X2RiZyhjaGlwLVx1MDAzZWRldixcbkBAIC00NTQsNyAmIzQzOzUyMCw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXG4gXHRcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKSlcbiBcdFx0XHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcbi1cdFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuJiM0MztcdFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xuJiM0MztcdFx0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xuQEAgLTUyMywxNCAmIzQzOzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMixcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUgXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICYjNDM7Njc1LDE0IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4tXHRpZiAoZXJyKVxuLVx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlKSB7XG4mIzQzO1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXG4mIzQzO1x0XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICYjNDM7NjgsMjAgQEBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLlxuJiM0MzsgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxuJiM0MzsgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4mIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xuJiM0MzsgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XG4mIzQzOyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxuJiM0MzsgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXG4mIzQzOyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcdFx0MHgwMVxuJiM0MztcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICYjNDM7MjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcbiBcbiBcdHB0cF9jbG9ja19ldmVudChjaGlwLVx1MDAzZXB0cF9jbG9jaywgXHUwMDI2ZXYpO1xuIG91dDpcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XG4gfVxuIFxuJiM0MzsvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4mIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbiYjNDM7ICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXG4mIzQzOyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcbiYjNDM7XHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuJiM0MztcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbnM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiYjNDM7XHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuIFx0Y2hpcC1cdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgJiM0MzsgZGlmZjtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbiBcbiYjNDM7XHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4mIzQzO1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbiYjNDM7XHQgKiBhZnRlciB0aGVpciBoYXJkd2FyZSByZWFkIGhhcyBjb21wbGV0ZWQuXG4mIzQzO1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2FkanRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICYjNDM7MzE4LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0dTY0IG5zO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4mIzQzO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyAmIzQzOzM0MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsIG5zKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCAmIzQzOzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XG4gXHRcdCgxIFx1MDAzY1x1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXG4gfTtcbiBcbiYjNDM7LyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4mIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbiYjNDM7ICovXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXG4ge1xuLVx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XG4tXG4tXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQpXG4tXHRcdHJldHVybiBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZChjYyk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiAmIzQzOzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbiYjNDM7XHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cbiYjNDM7XHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuJiM0MztcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAXG4gXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNzdkZWZlZTRlMzgwYzc5YTEwM2NmNDZjNGQ2ZmZhMDNhNmE1NWQ0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTI4LDYgJiM0MzsyOCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmV0ZGV2aWNlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BoeWxpbmsuaCZndDsKQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNDFfb3BzLAomIzQzOwkJLmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksCiAJfSwKIAogCVtNVjg4RTYzNTBdID0gewpAQCAtNjQ0Nyw2ICYjNDM7NjQ0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7CiAJCS5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsCiAJCS5wdHBfc3VwcG9ydCA9IHRydWUsCiAJCS5vcHMgPSAmYW1wO212ODhlNjM1Ml9vcHMsCiYjNDM7CQkuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSwKIAl9LAogCVtNVjg4RTYzNjFdID0gewogCQkucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLApAQCAtNjYzNSw2ICYjNDM7NjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldikKIAljaGlwLSZndDtkZXYgPSBkZXY7CiAKIAltdXRleF9pbml0KCZhbXA7Y2hpcC0mZ3Q7cmVnX2xvY2spOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2NoaXAtJmd0O21kaW9zKTsKIAlpZHJfaW5pdCgmYW1wO2NoaXAtJmd0O3BvbGljaWVzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2NoaXAtJmd0O21zdHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uZGQ1MmRlNzEzNjBiOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSk7IHNlZSB0aGUgQXJyVFNNb2RlIGVuY29kaW5nIGluCiYjNDM7CSAqIGh3dHN0YW1wLmguIFplcm8gKHRoZSBkZWZhdWx0KSBsZWF2ZXMgYXJyaXZhbCB0aW1lIHN0YW1wcyBpbiB0aGUKJiM0MzsJICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWQKJiM0MzsJICogYXMgYSB0cmFpbGVyIG9yIG92ZXJ3cml0dGVuIGF0IHRoYXQgYnl0ZSBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlCiYjNDM7CSAqIFBUUCBjb21tb24gaGVhZGVyLgomIzQzOwkgKi8KJiM0MzsJdW5zaWduZWQgaW50IGFycl90c19tb2RlOwogfTsKIAogc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkgewpAQCAtNDE5LDkgJiM0Mzs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHsKIAkvKiBHUElPIHJlc291cmNlcyAqLwogCXU4IGdwaW9fZGF0YVsyXTsKIAotCS8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLgotCSAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuCiYjNDM7CS8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9jawomIzQzOwkgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlCiYjNDM7CSAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS4KIAkgKi8KJiM0MzsJc3BpbmxvY2tfdAkJcHRwX2Nsb2NrX2xvY2s7CiYjNDM7CXU2NAkJCXRzdGFtcF9jeWNsZXM7CiAJc3RydWN0IGN5Y2xlY291bnRlcgl0c3RhbXBfY2M7CiAJc3RydWN0IHRpbWVjb3VudGVyCXRzdGFtcF90YzsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrCW92ZXJmbG93X3dvcms7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMKaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2luY2x1ZGUgJiMzNDtod3RzdGFtcC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cHRwLmgmIzM0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbGFzc2lmeS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKIAogI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLSZndDtjYikpCiAKQEAgLTI0NSw2ICYjNDM7MjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZCkKIAlyZXR1cm4gdHNfc2VxaWQgPT0gbnRvaHMoaGRyLSZndDtzZXF1ZW5jZV9pZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsCiYjNDM7CQkJICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwdHBfaGVhZGVyICpoZHI7CiYjNDM7CiYjNDM7CSpucyA9IDA7CiYjNDM7CiYjNDM7CS8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXIKJiM0MzsJICogKG5vdCBhbGwgc3dpdGNoZXMgc3VwcG9ydCB0aGlzKS4gQW55IG90aGVyIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlCiYjNDM7CSAqIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgYXQgd2hpY2ggdGhlIHN3aXRjaAomIzQzOwkgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuCiYjNDM7CSAqLwomIzQzOwlpZiAoYXJyX3RzX21vZGUgPT0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkQgJmFtcDsmYW1wOyBza2ItJmd0O2xlbiAmZ3Q7PSA0KSB7CiYjNDM7CQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCSpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpOwomIzQzOwkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwl9IGVsc2UgaWYgKGFycl90c19tb2RlICYjNDM7IDQgJmx0Oz0gc2l6ZW9mKCpoZHIpKSB7CiYjNDM7CQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJCWhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7CiYjNDM7CQlpZiAoIWhkcikKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CQkqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0MzsgYXJyX3RzX21vZGUpOwomIzQzOwkJbWVtc2V0KCh1OCAqKWhkciAmIzQzOyBhcnJfdHNfbW9kZSwgMCwgNCk7CiYjNDM7CQlza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzCiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkCiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAomIzQzOwkJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqc2h3dDsKJiM0MzsJdTY0IG5zOwomIzQzOwomIzQzOwlpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlLCBza2IsICZhbXA7bnMpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7CiYjNDM7CiYjNDM7CXNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7CiYjNDM7CW1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTsKJiM0MzsJc2h3dC0mZ3Q7aHd0c3RhbXAgPSBuc190b19rdGltZShucyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJCSAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLAogCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsCkBAIC0yODksOSAmIzQzOzM0Nyw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCWlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSAmYW1wOyZhbXA7IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHsKIAkJCW5zID0gdGltZWhpICZsdDsmbHQ7IDE2IHwgdGltZWxvOwogCi0JCQltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7Ci0JCQlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBucyk7Ci0JCQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJCQlucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7CiAJCQlzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpOwogCQkJbWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpOwogCQkJc2h3dC0mZ3Q7aHd0c3RhbXAgPSBuc190b19rdGltZShucyk7CkBAIC0zMDgsNyAmIzQzOzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCiAJc2tiID0gc2tiX2RlcXVldWUoJmFtcDtwcy0mZ3Q7cnhfcXVldWUpOwotCiAJaWYgKHNrYikKIAkJbXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtJmd0O2FycjBfc3RzX3JlZywKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZSk7CkBAIC0zMTksOSAmIzQzOzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJCQkJICAgJmFtcDtwcy0mZ3Q7cnhfcXVldWUyKTsKIH0KIAotc3RhdGljIGludCBpc19wZGVsYXlfcmVzcChjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQomIzQzO3N0YXRpYyBib29sIGlzX3BkZWxheV9tc2coY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcikKIHsKLQlyZXR1cm4gKGhkci0mZ3Q7dHNtdCAmYW1wOyAweGYpID09IDM7CiYjNDM7CXN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkgewomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiB9CiAKIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKQEAgLTM0Myw3ICYjNDM7NDA1LDEzIEBAIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAogCVNLQl9QVFBfVFlQRShza2IpID0gdHlwZTsKIAotCWlmIChpc19wZGVsYXlfcmVzcChoZHIpKQomIzQzOwkvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGNhbiBiZSByZXR1cm5lZCBpbmxpbmUuICovCiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoaXNfcGRlbGF5X21zZyhoZHIpKQogCQlza2JfcXVldWVfdGFpbCgmYW1wO3BzLSZndDtyeF9xdWV1ZTIsIHNrYik7CiAJZWxzZQogCQlza2JfcXVldWVfdGFpbCgmYW1wO3BzLSZndDtyeF9xdWV1ZSwgc2tiKTsKQEAgLTQwOSw5ICYjNDM7NDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAKIAltZW1zZXQoJmFtcDtzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7CiAJdGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gJmx0OyZsdDsgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCB0aW1lX3Jhdyk7Ci0JbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiYjNDM7CW5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTsKIAlzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTsKIAogCWRldl9kYmcoY2hpcC0mZ3Q7ZGV2LApAQCAtNDU0LDcgJiM0Mzs1MjAsOSBAQCBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKQogCQlpZiAodGVzdF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX1RYX0lOX1BST0dSRVNTLCAmYW1wO3BzLSZndDtzdGF0ZSkpCiAJCQlyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKIAotCQltdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7CiYjNDM7CQkvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovCiYjNDM7CQlpZiAoIWNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlKQomIzQzOwkJCW12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKIAl9CiAKIAlyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTsKQEAgLTUyMywxNCAmIzQzOzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogewotCXJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCi0JCQkJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpCiB7Ci0JcmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKLQkJCQkJTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDthcnJfdHNfbW9kZSkgewomIzQzOwkJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLAomIzQzOwkJCQkJICAgICAgIGNoaXAtJmd0O2luZm8tJmd0O2Fycl90c19tb2RlICZsdDsmbHQ7IDgpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKJiM0MzsJCQkJICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKQEAgLTU4NCwxMSAmIzQzOzY3NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JLyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqLwotCWVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUiwKLQkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CiYjNDM7CWlmICghY2hpcC0mZ3Q7aW5mby0mZ3Q7YXJyX3RzX21vZGUpIHsKJiM0MzsJCS8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi8KJiM0MzsJCWVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUiwKJiM0MzsJCQkJCSAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUSB8CiYjNDM7CQkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwl9CiAKIAkvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzCiAJICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCmluZGV4IGMzNTk4MjFkNWE2ZWFhLi5jMjVmNTM5MjNlNzY4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaApAQCAtNjgsNiAmIzQzOzY4LDIwIEBACiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU4JCTB4MDAwMgogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOCQkweDAwMDEKIAomIzQzOy8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpLCBDRkcyIGJpdHMgWzE1OjhdOiBjb25maWd1cmVzIGhvdyB0aGUKJiM0MzsgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50CiYjNDM7ICogZnJhbWVzLgomIzQzOyAqICAgMHgwMCAgICAgICAgZnJhbWUgbW9kaWZpY2F0aW9uIGRpc2FibGVkICh0aW1lIHN0YW1wIHJlYWQgZnJvbSByZWdpc3RlcnMpCiYjNDM7ICogICAweDAxICAgICAgICBhcHBlbmQgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGF0IHRoZSBlbmQgb2YgdGhlIGZyYW1lLAomIzQzOyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlcwomIzQzOyAqICAgMHgwNC4uMHhFRiAgb3ZlcndyaXRlIHRoZSA0LWJ5dGUgdGltZSBzdGFtcCBpbiBwbGFjZSwgdGhhdCBtYW55IGJ5dGVzIHBhc3QKJiM0MzsgKiAgICAgICAgICAgICAgIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdpdGhvdXQgZ3Jvd2luZyB0aGUgZnJhbWUKJiM0MzsgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZAomIzQzOyAqICAgICAgICAgICAgICAgYnl0ZXMgb2YgdGhlIGhlYWRlcikKJiM0MzsgKiAgIG90aGVycyAgICAgIHJlc2VydmVkCiYjNDM7ICovCiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORAkJMHgwMQomIzQzOwogLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGRwkweDAzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCkBAIC0yMzEsMTUgJiM0MzsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSkKIAogCS8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovCiAJZXYuaW5kZXggPSAwOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgcmF3X3RzKTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7CiAKIAlwdHBfY2xvY2tfZXZlbnQoY2hpcC0mZ3Q7cHRwX2Nsb2NrLCAmYW1wO2V2KTsKIG91dDoKIAlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtjaGlwLSZndDt0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpOwogfQogCiYjNDM7LyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZQomIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2sKJiM0MzsgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2gKJiM0MzsgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiYjNDM7CiYjNDM7CWlmIChwdHBfb3BzLSZndDtjbG9ja19yZWFkKQomIzQzOwkJY2hpcC0mZ3Q7dHN0YW1wX2N5Y2xlcyA9IHB0cF9vcHMtJmd0O2Nsb2NrX3JlYWQoJmFtcDtjaGlwLSZndDt0c3RhbXBfY2MpOwomIzQzO30KJiM0MzsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcykKJiM0Mzt7CiYjNDM7CXU2NCBuczsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwomIzQzOwlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBjeWNsZXMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5zOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiAJZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLSZndDtjY19jb2VmZnMtJmd0O2NjX211bHRfZGVtKTsKIAogCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfcmVhZCgmYW1wO2NoaXAtJmd0O3RzdGFtcF90Yyk7CiAJY2hpcC0mZ3Q7dHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICYjNDM7IGRpZmY7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwogCiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKIAomIzQzOwkvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzCiYjNDM7CSAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5CiYjNDM7CSAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC4KJiM0MzsJICovCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfYWRqdGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgZGVsdGEpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtMjg1LDcgJiM0MzszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsCiAJdTY0IG5zOwogCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwltdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJbnMgPSB0aW1lY291bnRlcl9yZWFkKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjKTsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiYjNDM7CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAkqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTsKQEAgLTMwMiw3ICYjNDM7MzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLAogCW5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7CiAKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiYjNDM7CW12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywgbnMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtNDQ0LDE0ICYjNDM7NDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHsKIAkJKDEgJmx0OyZsdDsgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLAogfTsKIAomIzQzOy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKQomIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy4KJiM0MzsgKi8KIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQogewotCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpOwotCi0JaWYgKGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZCkKLQkJcmV0dXJuIGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZChjYyk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGNjX3RvX2NoaXAoY2MpLSZndDt0c3RhbXBfY3ljbGVzOwogfQogCiAvKiBXaXRoIGEgMjUwTUh6IGlucHV0IGNsb2NrLCB0aGUgMzItYml0IHRpbWVzdGFtcCBjb3VudGVyIG92ZXJmbG93cyBpbiB+MTcuMgpAQCAtNDg2LDYgJiM0Mzs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWNoaXAtJmd0O3RzdGFtcF9jYy5tdWx0CT0gY2hpcC0mZ3Q7Y2NfY29lZmZzLSZndDtjY19tdWx0OwogCWNoaXAtJmd0O3RzdGFtcF9jYy5zaGlmdAk9IGNoaXAtJmd0O2NjX2NvZWZmcy0mZ3Q7Y2Nfc2hpZnQ7CiAKJiM0MzsJLyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuCiYjNDM7CSAqIFRoZSBjYWxsZXIgaG9sZHMgcmVnX2xvY2ssIGFuZCBub3RoaW5nIGNhbiByZWFjaCB0aGUgUFRQIGNsb2NrCiYjNDM7CSAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKJiM0MzsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywKIAkJCSBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCkBAIC02OCw2ICYjNDM7NjgsNyBAQAogCiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7CiAKICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsCVwKIAkJCQkgICAgICBwdHBfY2xvY2tfaW5mbykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE1MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogbXY4OGU2eHh4IFBUUCBUaW1lc3RhbXBpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbXY4OGU2eHh4YCBEU0EgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGFuZCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcuICBUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBlbWJlZGRlZCBhcnJpdmFsIHRpbWVzdGFtcHMgKGBhcnJfdHNfbW9kZWApLCB3aGljaCBzb3VuZHMgcHJvbWlzaW5nIGZyb20gYSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZS4gIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUgcmVhZGluZyB0aW1lc3RhbXBzIGRpcmVjdGx5IGZyb20gdGhlIHBhY2tldCBwYXlsb2FkL3RyYWlsZXIgdG8gYnlwYXNzIHN3aXRjaCByZWdpc3RlciByZWFkcywgd2hpY2ggc2hvdWxkIGJlIGZhc3RlciwgYXZvaWRpbmcgdGhvc2Ugc2xvdyBNRElPIGFjY2Vzc2VzLCB3aGljaCBpcyBnb29kLiAgSSBzZWUgdGhlIGNvZGUgdG91Y2hlcyBzZXZlcmFsIGNvcmUgZmlsZXM6IGBjaGlwLmNgLCBgY2hpcC5oYCwgYGh3dHN0YW1wLmNgLCBgaHd0c3RhbXAuaGAsIGFuZCBgcHRwLmNgLCBgcHRwLmhgLiBUaGV5JiMzOTt2ZSBhbHNvIGltcGxlbWVudGVkIGEgYHB0cF9jbG9ja19sb2NrYCBzcGlubG9jayBmb3IgcHJvdGVjdGluZyB0aW1lc3RhbXBpbmcgZGF0YSwgd2hpY2ggaXMgYXBwcm9wcmlhdGUuIFRoaXMgaXMgY2hhbmdpbmcgZnVuZGFtZW50YWwgcGFyc2luZyBhbmQgdGltZXN0YW1waW5nIGxvZ2ljIHdpdGhpbiB0aGUgZHJpdmVyOyBkZWZpbml0ZWx5IGEgcG90ZW50aWFsIGFyZWEgZm9yIGJ1Z3MuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGluIGBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcGAgYW5kIGBwYXJzZV9lbWJlZGRlZF90c2AuIFRoZSBsYXR0ZXIsIGluIHBhcnRpY3VsYXIsIGxvb2tzIGludGVyZXN0aW5nLCBhcyBpdCYjMzk7cyBoYW5kbGluZyBwYWNrZXQgZGF0YS4gSSBzZWUgdGhleSBoYXZlIGEgYmxvY2sgb2YgY29kZSB0aGVyZSB0aGF0IG1vZGlmaWVzIHRoZSBgc2tiYCB3aGljaCBsb29rcyBsaWtlOgoKYGBgYwoJaWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJmd0Oz0gNCkgewoJCWlmIChza2JfbGluZWFyaXplKHNrYikpCgkJCXJldHVybiBmYWxzZTsKCgkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7CgkJaWYgKHBza2JfdHJpbV9yY3N1bShza2IsIHNrYi0mZ3Q7bGVuIC0gNCkpCgkJCXJldHVybiBmYWxzZTsKCX0gZWxzZSBpZiAoYXJyX3RzX21vZGUgJiM0MzsgNCAmbHQ7PSBzaXplb2YoKmhkcikpIHsKCQlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQoJCQlyZXR1cm4gZmFsc2U7CgoJCWhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7CgkJaWYgKCFoZHIpCgkJCXJldHVybiBmYWxzZTsKCgkJKm5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlKTsKCQltZW1zZXQoKHU4ICopaGRyICYjNDM7IGFycl90c19tb2RlLCAwLCA0KTsKCQlza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTsKCX0KYGBgCgpUaGlzIGlzIGRlZmluaXRlbHkgcGFja2V0IHBhcnNpbmcgbG9naWMuIEl0IG1vZGlmaWVzIHRoZSBgc2tiYC4gSWYgdGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBpbmplY3RlZCB3aXRoIGNyYWZ0ZWQgcGFja2V0cywgdGhpcyBpcyBwcmltZSBmdXp6ZXIgdGVycml0b3J5ISBNeSBjb25jZXJuIGlzIHRoYXQsIGFzIGEgRFNBIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoLCBpdCYjMzk7cyB0eXBpY2FsbHkgdGllZCB0byByZWFsIGhhcmR3YXJlIGFuZCBhbiBNRElPIGJ1cy4gQ2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBTeXprYWxsZXIgdHlwaWNhbGx5IHN0cnVnZ2xlcyB3aXRoIHRoaXMuIERTQSBkcml2ZXJzIGFyZSBvZnRlbiB0cmlja3kgYmVjYXVzZSB0aGV5IG5lZWQgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cC4gU29tZXRpbWVzIG1vY2sgZHJpdmVycyBvciBkZXZpY2UgdHJlZSBvdmVybGF5cyBtaWdodCB3b3JrLCBidXQgaXQmIzM5O3Mgbm90IHRoZSB1c3VhbCBzeXprYWxsZXIgY2FzZS4KClRoZSBjb2RlIGlzIHJlYWNoZWQgdGhyb3VnaCBgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXBgLCB3aGljaCBpcyB0aGUgYHBvcnRfcnh0c3RhbXBgIGNhbGxiYWNrIGZvciB0aGUgRFNBIHN3aXRjaCwgdHJpZ2dlcmVkIGJ5IHRoZSBuZXR3b3JrIHN0YWNrLiAgU28sIGlmIHdlIGNhbiBpbnN0YW50aWF0ZSBhIERTQSBzd2l0Y2ggc29tZWhvdywgd2UgaGF2ZSBhIGNoYW5jZS4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciBsb2FkZWQgYW5kIHByb2JlZC4gSXQgdXNlcyBhbiBNRElPIGJ1cywgYW5kIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gaGVscCB0aGVyZSB0aHJvdWdoIGl0cyBJMkMvTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcywgYnV0IGl0JiMzOTtzIG5vdCB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgcGF0aC4gSSBkb24mIzM5O3Qgc2VlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBNYXJ2ZWxsIHN3aXRjaGVzLgoKQnV0LCBnaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRvIGFzc3VtZSBpdCAqaXMqIHJlYWNoYWJsZSBpZiBpdCYjMzk7cyBjb3JlIGRyaXZlciBsb2dpYyBwYXJzaW5nIHBhY2tldHMsIGFuZCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkcml2ZXIgdGhhdCBtb2RpZmllcyBza2IsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBgV29ydGhGdXp6aW5nPXRydWVgLiBFdmVuIGlmIGl0JiMzOTtzIGRpZmZpY3VsdCwgbGV0JiMzOTtzIGFzc3VtZSBzb21lb25lIGNvdWxkIHdyaXRlIGEgbW9jayBvciB1c2UgZGV2aWNlIHRyZWUuICBUaGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIGNhbiBiZSBsb2FkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDE2NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw9MTk9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sLTk0LSAgICAgIGNvbXBhdGlibGU6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjk1OiAgICAgICAgY29uc3Q6IG1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtOTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbD0xMDk9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC0yNDAtICAgICAgICAgICAgbWRpby1leHRlcm5hbCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjI0MTogICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O21hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sLTI0Mi0gICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sPTEyPWRlc2NyaXB0aW9uOiB8JiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwsbXZ1c2IueWFtbC0xOC0gIGhhdmluZyBhIGRldmljZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZXZpY2UuIEJ1dCBpbiBvcmRlciB0byB1c2UgaXQgd2l0aFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWw6MTk6ICB0aGUgbXY4OGU2eHh4IGRyaXZlciwgeW91IG5lZWQgYSBkZXZpY2UgdHJlZSBub2RlIGluIHdoaWNoIHRvIHBsYWNlIHRoZSBzd2l0Y2hcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sLTIwLSAgZGVmaW5pdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3Q9Nzc9cGFyYW1ldGVycywgaW5mbyB2ZXJzaW9ucywgYW5kIG90aGVyIGZlYXR1cmVzIGl0IHN1cHBvcnRzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2luZGV4LnJzdC05NS0gICBtbHhzd1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0Ojk2OiAgIG12ODhlNnh4eFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0LTk3LSAgIG5ldGRldnNpbVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtMy09PT09PT09PT09PT09PT09PT09PT09PT09XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0OjQ6bXY4OGU2eHh4IGRldmxpbmsgc3VwcG9ydFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC01LT09PT09PT09PT09PT09PT09PT09PT09PT1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtNi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6NzpUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2bGluayBmZWF0dXJlcyBpbXBsZW1lbnRlZCBieSB0aGUgYGBtdjg4ZTZ4eHhgYFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC04LWRldmljZSBkcml2ZXIuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdD0xMD1QYXJhbWV0ZXJzXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC0xMi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6MTM6VGhlIGBgbXY4OGU2eHh4YGAgZHJpdmVyIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBkcml2ZXItc3BlY2lmaWMgcGFyYW1ldGVycy5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtMTQtXG4tLVxuTUFJTlRBSU5FUlM9MTU1OTU9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2MDYwLnlhbWxcbk1BSU5UQUlORVJTOjE1NTk2OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sXG5NQUlOVEFJTkVSUzoxNTU5NzpGOlx0RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdFxuTUFJTlRBSU5FUlM6MTU1OTg6RjpcdGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvXG5NQUlOVEFJTkVSUzoxNTU5OTpGOlx0aW5jbHVkZS9saW51eC9kc2EvbXY4OGU2eHh4Lmhcbk1BSU5UQUlORVJTOjE1NjAwOkY6XHRpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4Lmhcbk1BSU5UQUlORVJTLTE1NjAxLVxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4MS1uZXRnZWFyLWdzMTEwZW14LmR0cz0xMjc9XHRcdG1kaW8tZXh0ZXJuYWwge1xuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzOjEyODpcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM4MS1uZXRnZWFyLWdzMTEwZW14LmR0cy0xMjktXHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzPTE3MD1cdFx0XHRtZGlvLWV4dGVybmFsIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzOjE3MTpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDttYXJ2ZWxsLG12ODhlNnh4eC1tZGlvLWV4dGVybmFsXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL3ZmL3ZmNjEwLXppaS1zc21iLWR0dS5kdHMtMTcyLVx0XHRcdFx0I2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cz0yOTI9XHRcdFx0c3dpdGNoMHBoeTQ6IGV0aGVybmV0LXBoeUA0IHtcbi0tXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHMtMzAyLVx0XHQgKiBtZGlvLWV4dGVybmFsIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0czozMDM6XHRcdCAqXHRjb21wYXRpYmxlID0gXCYjMzQ7bWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFwmIzM0OztcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cy0zMDQtXHRcdCAqXHQjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3NTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcdFx0XHRcdCYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6MjI6b2JqLXlcdFx0XHRcdCYjNDM7PSBtdjg4ZTZ4eHgvXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcdFx0XHRcdCYjNDM7PSBteGw4NjJ4eC9cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNS0gKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3Jcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgJiM0Mzs9IG12ODhlNnh4eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGRldmxpbmsub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Njptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV9hdHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX3Z0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo5Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyX2F2Yi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyX3NjcmF0Y2gub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMTptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfUFRQKSAmIzQzOz0gaHd0c3RhbXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMjptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfTEVEUykgJiM0Mzs9IGxlZHMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYxODUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYzNTIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGNzLTYzOXgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNjptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcGh5Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnQub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydF9oaWRkZW4ub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxOTptdjg4ZTZ4eHgtJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFhfUFRQKSAmIzQzOz0gcHRwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNlcmRlcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIxOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzbWkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMjptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc3dpdGNoZGV2Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRjZmxvd2VyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHRjYW0ub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0yNi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9kc2EvbXY4OGU2eHh4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUwOnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODppbnQgbXY4OGU2eHh4X3JlYWQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDpcdGVyciA9IG12ODhlNnh4eF9zbWlfd3JpdGUoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxLVx0XHRcdHUxNiBtYXNrLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMi1cdGZvciAoaSA9IDA7IHRpbWVfYmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpIHx8IChpIFx1MDAzYyAyKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEwMzpcdFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMTY6XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LVx0XHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzA6XHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMxLVx0XHRcdFx0ICAgdmFsID8gQklUKGJpdCkgOiAweDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNDpzdHJ1Y3QgbWlpX2J1cyAqbXY4OGU2eHh4X2RlZmF1bHRfbWRpb19idXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNjpcdHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMgKm1kaW9fYnVzO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM4LVx0bWRpb19idXMgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2Y2hpcC1cdTAwM2VtZGlvcyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzOTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQwLVx0aWYgKCFtZGlvX2J1cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDg6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OS1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1NjpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU3LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4OTpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNmN0bDEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVx0XHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVx0XHRcdGdvdG8gdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkyOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkzLXVubG9jazpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA0OnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF9mbihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA2Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZGV2X2lkO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA4Olx0cmV0dXJuIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjExOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE1Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjIwOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjI2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzNi1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XHQubmFtZVx0XHRcdD0gXCYjMzQ7bXY4OGU2eHh4LWcxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlx0LmlycV9tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlx0LmlycV91bm1hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NDpcdC5pcnFfYnVzX2xvY2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1Olx0LmlycV9idXNfc3luY191bmxvY2tcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0ODpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkLVx1MDAzZWhvc3RfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjI6XHQubWFwXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2My1cdC54bGF0ZVx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjcyOlx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjczLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjg0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MzpcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTQ6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNC1cdFx0TlVMTCwgY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XHRcdFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDYtXHRpZiAoIWNoaXAtXHUwMDNlZzFfaXJxLmRvbWFpbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XHRjaGlwLVx1MDAzZWcxX2lycS5jaGlwID0gbXY4OGU2eHh4X2cxX2lycV9jaGlwO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVx0Y2hpcC1cdTAwM2VnMV9pcnEubWFza2VkID0gfjA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTU6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyMTpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNS1cdC8qIFJlYWRpbmcgdGhlIGludGVycnVwdCBzdGF0dXMgY2xlYXJzIChtb3N0IG9mKSB0aGVtICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzM0Olx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUzOlx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cdHNucHJpbnRmKGNoaXAtXHUwMDNlaXJxX25hbWUsIHNpemVvZihjaGlwLVx1MDAzZWlycV9uYW1lKSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NDpcdFx0IFwmIzM0O212ODhlNnh4eC0lc1wmIzM0OywgZGV2X25hbWUoY2hpcC1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY3LVx0ZXJyID0gcmVxdWVzdF90aHJlYWRlZF9pcnEoY2hpcC1cdTAwM2VpcnEsIE5VTEwsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjg6XHRcdFx0XHQgICBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF9mbixcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cdFx0XHRcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcwLVx0XHRcdFx0ICAgY2hpcC1cdTAwM2VpcnFfbmFtZSwgY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzItXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlx0XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MTpcdFx0XHRcdFx0XHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODItXHRcdFx0XHRcdFx0ICAgaXJxX3BvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2lycV9wb2xsX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5Ny1cdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXHUwMDI2Y2hpcC1cdTAwM2VpcnFfcG9sbF93b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4Olx0XHRcdFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGxfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNjpcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTc6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MjA6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cdFx0XHRcdFx0ICAgaW50IHBvcnQsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDQyOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfc2V0dXBfbWFjKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXHRcdFx0XHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2OTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCwgbW9kZSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDg0OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkyLVx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDkzOlx0XHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MjM6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTI0LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzU6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NTAtXHRbTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX01JSV9QSFldXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTYzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjY6XHRpZiAoY21vZGUgXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3Olx0ICAgIG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW2Ntb2RlXSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcdFx0X19zZXRfYml0KG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW2Ntb2RlXSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3NDptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3NS1cdFx0XHRcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIzOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjUte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjI2Olx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI3LVx0XHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzctXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0OTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjUwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTctXHR2YWwgPSByZWcgXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1ODpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYyOlx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ni1cdC8qIFJlc3RvcmUgUEhZX0RFVEVDVCB2YWx1ZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODAtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY5NzpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMTpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzAyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwNy1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA4Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI0OnN0YXRpYyB2b2lkIG12ODhlNjM0MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzA6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzQ2OnN0YXRpYyB2b2lkIG12ODhlNjM5MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NTI6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzY4OnN0YXRpYyB2b2lkIG12ODhlNjM5MHhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MDM6c3RhdGljIHZvaWQgbXY4OGU2MzkzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgxMjpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ5LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MDpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTMtXHRjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU2Olx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTMzNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQ2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXY4OGU2eHh4YCBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciwgYSBEU0EgZHJpdmVyLCBhbmQgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgc3VyZSwgbWF5YmUgd2l0aCBhIGR1bW15IE1ESU8gYnVzIGFuZCBhIGRldmljZSB0cmVlIG92ZXJsYXksIGl0JiMzOTtzIHBvc3NpYmxlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIHJlbHlpbmcgb24sIGRvZXNuJiMzOTt0IGhhdmUgYSBtb2NrIGZvciBgbXY4OGU2eHh4YCBzcGVjaWZpY2FsbHkuIFRoZSBpbnN0cnVjdGlvbnMgSSBoYXZlIHNheSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGFyZSB0byBiZSBpZ25vcmVkLCBwYXJ0aWN1bGFybHkgdGhvc2UgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLgoKSXMgdGhpcyBvbmUgb2YgdGhvc2Ugc2l0dWF0aW9ucz8gSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzLiBObyBvYnZpb3VzIGNhbmRpZGF0ZSBqdW1wcyBvdXQuIEkgdHJpZWQgdG8gdGhpbmsgb2Ygd2F5cyB0byB0cmlnZ2VyIGl0IHVzaW5nIFN5emthbGxlciYjMzk7cyBleGlzdGluZyBmZWF0dXJlcywgbGlrZSBgc3l6X2dlbmV0bGlua2AsIGJ1dCB0aGF0IHdvbiYjMzk7dCB3b3JrIGZvciBhIGhhcmR3YXJlIGRyaXZlci4gVGhlbiBJIGNvbnNpZGVyZWQgTURJTyBzb2Z0d2FyZSBlbXVsYXRpb24uIERvZXMgdGhlIGtlcm5lbCBoYXZlIGFueXRoaW5nIGxpa2UgdGhhdCwgbGlrZSBgbWRpby1tb2NrdXBgIG9yIGBtZGlvLWdwaW9gPyBBaCwgSSB0aG91Z2h0IHRoZXJlIHdhcyBgbWRpby1tb2NrdXBgLCBidXQgbm9wZSwgaXQgZG9lc24mIzM5O3QgZXhpc3QuIFRoZXJlJiMzOTtzIGBkc2EtbG9vcGAsIHdoaWNoIGlzIGEgbW9jayBEU0EgZHJpdmVyLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIHNhbWUgdGhpbmc7IGl0IHRlc3RzIHRoZSBEU0EgY29yZSwgYnV0IG5vdCBgbXY4OGU2eHh4YCBpdHNlbGYuCgpTbywgU3l6a2FsbGVyIGhhcyBgc3l6X2kyY2AgYW5kIGBzeXpfdXNiYCwgYnV0IG5vIGBzeXpfbWRpb2AuIExvb2tzIGxpa2UgSSBjYW4mIzM5O3QgdXNlIGBkc2EtbG9vcGAgdG8gdGVzdCB0aGUgc3BlY2lmaWNzIG9mIGBtdjg4ZTZ4eHhgLiBUaGF0IGNvbmZpcm1zIGl0LCBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgc28gSSBhc2sgbXlzZWxmIGFnYWluLCBpcyBpdCBpbXBvc3NpYmxlIHRvIHJlYWNoPyBJZiB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSBvciBzaW11bGF0ZSB0aGUgaGFyZHdhcmUsIHRoZW4geWVzLCBpdCYjMzk7cyBpbXBvc3NpYmxlLgoKSSB0aGVuIGNvbnNpZGVyZWQgb3RoZXIgb3B0aW9ucywgbGlrZSB1c2luZyBgZmFrZWRldmAgb3IgY2hlY2tpbmcgaWYgaXQgY2FuIGJlIHByb2JlZCB2aWEgSTJDLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoaXMgZHJpdmVyIHVzZXMgTURJTyBmb3IgcHJvYmluZywgc28gdGhhdCB3b24mIzM5O3Qgd29yay4gSG93ZXZlciwgYG12ODhlNnh4eGAgaXMgb2Z0ZW4gcHJvYmVkIHZpYSBTTUkgKFNlcmlhbCBNYW5hZ2VtZW50IEludGVyZmFjZSkgd2hpY2ggaXMgb2Z0ZW4gb3ZlciBNRElPLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMsIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSB3YXkgdG8gcHJvYmUgaXQ/IExldCBtZSBjaGVjayB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGZpZ3VyZSB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE1PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzMxNzpzdGF0aWMgaW50IG12ODhlNnh4eF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03NTI1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgbXY4OGU2eHh4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjY6XHQucHJvYmVcdD0gbXY4OGU2eHh4X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyNy1cdC5yZW1vdmUgPSBtdjg4ZTZ4eHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Njc1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIGBtdjg4ZTZ4eHhgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWRpb19kcml2ZXJgIGFuZCBpbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0NhbiB3ZSBldmVuICp0b3VjaCogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgSSBjYW4gZ2VuZXJhdGUgYSBkZXZpY2UgZnJvbSB1c2Vyc3BhY2UsIGJ1dCBubyBsdWNrIHdpdGggYHN5el9tZGlvYCBpbiBzeXprYWxsZXIuIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGUgbWVudGFsIGNoZWNrbGlzdDogYGkyY2AuLi4gbm9wZS4gYG5ldGRldnNpbWAuLi4gbm90IGV2ZW4gY2xvc2UuIGBtYWM4MDIxMV9od3NpbWAuLi4gYWdhaW4sIG5vLiBJdCYjMzk7cyBsb29raW5nIGdyaW0uIFRoaXMgc2NyZWFtcyBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKVGhlbiB0aGUgYnJ1dGFsIHJlYWxpdHkgaGl0czogdGhpcyByZXF1aXJlcyBhIHJlYWwgTURJTyBidXMgKmFuZCogc3BlY2lmaWMgTWFydmVsbCBzd2l0Y2ggaGFyZHdhcmUuIEZvcmdldCBhYm91dCBpdC4gV2FpdCwgd2hhdCBhYm91dCBgZHNhLWxvb3BgPyBPaCwgcmlnaHQsIHRoYXQmIzM5O3MgYSAqZGlmZmVyZW50KiBkcml2ZXIsIGBkc2EtbG9vcC5jYC4gU28sIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgaXMgbG9va2luZyBjb21wbGV0ZWx5IG91dCBvZiByZWFjaCBpbiBRRU1VLgoKT2theSwgbWF5YmUgdGhlcmUmIzM5O3MgYSBzbGltIGNoYW5jZSBzeXprYWxsZXIgY291bGQgaW5qZWN0IGEgZGV2aWNlIHRyZWUgbm9kZSwgYnV0IGV2ZW4gdGhhdCYjMzk7cyBhIGxvbmcgc2hvdC4gVGhlIE1ESU8gYnVzIGRyaXZlciB3b3VsZCBuZWVkIHRvIGJlIHByZXNlbnQsIHNvIEkgY291bGQgKm1heWJlKiB1c2UgYG1kaW8tZ3Bpb2Agb3IgYG1kaW8tYml0YmFuZ2Agd2l0aCBtb2NrZWQgR1BJT3M/IFRoYXQmIzM5O3MgZ3Jhc3BpbmcgYXQgc3RyYXdzIGFuZCBzeXprYWxsZXIgaXNuJiMzOTt0IHNldCB1cCBmb3IgdGhhdCBsZXZlbCBvZiB0cmlja2VyeS4gTm90IGhhcHBlbmluZy4KCkxldCBtZSBkb3VibGUgY2hlY2sgdGhlIFFFTVUgbWFjaGluZSBvcHRpb25zLi4uIGFuZCBzZWFyY2ggdGhlIGNvZGUuLi4gYGh3L25ldC9gLi4uIE5haCwgUUVNVSBpc24mIzM5O3QgZW11bGF0aW5nIE1hcnZlbGwgRFNBIHN3aXRjaGVzLiBUaGUgcHJvbXB0IHNheXMgdGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIE9rYXksIEkmIzM5O20gcHJldHR5IHN1cmUgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSByZWFkIHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7IFllcC4KCklzIHRoZXJlIGFueSBjaGFuY2U/IExldCYjMzk7cyBjaGVjayB0aGUgdXN1YWwgUUVNVSBBUk0gYm9hcmRzLiBgdmV4cHJlc3NgLCBgdmlydGAsIGBzYWJyZWxpdGVgLCBgcmFzcGlgLCBgeGlsaW54YCwgYGFzcGVlZGAuIEFzcGVlZCBtYWNoaW5lcyBtaWdodCBoYXZlICpzb21lKiBuZXR3b3JrIHN0dWZmLCBidXQgdXN1YWxseSBqdXN0IHRoZSBNQUMsIG5vdCB0aGUgRFNBIHN3aXRjaC4gSGlnaGx5IHVubGlrZWx5LgoKT2theSwgdGhlIHBhdGNoIGRvZXMgdG91Y2ggYGh3dHN0YW1wLmNgLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXNuJiMzOTt0IGFjY2Vzc2libGUgdmlhIGEgZGlmZmVyZW50IHBhdGguIE9oLCBgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXBgIGlzIG9ubHkgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wYCBpbiBgaHd0c3RhbXAuY2AsIHdoaWNoIGlzICpwYXJ0KiBvZiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLgoKSSYjMzk7bSBjaGVja2luZyB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBtb2NrIGRyaXZlcnMgZm9yIGBtdjg4ZTZ4eHhgLi4uIE5vcGUuIFRoaXMgdGhpbmcgaXMgc3RyaWN0bHkgaGFyZHdhcmUtZm9jdXNlZCwgcmVhZGluZyBhbmQgd3JpdGluZyB0byBTTUkvTURJTyByZWdpc3RlcnMgb24gYSByZWFsIHBoeXNpY2FsIHN3aXRjaC4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGlzIGlzIG5vdCBmdXp6YWJsZTsgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMzIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUgaW4gVGVzdGluZyBUb29scyoqCgpIbW0sIG5vIG9idmlvdXMgY2x1ZXMgaW4gdGhlIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIGEgYml0IHVuZXhwZWN0ZWQsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBkZWFkIGVuZC4gT2theSwgbGV0JiMzOTtzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBhIG1vY2sgZm9yIGBtZGlvYCBleGlzdHMgc29tZXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gSXQmIzM5O3MgcG9zc2libGUgdGhlIHRlc3RpbmcgaGFybmVzcyBpcyBwdWxsaW5nIGl0IGZyb20gYSBkaWZmZXJlbnQgbG9jYXRpb24sIG9yIG1heWJlIGl0JiMzOTtzIHVzaW5nIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYXBwcm9hY2guIExldCBtZSBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRldmljZSBtb2RlbCBJIGFtIHdvcmtpbmcgd2l0aCBpcyBhIGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgd291bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpby4qbW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MzUxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkludHJpZ3VpbmcgUXVlcnk6IFRoZSBJbnRlcnNlY3Rpb24gb2YgRFNBIGFuZCBNb2NraW5nKioKCkhtbSwgYGRzYS4qbW9ja2AuLi4gV2hhdCYjMzk7cyBzcGFya2luZyB0aGlzIHRob3VnaHQ/IE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgdXNlIGNhc2UgcmVsYXRpbmcgdG8gRGF0YSBTdHJ1Y3R1cmVzIGFuZCBBbGdvcml0aG1zIChEU0EpLiBJdCBzZWVtcyBsaWtlIHRoZSBpbmRpdmlkdWFsIGlzIHBvbmRlcmluZyB0aGUgaW50ZWdyYXRpb24gb2YgbW9ja2luZyB0ZWNobmlxdWVzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBEU0EuIFBlcmhhcHMgaXQmIzM5O3MgYSBxdWVzdGlvbiBvZiBob3cgdG8gZWZmZWN0aXZlbHkgKnRlc3QqIERTQSBpbXBsZW1lbnRhdGlvbnMsIG9yIGhvdyBtb2NraW5nIG1pZ2h0IGZhY2lsaXRhdGUgZXhwZXJpbWVudGF0aW9uIGFuZCBhbmFseXNpcyBvZiBhbGdvcml0aG1zIHVuZGVyIGRpZmZlcmVudCBzY2VuYXJpb3MuCgpNeSBpbml0aWFsIHJlYWN0aW9ucyBzdWdnZXN0IGEgZmV3IGtleSBhcmVhcyBvZiBwb3RlbnRpYWwgaW52ZXN0aWdhdGlvbjoKCiogICAqKlRlc3QtRHJpdmVuIERldmVsb3BtZW50IChUREQpIGFuZCBEU0E6KiogQ291bGQgdGhpcyByZWZlciB0byBlbXBsb3lpbmcgbW9jayBvYmplY3RzIHRvIGlzb2xhdGUgRFNBIGNvbXBvbmVudHMgZHVyaW5nIHRlc3RpbmcsIGFsbG93aW5nIGZvciBtb3JlIGZvY3VzZWQgdW5pdCB0ZXN0cyBhbmQgaW50ZWdyYXRpb24gdGVzdHMsIG9yIHBlcmhhcHMgdG8gbW9jayB0aGUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBEU0EgY29kZT8KKiAgICoqQWxnb3JpdGhtaWMgQW5hbHlzaXMgYW5kIEJlbmNobWFya2luZzoqKiBQZXJoYXBzIHRoaXMgaW52b2x2ZXMgdXNpbmcgbW9ja3MgdG8gc2ltdWxhdGUgc3BlY2lmaWMgZGF0YSBkaXN0cmlidXRpb25zIG9yIGVkZ2UgY2FzZXMgZm9yIHBlcmZvcm1hbmNlIHRlc3Rpbmcgb2YgdmFyaW91cyBhbGdvcml0aG1zLiBJdCBjb3VsZCBhbGxvdyBmb3IgZWFzaWVyIGNvbXBhcmlzb24gb2YgcnVuIHRpbWVzIGFuZCBkYXRhIHNldHMuCiogICAqKkFic3RyYWN0aW5nIERhdGEgU291cmNlczoqKiBJcyBpdCB0aGUgY29uc2lkZXJhdGlvbiBvZiBjcmVhdGluZyBhIG1vY2sgZGF0YSBzb3VyY2UgdG8gZmFjaWxpdGF0ZSBhbGdvcml0aG0gZGV2ZWxvcG1lbnQgaW5kZXBlbmRlbnQgb2YgYSByZWFsIGRhdGEgc2V0PyBPciBtYXliZSB0byBhbGxvdyBmb3IgdGhlIGNyZWF0aW9uIG9mIHVuaXQgdGVzdHMgdGhhdCBlbnN1cmUgdGhlIHByb2dyYW0gcnVucyBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbnMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIGRhdGFiYXNlIGlzIHJ1bm5pbmc/CiogICAqKkNvbmNlcHR1YWwgTW9kZWxpbmc6KiogSXMgdGhlIGZvY3VzIG9uIGEgaGlnaGVyIGxldmVsIGNvbmNlcHR1YWwgcXVlc3Rpb24uIFBlcmhhcHMsIHRoZSB0aG91Z2h0IGlzIGFib3V0IHRoZSBjcmVhdGlvbiBvZiBtb2RlbHMgdG8gdmlzdWFsaXplIGRhdGEgc3RydWN0dXJlIGFuZCBhbGdvcml0aG1pYyBjb25jZXB0cy4gQ3JlYXRpbmcgYSBtb2NrIG1vZGVsIGNvdWxkIG1ha2UgdGhlIGNyZWF0aW9uIG9mIHRoZXNlIHZpc3VhbGl6YXRpb25zIGVhc2llci4KClRoZSBudWFuY2UgaGVyZSBpcyBmYXNjaW5hdGluZywgYXMgdGhlIGNob2ljZSBvZiAmIzM0O21vY2smIzM0OyBzdWdnZXN0cyBhIGRlc2lyZSBmb3IgY29udHJvbGxlZCBlbnZpcm9ubWVudHMgdG8gc3R1ZHkgb3IgdmFsaWRhdGUgYXNwZWN0cyBvZiBEU0EuIERlZmluaXRlbHkgc29tZXRoaW5nIHRvIGV4cGxvcmUgZnVydGhlciEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2EuKm1vY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc3MAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBgZHNhX2xvb3BgIGluIHRoZSBDb250ZXh0IG9mIFtJbXBsaWVkIENvbnRleHQgLSBMZXQmIzM5O3MgYXNzdW1lIGZvciBleGFtcGxlLCAmIzM0O2EgY29tcGxleCBjcnlwdG9ncmFwaGljIHByb3RvY29sJiMzNDtdKioKCkhtbSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBhcmNoaXRlY3R1cmUsIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgW1Byb3RvY29sL0FsZ29yaXRobSBOYW1lXS4gV2UmIzM5O3ZlIGFkZHJlc3NlZCB0aGUgaW5pdGlhbCBzZXR1cCwgd2UmIzM5O3ZlIHJldmlld2VkIHRoZSBrZXkgZXhjaGFuZ2UsIGFuZCBub3cgd2UmIzM5O3JlIGNvbnNpZGVyaW5nIHRoZSBhY3R1YWwgZGF0YSBzaWduaW5nIHBoYXNlLi4uIGFuZCB0aGUgcGhyYXNlICpkc2FfbG9vcCogcG9wcyBpbnRvIG15IGhlYWQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgaW1wbGVtZW50YXRpb24sIGFuZCBpdCBjb3VsZCBiZSB0aGUgbHluY2hwaW4sIGl0IHNlZW1zLgoKSXMgaXQgYSBjcml0aWNhbCBsb29wPyBEb2VzIGl0IGhhbmRsZSB0aGUgY3JpdGljYWwgb3BlcmF0aW9ucyBmb3IgZGlnaXRhbCBzaWduYXR1cmUgYWxnb3JpdGhtPyBBIGtleSBjb21wb25lbnQgaW4gdGhlIGRhdGEgc2lnbmluZyBjeWNsZS4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBJcyBpdCByZXNwb25zaWJsZSBmb3IgaXRlcmF0aW5nIHRocm91Z2ggbWVzc2FnZXMsIGhhbmRsaW5nIGtleSBtYXRlcmlhbCwgb3IgZ2VuZXJhdGluZyB0aGUgc2lnbmF0dXJlcz8KCkxldCYjMzk7cyBxdWlja2x5IHJlY2FsbC4gV2hlcmUgZG9lcyBgZHNhX2xvb3BgIGZpdCB3aXRoaW4gdGhlIG92ZXJhbGwgZmxvdz8gV2hhdCBhcmUgaXRzIGlucHV0cywgb3V0cHV0cywgYW5kIGRlcGVuZGVuY2llcz8gSXMgdGhpcyB3aGVyZSB3ZSYjMzk7dmUgc2VlbiB2dWxuZXJhYmlsaXRpZXMgaW4gb3RoZXIgcmVsYXRlZCBpbXBsZW1lbnRhdGlvbnM/IEl0JiMzOTtzIGJlZW4gYSB3aGlsZSwgYnV0IGxldCYjMzk7cyBzZWUgaG93IGBkc2FfbG9vcGAgaGFzIHBsYXllZCBhIHBhcnQgaW4gcG90ZW50aWFsIHNlY3VyaXR5IGNvbXByb21pc2VzLiBNYXliZSB0aGUgbG9vcCBpcyBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZGF0YSwgYXBwbHlpbmcgYSBoYXNoLCBvciBwZXJmb3JtaW5nIHRoZSBEU0EgbW9kdWxhciBleHBvbmVudGlhdGlvbi4gSXQmIzM5O3MgY3JpdGljYWwgdGhhdCB0aGUgdmFyaWFibGVzIGFyZSBjb3JyZWN0bHkgc2l6ZWQsIGFuZCBtZW1vcnkgaXMgaGFuZGxlZCBjYXJlZnVsbHkuCgpJIG5lZWQgdG8gcXVpY2tseSBicnVzaCB1cCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuY3Rpb24uIExldCYjMzk7cyBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IGEgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUuIEl0JiMzOTtzIHRpbWUgdG8gcmUtZXZhbHVhdGUgaXQgd2l0aGluIHRoaXMgcHJvdG9jb2wuIFBlcmhhcHMgdGhpcyBpcyB3aGVyZSB3ZSYjMzk7bGwgZmluZCB2dWxuZXJhYmlsaXRpZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwNTo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDU6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MzEKCQkJCQkJCW91dHB1dDogMTA3CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgbXY4OGU2eHh4YC4gVGhlIGtleSBoZXJlIGlzIHRoYXQgYG12ODhlNnh4eGAgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBNYXJ2ZWxsIHN3aXRjaGVzLiBUaGUgYGRzYV9sb29wYCBkcml2ZXIgaXMgaW52b2x2ZWQsIGJ1dCBpdCYjMzk7cyBqdXN0IGEgbW9jayBkcml2ZXIgYW5kIGl0IGRvZXNuJiMzOTt0IHV0aWxpemUgYG12ODhlNnh4eGAuIFRoZSBtb2RpZmljYXRpb25zIGFyZSAqc3RyaWN0bHkqIHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgY29kZSBpdHNlbGYuCgpUaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIE1hcnZlbGwgc3dpdGNoZXMgaW4gUUVNVS4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgZG9lc24mIzM5O3QgaGF2ZSBhIG1lY2hhbmlzbSB0byBtb2NrIHRoZSBNRElPIGJ1cyBvciB0aGUgc3BlY2lmaWMgc3dpdGNoIGhhcmR3YXJlIHRoaXMgZHJpdmVyIHJlbGllcyBvbi4gSSBjYW4mIzM5O3QgdGhpbmsgb2YgYW55IHdheSB0byBtYWtlIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBwcm9tcHQgcmVxdWlyZW1lbnRzIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLi4uIFllcywgaXQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggYWZmZWN0cyBjb2RlIHBhdGhzIHRoYXQgYXJlIHVucmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZTogaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoZSBsYWNrIG9mIGVtdWxhdGlvbiBpcyB0aGUgY3JpdGljYWwgZWxlbWVudC4KClRoaXMgcGF0Y2gsIGluIHBhcnRpY3VsYXIsIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQIHdpdGhpbiB0aGUgTWFydmVsbCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIHRoZSBwcmVzZW5jZSBvZiBhICpwaHlzaWNhbCogTWFydmVsbCBzd2l0Y2ggY29ubmVjdGVkIHZpYSBhbiBNRElPIGJ1cy4gU28gZ2l2ZW4gdGhpcyBsaW1pdGF0aW9uLCBJJiMzOTttIGNvbmZpZGVudCBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSYjMzk7bGwgcHJvY2VlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA1OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU0OjUxLjQ0NDY4NDAzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDk0NjY1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NDo1MS40NDQ2ODkxNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTcyMTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM3N2RlZmVlNGUzODBjNzlhMTAzY2Y0NmM0ZDZmZmEwM2E2YTU1ZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMDU6NTQ6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuQEAgLTI4LDYgKzI4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuYXJyX3RzX21vZGUgPSBvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRjaGlwLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VyZWdfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyk7XFxuIFxcdGlkcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2Vtc3RzKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5kZDUyZGU3MTM2MGI5MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuQEAgLTE4MCw2ICsxODAsMTQgQEAgc3RydWN0IG12ODhlNnh4eF9pbmZvIHtcXG4gXFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXFxuIFxcdCAqL1xcbiBcXHR1bnNpZ25lZCBpbnQgaW50ZXJuYWxfcGh5c19vZmZzZXQ7XFxuK1xcbitcXHQvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKTsgc2VlIHRoZSBBcnJUU01vZGUgZW5jb2RpbmcgaW5cXG4rXFx0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxcbitcXHQgKiBzd2l0Y2ggcmVnaXN0ZXJzOyBub24temVybyBlbWJlZHMgdGhlbSBpbiB0aGUgZnJhbWUsIGVpdGhlciBhcHBlbmRlZFxcbitcXHQgKiBhcyBhIHRyYWlsZXIgb3Igb3ZlcndyaXR0ZW4gYXQgdGhhdCBieXRlIG9mZnNldCBwYXN0IHRoZSBzdGFydCBvZiB0aGVcXG4rXFx0ICogUFRQIGNvbW1vbiBoZWFkZXIuXFxuK1xcdCAqL1xcbitcXHR1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGU7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XFxuQEAgLTQxOSw5ICs0MjcsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcXG4gXFx0LyogR1BJTyByZXNvdXJjZXMgKi9cXG4gXFx0dTggZ3Bpb19kYXRhWzJdO1xcbiBcXG4tXFx0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuXFxuLVxcdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXFxuK1xcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9ja1xcbitcXHQgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlXFxuK1xcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cXG4gXFx0ICovXFxuK1xcdHNwaW5sb2NrX3RcXHRcXHRwdHBfY2xvY2tfbG9jaztcXG4rXFx0dTY0XFx0XFx0XFx0dHN0YW1wX2N5Y2xlcztcXG4gXFx0c3RydWN0IGN5Y2xlY291bnRlclxcdHRzdGFtcF9jYztcXG4gXFx0c3RydWN0IHRpbWVjb3VudGVyXFx0dHN0YW1wX3RjO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0b3ZlcmZsb3dfd29yaztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXFxuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcXCJod3RzdGFtcC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVxcdTAwM2VjYikpXFxuIFxcbkBAIC0yNDUsNiArMjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcXG4gXFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cXHUwMDNlc2VxdWVuY2VfaWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXFxuK3tcXG4rXFx0c3RydWN0IHB0cF9oZWFkZXIgKmhkcjtcXG4rXFxuK1xcdCpucyA9IDA7XFxuK1xcbitcXHQvKiBBUFBFTkQgbWVhbnMgdGhlIHN3aXRjaCBhcHBlbmRlZCB0aGUgdGltZSBzdGFtcCBhcyBhIDQtYnl0ZSB0cmFpbGVyXFxuK1xcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxcbitcXHQgKiBvZmZzZXQgcGFzdCB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIGF0IHdoaWNoIHRoZSBzd2l0Y2hcXG4rXFx0ICogb3Zlcndyb3RlIHRoZSB0aW1lIHN0YW1wIGluIHBsYWNlIChlLmcuIHRoZSByZXNlcnZlZCBoZWFkZXIgYnl0ZXMpLlxcbitcXHQgKi9cXG4rXFx0aWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EIFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IDQpIHtcXG4rXFx0XFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gNCk7XFxuK1xcdFxcdGlmIChwc2tiX3RyaW1fcmNzdW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIDQpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFxcdTAwM2M9IHNpemVvZigqaGRyKSkge1xcbitcXHRcXHRpZiAoc2tiX2xpbmVhcml6ZShza2IpKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRcXHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xcbitcXHRcXHRpZiAoIWhkcilcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0XFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgYXJyX3RzX21vZGUpO1xcbitcXHRcXHRtZW1zZXQoKHU4ICopaGRyICsgYXJyX3RzX21vZGUsIDAsIDQpO1xcbitcXHRcXHRza2JfY2hlY2tzdW1fY29tcGxldGVfdW5zZXQoc2tiKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXFxuKyAqIGlzIG5lZWRlZCwgc28gdGhpcyBydW5zIGlubGluZSBvbiB0aGUgcmVjZWl2ZSBwYXRoIHJhdGhlciB0aGFuIGJlaW5nIGhhbmRlZFxcbisgKiB0byB0aGUgUFRQIHdvcmtlci5cXG4rICovXFxuK3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xcbitcXHR1NjQgbnM7XFxuK1xcbitcXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlLCBza2IsIFxcdTAwMjZucykpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4rXFxuK1xcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XFxuK1xcdG1lbXNldChzaHd0LCAwLCBzaXplb2YoKnNod3QpKTtcXG4rXFx0c2h3dC1cXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcXG5AQCAtMjg5LDkgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdGlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSBcXHUwMDI2XFx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XFxuIFxcdFxcdFxcdG5zID0gdGltZWhpIFxcdTAwM2NcXHUwMDNjIDE2IHwgdGltZWxvO1xcbiBcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdFxcdFxcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4gXFx0XFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4gXFx0XFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbiBcXHRcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG5AQCAtMzA4LDcgKzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFxuIFxcdHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXG4gXFx0aWYgKHNrYilcXG4gXFx0XFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuQEAgLTMxOSw5ICszNzQsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxcbiB7XFxuLVxcdHJldHVybiAoaGRyLVxcdTAwM2V0c210IFxcdTAwMjYgMHhmKSA9PSAzO1xcbitcXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuQEAgLTM0Myw3ICs0MDUsMTMgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gKi9cXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdG12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGlzX3BkZWxheV9tc2coaGRyKSlcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZTIsIHNrYik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSwgc2tiKTtcXG5AQCAtNDA5LDkgKzQ3Nyw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXG4gXFx0bWVtc2V0KFxcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XFxuIFxcdHRpbWVfcmF3ID0gKCh1MzIpZGVwYXJ0dXJlX2Jsb2NrWzJdIFxcdTAwM2NcXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcXG4tXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcXG4tXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHRpbWVfcmF3KTtcXG4gXFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XFxuIFxcbiBcXHRkZXZfZGJnKGNoaXAtXFx1MDAzZWRldixcXG5AQCAtNDU0LDcgKzUyMCw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFxcdTAwMjZwcy1cXHUwMDNlc3RhdGUpKVxcbiBcXHRcXHRcXHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcXG4gXFxuLVxcdFxcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcXG4rXFx0XFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xcbitcXHRcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKVxcbitcXHRcXHRcXHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xcbkBAIC01MjMsMTQgKzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4ge1xcbi1cXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbi1cXHRcXHRcXHRcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSkge1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VhcnJfdHNfbW9kZSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01ODQsMTEgKzY3NSwxNCBAQCBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cXG4tXFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbi1cXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZWFycl90c19tb2RlKSB7XFxuK1xcdFxcdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSBtZXNzYWdlcy4gKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuIFxcbiBcXHQvKiA4OEU2MzQxIGRldmljZXMgZGVmYXVsdCB0byB0aW1lc3RhbXBpbmcgYXQgdGhlIFBIWSwgYnV0IHRoaXMgaGFzXFxuIFxcdCAqIGEgaGFyZHdhcmUgaXNzdWUgdGhhdCByZXN1bHRzIGluIHVucmVsaWFibGUgdGltZXN0YW1wcy4gRm9yY2VcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbkBAIC02OCw2ICs2OCwyMCBAQFxcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cXHRcXHQweDAwMDJcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXFx0XFx0MHgwMDAxXFxuIFxcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXFxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcXG4rICogZnJhbWVzLlxcbisgKiAgIDB4MDAgICAgICAgIGZyYW1lIG1vZGlmaWNhdGlvbiBkaXNhYmxlZCAodGltZSBzdGFtcCByZWFkIGZyb20gcmVnaXN0ZXJzKVxcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXFxuKyAqICAgICAgICAgICAgICAgZ3Jvd2luZyB0aGUgZnJhbWUgYnkgZm91ciBieXRlc1xcbisgKiAgIDB4MDQuLjB4RUYgIG92ZXJ3cml0ZSB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgaW4gcGxhY2UsIHRoYXQgbWFueSBieXRlcyBwYXN0XFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxcbisgKiAgICAgICAgICAgICAgIChvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKSB0YXJnZXRzIHRoZSByZXNlcnZlZFxcbisgKiAgICAgICAgICAgICAgIGJ5dGVzIG9mIHRoZSBoZWFkZXIpXFxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfTU9ERV9BUFBFTkRcXHRcXHQweDAxXFxuK1xcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0xFRF9DRkdcXHQweDAzXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xcbmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xcbkBAIC0yMzEsMTUgKzIzMSwzNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfdGFpX2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp1Z2x5KVxcbiBcXG4gXFx0LyogV2Ugb25seSBoYXZlIG9uZSB0aW1lc3RhbXBpbmcgY2hhbm5lbC4gKi9cXG4gXFx0ZXYuaW5kZXggPSAwO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuLVxcdGV2LnRpbWVzdGFtcCA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XFxuLVxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbitcXHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcXG4gXFxuIFxcdHB0cF9jbG9ja19ldmVudChjaGlwLVxcdTAwM2VwdHBfY2xvY2ssIFxcdTAwMjZldik7XFxuIG91dDpcXG4gXFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZjaGlwLVxcdTAwM2V0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpO1xcbiB9XFxuIFxcbisvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXFxuKyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcXG4rICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXFxuKyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cXG4rICovXFxuK3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcHRwX29wcztcXG4rXFxuK1xcdGlmIChwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKVxcbitcXHRcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cXHUwMDNlY2xvY2tfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjKTtcXG4rfVxcbitcXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXFxuK3tcXG4rXFx0dTY0IG5zO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgY3ljbGVzKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuK1xcdHJldHVybiBucztcXG4rfVxcbitcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xcbkBAIC0yNTgsOSArMjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXFxuIFxcdGRpZmYgPSBkaXZfdTY0KGFkaiwgY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19tdWx0X2RlbSk7XFxuIFxcbiBcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuIFxcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFx0dGltZWNvdW50ZXJfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjKTtcXG4gXFx0Y2hpcC1cXHUwMDNldHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICsgZGlmZjtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG5AQCAtMjcxLDggKzI5NiwxNiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbiB7XFxuIFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XFxuIFxcbitcXHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXFxuK1xcdCAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5XFxuK1xcdCAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC5cXG4rXFx0ICovXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHR0aW1lY291bnRlcl9hZGp0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTI4NSw3ICszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuIFxcdHU2NCBucztcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFx0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHRucyA9IHRpbWVjb3VudGVyX3JlYWQoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90Yyk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4gXFxuIFxcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbkBAIC0zMDIsNyArMzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbiBcXHRucyA9IHRpbWVzcGVjNjRfdG9fbnModHMpO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdHRpbWVjb3VudGVyX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF9jYywgbnMpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDQ0LDE0ICs0ODcsMTIgQEAgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzIG12ODhlNjM5MF9wdHBfb3BzID0ge1xcbiBcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXFxuIH07XFxuIFxcbisvKiBSZXR1cm4gdGhlIHZhbHVlIG1vc3QgcmVjZW50bHkgZmV0Y2hlZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKClcXG4rICogcmF0aGVyIHRoYW4gcmVhZGluZyB0aGUgaGFyZHdhcmUgb3ZlciBNRElPLlxcbisgKi9cXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXFxuIHtcXG4tXFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XFxuLVxcbi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKVxcbi1cXHRcXHRyZXR1cm4gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKGNjKTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXFx1MDAzZXRzdGFtcF9jeWNsZXM7XFxuIH1cXG4gXFxuIC8qIFdpdGggYSAyNTBNSHogaW5wdXQgY2xvY2ssIHRoZSAzMi1iaXQgdGltZXN0YW1wIGNvdW50ZXIgb3ZlcmZsb3dzIGluIH4xNy4yXFxuQEAgLTQ4Niw2ICs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2MubXVsdFxcdD0gY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19tdWx0O1xcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2Muc2hpZnRcXHQ9IGNoaXAtXFx1MDAzZWNjX2NvZWZmcy1cXHUwMDNlY2Nfc2hpZnQ7XFxuIFxcbitcXHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cXG4rXFx0ICogVGhlIGNhbGxlciBob2xkcyByZWdfbG9jaywgYW5kIG5vdGhpbmcgY2FuIHJlYWNoIHRoZSBQVFAgY2xvY2tcXG4rXFx0ICogdW50aWwgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkgYmVsb3csIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4gXFx0dGltZWNvdW50ZXJfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjLFxcbiBcXHRcXHRcXHQga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSkpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmhcXG5pbmRleCA5NWJkZGRiMGJmMzlmOC4uNDQ3MThlMTIwZGUyMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmhcXG5AQCAtNjgsNiArNjgsNyBAQFxcbiBcXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcXG4gdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpO1xcbiBcXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCAgICAgIHB0cF9jbG9ja19pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NDo1MS44ODUwNzkyNDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjU0MjY0MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbXY4OGU2eHh4IERTQSBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcnJpdmFsIHRpbWUgc3RhbXBzIGZvciBQVFAuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM3N2RlZmVlNGUzODBjNzlhMTAzY2Y0NmM0ZDZmZmEwM2E2YTU1ZDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAwNTo1NDo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbmluZGV4IDgwYjg3N2M3NDUxM2Q2Li42MjRjZGY2YzgwYTY3MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuQEAgLTI4LDYgKzI4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2VcbkBAIC02MzcwLDYgKzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbitcdFx0LmFycl90c19tb2RlID0gb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMiksXG4gXHR9LFxuIFxuIFx0W01WODhFNjM1MF0gPSB7XG5AQCAtNjQ0Nyw2ICs2NDQ5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcbiBcdFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcbiBcdFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcbiBcdFx0Lm9wcyA9IFx1MDAyNm12ODhlNjM1Ml9vcHMsXG4rXHRcdC5hcnJfdHNfbW9kZSA9IG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuQEAgLTY2MzUsNiArNjYzOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKm12ODhlNnh4eF9hbGxvY19jaGlwKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGNoaXAtXHUwMDNlZGV2ID0gZGV2O1xuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXJlZ19sb2NrKTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2VtZGlvcyk7XG4gXHRpZHJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXBvbGljaWVzKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoaXAtXHUwMDNlbXN0cyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmRkNTJkZTcxMzYwYjkwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5AQCAtMTgwLDYgKzE4MCwxNCBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xuIFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXG4gXHQgKi9cbiBcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcbitcbitcdC8qIEFycml2YWwgVGltZSBTdGFtcCBNb2RlIChBcnJUU01vZGUpOyBzZWUgdGhlIEFyclRTTW9kZSBlbmNvZGluZyBpblxuK1x0ICogaHd0c3RhbXAuaC4gWmVybyAodGhlIGRlZmF1bHQpIGxlYXZlcyBhcnJpdmFsIHRpbWUgc3RhbXBzIGluIHRoZVxuK1x0ICogc3dpdGNoIHJlZ2lzdGVyczsgbm9uLXplcm8gZW1iZWRzIHRoZW0gaW4gdGhlIGZyYW1lLCBlaXRoZXIgYXBwZW5kZWRcbitcdCAqIGFzIGEgdHJhaWxlciBvciBvdmVyd3JpdHRlbiBhdCB0aGF0IGJ5dGUgb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZVxuK1x0ICogUFRQIGNvbW1vbiBoZWFkZXIuXG4rXHQgKi9cbitcdHVuc2lnbmVkIGludCBhcnJfdHNfbW9kZTtcbiB9O1xuIFxuIHN0cnVjdCBtdjg4ZTZ4eHhfYXR1X2VudHJ5IHtcbkBAIC00MTksOSArNDI3LDEyIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCB7XG4gXHQvKiBHUElPIHJlc291cmNlcyAqL1xuIFx0dTggZ3Bpb19kYXRhWzJdO1xuIFxuLVx0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuXG4tXHQgKiByZWdfbG9jayBtdXN0IGJlIGhlbGQgZm9yIGFueSBvcGVyYXRpb24gdGhhdCByZWFkKClzLlxuK1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4rXHQgKiBwcm90ZWN0cyB0c3RhbXBfY2MgYW5kIHRzdGFtcF90Yy4gdHN0YW1wX2N5Y2xlcyBjYWNoZXMgdGhlXG4rXHQgKiByZXN1bHQgbW9zdCByZWNlbnRseSByZXR1cm5lZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKCkuXG4gXHQgKi9cbitcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4rXHR1NjRcdFx0XHR0c3RhbXBfY3ljbGVzO1xuIFx0c3RydWN0IGN5Y2xlY291bnRlclx0dHN0YW1wX2NjO1xuIFx0c3RydWN0IHRpbWVjb3VudGVyXHR0c3RhbXBfdGM7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrXHRvdmVyZmxvd193b3JrO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjcxNmNiYzJhODY5MjIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJod3RzdGFtcC5oXCJcbiAjaW5jbHVkZSBcInB0cC5oXCJcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXHUwMDNlXG4gXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVx1MDAzZWNiKSlcbiBcbkBAIC0yNDUsNiArMjQ2LDYzIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcbiBcdHJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItXHUwMDNlc2VxdWVuY2VfaWQpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyh1bnNpZ25lZCBpbnQgYXJyX3RzX21vZGUsXG4rXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTY0ICpucylcbit7XG4rXHRzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyO1xuK1xuK1x0Km5zID0gMDtcbitcbitcdC8qIEFQUEVORCBtZWFucyB0aGUgc3dpdGNoIGFwcGVuZGVkIHRoZSB0aW1lIHN0YW1wIGFzIGEgNC1ieXRlIHRyYWlsZXJcbitcdCAqIChub3QgYWxsIHN3aXRjaGVzIHN1cHBvcnQgdGhpcykuIEFueSBvdGhlciBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZVxuK1x0ICogb2Zmc2V0IHBhc3QgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciBhdCB3aGljaCB0aGUgc3dpdGNoXG4rXHQgKiBvdmVyd3JvdGUgdGhlIHRpbWUgc3RhbXAgaW4gcGxhY2UgKGUuZy4gdGhlIHJlc2VydmVkIGhlYWRlciBieXRlcykuXG4rXHQgKi9cbitcdGlmIChhcnJfdHNfbW9kZSA9PSBNVjg4RTZYWFhfUFRQX0FSUl9UU19NT0RFX0FQUEVORCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IDQpIHtcbitcdFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIDQpO1xuK1x0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH0gZWxzZSBpZiAoYXJyX3RzX21vZGUgKyA0IFx1MDAzYz0gc2l6ZW9mKCpoZHIpKSB7XG4rXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuK1x0XHRpZiAoIWhkcilcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRcdCpucyA9ICh1NjQpZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciArIGFycl90c19tb2RlKTtcbitcdFx0bWVtc2V0KCh1OCAqKWhkciArIGFycl90c19tb2RlLCAwLCA0KTtcbitcdFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4rXHR9IGVsc2Uge1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXG4rICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4rICogdG8gdGhlIFBUUCB3b3JrZXIuXG4rICovXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuK1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0O1xuK1x0dTY0IG5zO1xuK1xuK1x0aWYgKCFwYXJzZV9lbWJlZGRlZF90cyhjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUsIHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4rXG4rXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuK1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuK1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHQgICAgICAgc3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyxcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcbkBAIC0yODksOSArMzQ3LDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0aWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpIFx1MDAyNlx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XG4gXHRcdFx0bnMgPSB0aW1laGkgXHUwMDNjXHUwMDNjIDE2IHwgdGltZWxvO1xuIFxuLVx0XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdFx0XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBucyk7XG4tXHRcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4rXHRcdFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpO1xuIFx0XHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4gXHRcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuIFx0XHRcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG5AQCAtMzA4LDcgKzM2NCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXG4gXHRza2IgPSBza2JfZGVxdWV1ZShcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG4tXG4gXHRpZiAoc2tiKVxuIFx0XHRtdjg4ZTZ4eHhfZ2V0X3J4dHMoY2hpcCwgcHMsIHNrYiwgcHRwX29wcy1cdTAwM2VhcnIwX3N0c19yZWcsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSk7XG5AQCAtMzE5LDkgKzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0XHQgICBcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuIHtcbi1cdHJldHVybiAoaGRyLVx1MDAzZXRzbXQgXHUwMDI2IDB4ZikgPT0gMztcbitcdHN3aXRjaCAocHRwX2dldF9tc2d0eXBlKGhkciwgUFRQX0NMQVNTX1YyKSkge1xuK1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxuK1x0XHRmYWxsdGhyb3VnaDtcbitcdGNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFU1A6XG4rXHRcdHJldHVybiB0cnVlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIH1cbiBcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5AQCAtMzQzLDcgKzQwNSwxMyBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbitcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gKi9cbitcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0bXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0aWYgKGlzX3BkZWxheV9tc2coaGRyKSlcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyLCBza2IpO1xuIFx0ZWxzZVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZSwgc2tiKTtcbkBAIC00MDksOSArNDc3LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXG4gXHRtZW1zZXQoXHUwMDI2c2hod3RzdGFtcHMsIDAsIHNpemVvZihzaGh3dHN0YW1wcykpO1xuIFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXHUwMDNjXHUwMDNjIDE2KSB8IGRlcGFydHVyZV9ibG9ja1sxXTtcbi1cdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbi1cdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHRpbWVfcmF3KTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xuIFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4gXG4gXHRkZXZfZGJnKGNoaXAtXHUwMDNlZGV2LFxuQEAgLTQ1NCw3ICs1MjAsOSBAQCBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKVxuIFx0XHRpZiAodGVzdF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX1RYX0lOX1BST0dSRVNTLCBcdTAwMjZwcy1cdTAwM2VzdGF0ZSkpXG4gXHRcdFx0cmVzdGFydCB8PSBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXG4tXHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbitcdFx0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBhcmUgYXBwbGllZCBvbiB0aGUgcmVjZWl2ZSBwYXRoLiAqL1xuK1x0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSlcbitcdFx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcbkBAIC01MjMsMTQgKzU5MSwzNyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIHtcbi1cdHJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsXG4tXHRcdFx0XHRcdE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlYXJyX3RzX21vZGUpIHtcbitcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuK1x0XHRcdFx0XHQgICAgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWFycl90c19tb2RlIFx1MDAzY1x1MDAzYyA4KTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuK1x0XHRcdFx0ICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTg0LDExICs2NzUsMTQgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqL1xuLVx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxuLVx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbi1cdGlmIChlcnIpXG4tXHRcdHJldHVybiBlcnI7XG4rXHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VhcnJfdHNfbW9kZSkge1xuK1x0XHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgbWVzc2FnZXMuICovXG4rXHRcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbitcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHxcbitcdFx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0fVxuIFxuIFx0LyogODhFNjM0MSBkZXZpY2VzIGRlZmF1bHQgdG8gdGltZXN0YW1waW5nIGF0IHRoZSBQSFksIGJ1dCB0aGlzIGhhc1xuIFx0ICogYSBoYXJkd2FyZSBpc3N1ZSB0aGF0IHJlc3VsdHMgaW4gdW5yZWxpYWJsZSB0aW1lc3RhbXBzLiBGb3JjZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLmMyNWY1MzkyM2U3Njg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC02OCw2ICs2OCwyMCBAQFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTlx0XHQweDAwMDJcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU5cdFx0MHgwMDAxXG4gXG4rLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZVxuKyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbisgKiBmcmFtZXMuXG4rICogICAweDAwICAgICAgICBmcmFtZSBtb2RpZmljYXRpb24gZGlzYWJsZWQgKHRpbWUgc3RhbXAgcmVhZCBmcm9tIHJlZ2lzdGVycylcbisgKiAgIDB4MDEgICAgICAgIGFwcGVuZCB0aGUgNC1ieXRlIHRpbWUgc3RhbXAgYXQgdGhlIGVuZCBvZiB0aGUgZnJhbWUsXG4rICogICAgICAgICAgICAgICBncm93aW5nIHRoZSBmcmFtZSBieSBmb3VyIGJ5dGVzXG4rICogICAweDA0Li4weEVGICBvdmVyd3JpdGUgdGhlIDQtYnl0ZSB0aW1lIHN0YW1wIGluIHBsYWNlLCB0aGF0IG1hbnkgYnl0ZXMgcGFzdFxuKyAqICAgICAgICAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2l0aG91dCBncm93aW5nIHRoZSBmcmFtZVxuKyAqICAgICAgICAgICAgICAgKG9mZnNldG9mKHN0cnVjdCBwdHBfaGVhZGVyLCByZXNlcnZlZDIpIHRhcmdldHMgdGhlIHJlc2VydmVkXG4rICogICAgICAgICAgICAgICBieXRlcyBvZiB0aGUgaGVhZGVyKVxuKyAqICAgb3RoZXJzICAgICAgcmVzZXJ2ZWRcbisgKi9cbisjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EXHRcdDB4MDFcbitcbiAvKiBPZmZzZXQgMHgwMzogUFRQIExFRCBDb25maWd1cmF0aW9uICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1x0MHgwM1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSlcbiBcbiBcdC8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovXG4gXHRldi5pbmRleCA9IDA7XG4tXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4tXHRldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgcmF3X3RzKTtcbi1cdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0ZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7XG4gXG4gXHRwdHBfY2xvY2tfZXZlbnQoY2hpcC1cdTAwM2VwdHBfY2xvY2ssIFx1MDAyNmV2KTtcbiBvdXQ6XG4gXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2Y2hpcC1cdTAwM2V0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpO1xuIH1cbiBcbisvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4rICogcmVhZCBjYW5ub3QgYWNxdWlyZSB0aGUgcmVnaXN0ZXIgbG9jayB3aGlsc3QgaG9sZGluZyBwdHBfY2xvY2tfbG9ja1xuKyAqIGJlY2F1c2UgTURJTyByZWFkcyBjYW4gc2xlZXAuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHJlZ19sb2NrLCB3aGljaFxuKyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbisgKi9cbitzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4rXG4rXHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuK1x0XHRjaGlwLVx1MDAzZXRzdGFtcF9jeWNsZXMgPSBwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MpO1xuK31cbitcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcylcbit7XG4rXHR1NjQgbnM7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4rXHRyZXR1cm4gbnM7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbkBAIC0yNTgsOSArMjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjKTtcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICsgZGlmZjtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG5AQCAtMjcxLDggKzI5NiwxNiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuIHtcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XG4gXG4rXHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4rXHQgKiB0aGlzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMsIHdoaWNoIGRyb3AgaXQgb25seVxuK1x0ICogYWZ0ZXIgdGhlaXIgaGFyZHdhcmUgcmVhZCBoYXMgY29tcGxldGVkLlxuK1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9hZGp0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBkZWx0YSk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbitcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMjg1LDcgKzMxOCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfZ2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdHU2NCBucztcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRucyA9IHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdCp0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xuQEAgLTMwMiw3ICszNDAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4gXHRucyA9IHRpbWVzcGVjNjRfdG9fbnModHMpO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuK1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjLCBucyk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbitcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNDQ0LDE0ICs0ODcsMTIgQEAgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzIG12ODhlNjM5MF9wdHBfb3BzID0ge1xuIFx0XHQoMSBcdTAwM2NcdTAwM2MgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLFxuIH07XG4gXG4rLyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4rICogcmF0aGVyIHRoYW4gcmVhZGluZyB0aGUgaGFyZHdhcmUgb3ZlciBNRElPLlxuKyAqL1xuIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKVxuIHtcbi1cdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpO1xuLVxuLVx0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuLVx0XHRyZXR1cm4gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQoY2MpO1xuLVxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiArNTI3LDEyIEBAIGludCBtdjg4ZTZ4eHhfcHRwX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLm11bHRcdD0gY2hpcC1cdTAwM2VjY19jb2VmZnMtXHUwMDNlY2NfbXVsdDtcbiBcdGNoaXAtXHUwMDNldHN0YW1wX2NjLnNoaWZ0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX3NoaWZ0O1xuIFxuK1x0LyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuXG4rXHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuK1x0ICogdW50aWwgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkgYmVsb3csIHNvIG5vIGxvY2tpbmcgaXMgbmVlZGVkIGhlcmUuXG4rXHQgKi9cbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4gXHR0aW1lY291bnRlcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF9jYyxcbiBcdFx0XHQga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSkpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG5pbmRleCA5NWJkZGRiMGJmMzlmOC4uNDQ3MThlMTIwZGUyMGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXG5AQCAtNjgsNiArNjgsNyBAQFxuIFxuIGludCBtdjg4ZTZ4eHhfcHRwX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4gdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU0OjUxLjg4NTA4MDY0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2Mzg3MDI4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IG12ODhlNnh4eCBQVFAgVGltZXN0YW1waW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdjg4ZTZ4eHhgIERTQSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgYW5kIGhhcmR3YXJlIHRpbWVzdGFtcGluZy4gIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGFycml2YWwgdGltZXN0YW1wcyAoYGFycl90c19tb2RlYCksIHdoaWNoIHNvdW5kcyBwcm9taXNpbmcgZnJvbSBhIHBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLiAgSXQgbG9va3MgbGlrZSB0aGV5IGFyZSByZWFkaW5nIHRpbWVzdGFtcHMgZGlyZWN0bHkgZnJvbSB0aGUgcGFja2V0IHBheWxvYWQvdHJhaWxlciB0byBieXBhc3Mgc3dpdGNoIHJlZ2lzdGVyIHJlYWRzLCB3aGljaCBzaG91bGQgYmUgZmFzdGVyLCBhdm9pZGluZyB0aG9zZSBzbG93IE1ESU8gYWNjZXNzZXMsIHdoaWNoIGlzIGdvb2QuICBJIHNlZSB0aGUgY29kZSB0b3VjaGVzIHNldmVyYWwgY29yZSBmaWxlczogYGNoaXAuY2AsIGBjaGlwLmhgLCBgaHd0c3RhbXAuY2AsIGBod3RzdGFtcC5oYCwgYW5kIGBwdHAuY2AsIGBwdHAuaGAuIFRoZXkndmUgYWxzbyBpbXBsZW1lbnRlZCBhIGBwdHBfY2xvY2tfbG9ja2Agc3BpbmxvY2sgZm9yIHByb3RlY3RpbmcgdGltZXN0YW1waW5nIGRhdGEsIHdoaWNoIGlzIGFwcHJvcHJpYXRlLiBUaGlzIGlzIGNoYW5naW5nIGZ1bmRhbWVudGFsIHBhcnNpbmcgYW5kIHRpbWVzdGFtcGluZyBsb2dpYyB3aXRoaW4gdGhlIGRyaXZlcjsgZGVmaW5pdGVseSBhIHBvdGVudGlhbCBhcmVhIGZvciBidWdzLlxuXG5UaGUgY29yZSBvZiB0aGlzIGlzIGluIGBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcGAgYW5kIGBwYXJzZV9lbWJlZGRlZF90c2AuIFRoZSBsYXR0ZXIsIGluIHBhcnRpY3VsYXIsIGxvb2tzIGludGVyZXN0aW5nLCBhcyBpdCdzIGhhbmRsaW5nIHBhY2tldCBkYXRhLiBJIHNlZSB0aGV5IGhhdmUgYSBibG9jayBvZiBjb2RlIHRoZXJlIHRoYXQgbW9kaWZpZXMgdGhlIGBza2JgIHdoaWNoIGxvb2tzIGxpa2U6XG5cbmBgYGNcblx0aWYgKGFycl90c19tb2RlID09IE1WODhFNlhYWF9QVFBfQVJSX1RTX01PREVfQVBQRU5EIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlbGVuIFx1MDAzZT0gNCkge1xuXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cblx0XHQqbnMgPSAodTY0KWdldF91bmFsaWduZWRfYmUzMihza2JfdGFpbF9wb2ludGVyKHNrYikgLSA0KTtcblx0XHRpZiAocHNrYl90cmltX3Jjc3VtKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGVsc2UgaWYgKGFycl90c19tb2RlICsgNCBcdTAwM2M9IHNpemVvZigqaGRyKSkge1xuXHRcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cblx0XHRoZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpO1xuXHRcdGlmICghaGRyKVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXG5cdFx0Km5zID0gKHU2NClnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgYXJyX3RzX21vZGUpO1xuXHRcdG1lbXNldCgodTggKiloZHIgKyBhcnJfdHNfbW9kZSwgMCwgNCk7XG5cdFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG5cdH1cbmBgYFxuXG5UaGlzIGlzIGRlZmluaXRlbHkgcGFja2V0IHBhcnNpbmcgbG9naWMuIEl0IG1vZGlmaWVzIHRoZSBgc2tiYC4gSWYgdGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBpbmplY3RlZCB3aXRoIGNyYWZ0ZWQgcGFja2V0cywgdGhpcyBpcyBwcmltZSBmdXp6ZXIgdGVycml0b3J5ISBNeSBjb25jZXJuIGlzIHRoYXQsIGFzIGEgRFNBIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoLCBpdCdzIHR5cGljYWxseSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUgYW5kIGFuIE1ESU8gYnVzLiBDYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFN5emthbGxlciB0eXBpY2FsbHkgc3RydWdnbGVzIHdpdGggdGhpcy4gRFNBIGRyaXZlcnMgYXJlIG9mdGVuIHRyaWNreSBiZWNhdXNlIHRoZXkgbmVlZCBhIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwLiBTb21ldGltZXMgbW9jayBkcml2ZXJzIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IHdvcmssIGJ1dCBpdCdzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGNhc2UuXG5cblRoZSBjb2RlIGlzIHJlYWNoZWQgdGhyb3VnaCBgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXBgLCB3aGljaCBpcyB0aGUgYHBvcnRfcnh0c3RhbXBgIGNhbGxiYWNrIGZvciB0aGUgRFNBIHN3aXRjaCwgdHJpZ2dlcmVkIGJ5IHRoZSBuZXR3b3JrIHN0YWNrLiAgU28sIGlmIHdlIGNhbiBpbnN0YW50aWF0ZSBhIERTQSBzd2l0Y2ggc29tZWhvdywgd2UgaGF2ZSBhIGNoYW5jZS4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0aGlzIGBtdjg4ZTZ4eHhgIGRyaXZlciBsb2FkZWQgYW5kIHByb2JlZC4gSXQgdXNlcyBhbiBNRElPIGJ1cywgYW5kIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gaGVscCB0aGVyZSB0aHJvdWdoIGl0cyBJMkMvTURJTyBmdXp6aW5nIGNhcGFiaWxpdGllcywgYnV0IGl0J3Mgbm90IHRoZSBtb3N0IHN0cmFpZ2h0Zm9yd2FyZCBwYXRoLiBJIGRvbid0IHNlZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTWFydmVsbCBzd2l0Y2hlcy5cblxuQnV0LCBnaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zIHN0YXRlIHRvIGFzc3VtZSBpdCAqaXMqIHJlYWNoYWJsZSBpZiBpdCdzIGNvcmUgZHJpdmVyIGxvZ2ljIHBhcnNpbmcgcGFja2V0cywgYW5kIGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIG5ldHdvcmsgZHJpdmVyIHRoYXQgbW9kaWZpZXMgc2tiLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz10cnVlYC4gRXZlbiBpZiBpdCdzIGRpZmZpY3VsdCwgbGV0J3MgYXNzdW1lIHNvbWVvbmUgY291bGQgd3JpdGUgYSBtb2NrIG9yIHVzZSBkZXZpY2UgdHJlZS4gIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgY2FuIGJlIGxvYWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4NCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NTowOC4yNzIxMTAxMTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MDcxODU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNjcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMy0tLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbD0xOT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvbWFydmVsbCxtdjg4ZTZ4eHgueWFtbC05NC0gICAgICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw6OTU6ICAgICAgICBjb25zdDogbWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtOTYtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sPTEwOT1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMjQwLSAgICAgICAgICAgIG1kaW8tZXh0ZXJuYWwge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWw6MjQxOiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21hcnZlbGwsbXY4OGU2eHh4LnlhbWwtMjQyLSAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sPTEyPWRlc2NyaXB0aW9uOiB8K1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLG12dXNiLnlhbWwtMTgtICBoYXZpbmcgYSBkZXZpY2UgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGV2aWNlLiBCdXQgaW4gb3JkZXIgdG8gdXNlIGl0IHdpdGhcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwsbXZ1c2IueWFtbDoxOTogIHRoZSBtdjg4ZTZ4eHggZHJpdmVyLCB5b3UgbmVlZCBhIGRldmljZSB0cmVlIG5vZGUgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIHN3aXRjaFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxtdnVzYi55YW1sLTIwLSAgZGVmaW5pdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL2luZGV4LnJzdD03Nz1wYXJhbWV0ZXJzLCBpbmZvIHZlcnNpb25zLCBhbmQgb3RoZXIgZmVhdHVyZXMgaXQgc3VwcG9ydHMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3QtOTUtICAgbWx4c3dcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9pbmRleC5yc3Q6OTY6ICAgbXY4OGU2eHh4XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvaW5kZXgucnN0LTk3LSAgIG5ldGRldnNpbVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC0zLT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0OjQ6bXY4OGU2eHh4IGRldmxpbmsgc3VwcG9ydFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtNS09PT09PT09PT09PT09PT09PT09PT09PT09XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdC02LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6NzpUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2bGluayBmZWF0dXJlcyBpbXBsZW1lbnRlZCBieSB0aGUgYGBtdjg4ZTZ4eHhgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3QtOC1kZXZpY2UgZHJpdmVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmxpbmsvbXY4OGU2eHh4LnJzdD0xMD1QYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0LTEyLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL212ODhlNnh4eC5yc3Q6MTM6VGhlIGBgbXY4OGU2eHh4YGAgZHJpdmVyIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBkcml2ZXItc3BlY2lmaWMgcGFyYW1ldGVycy5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0LTE0LVxcbi0tXFxuTUFJTlRBSU5FUlM9MTU1OTU9RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNjA2MC55YW1sXFxuTUFJTlRBSU5FUlM6MTU1OTY6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sXFxuTUFJTlRBSU5FUlM6MTU1OTc6RjpcXHREb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9tdjg4ZTZ4eHgucnN0XFxuTUFJTlRBSU5FUlM6MTU1OTg6RjpcXHRkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1xcbk1BSU5UQUlORVJTOjE1NTk5OkY6XFx0aW5jbHVkZS9saW51eC9kc2EvbXY4OGU2eHh4LmhcXG5NQUlOVEFJTkVSUzoxNTYwMDpGOlxcdGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcbk1BSU5UQUlORVJTLTE1NjAxLVxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzPTEyNz1cXHRcXHRtZGlvLWV4dGVybmFsIHtcXG5hcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zODEtbmV0Z2Vhci1nczExMGVteC5kdHM6MTI4OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwibWFydmVsbCxtdjg4ZTZ4eHgtbWRpby1leHRlcm5hbFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEtMzgxLW5ldGdlYXItZ3MxMTBlbXguZHRzLTEyOS1cXHRcXHRcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi92ZjYxMC16aWktc3NtYi1kdHUuZHRzPTE3MD1cXHRcXHRcXHRtZGlvLWV4dGVybmFsIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvdmYvdmY2MTAtemlpLXNzbWItZHR1LmR0czoxNzE6XFx0XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJtYXJ2ZWxsLG12ODhlNnh4eC1tZGlvLWV4dGVybmFsXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvdmYvdmY2MTAtemlpLXNzbWItZHR1LmR0cy0xNzItXFx0XFx0XFx0XFx0I2FkZHJlc3MtY2VsbHMgPSBcXHUwMDNjMVxcdTAwM2U7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHM9MjkyPVxcdFxcdFxcdHN3aXRjaDBwaHk0OiBldGhlcm5ldC1waHlANCB7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvY245MTMwLWNmLXByby5kdHMtMzAyLVxcdFxcdCAqIG1kaW8tZXh0ZXJuYWwge1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0czozMDM6XFx0XFx0ICpcXHRjb21wYXRpYmxlID0gXFxcIm1hcnZlbGwsbXY4OGU2eHh4LW1kaW8tZXh0ZXJuYWxcXFwiO1xcbmFyY2gvYXJtNjQvYm9vdC9kdHMvbWFydmVsbC9jbjkxMzAtY2YtcHJvLmR0cy0zMDQtXFx0XFx0ICpcXHQjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG12ODhlNnh4eC9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBteGw4NjJ4eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MDpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwOmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTEtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDItXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAzOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjc6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzMDpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMS1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM0OnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzY6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOC1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDAtXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDcte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0ODpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDktXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU2OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ny1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MjpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4ODpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg5OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkxLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MjpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTMtdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDQ6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwODpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTE6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE4OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIyMDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjEtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM2LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzc6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MzpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ1OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OS1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MjpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYzLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY2LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzI6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3NDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODQ6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MjpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk0OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NzpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA0LVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDU6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA2LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTI6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE1OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIxOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjUtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjY6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzMtXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzNDpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2My1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjQ6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ny1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY4OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzAtXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcyLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzczOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3ODpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MzpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkzOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5NC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk3LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk4OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDEwOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE3OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQyMDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMS1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDI6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDMtXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzAtcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NzpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4NDpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5Mi1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTM6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNj1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTY6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMzpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyNC1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM1OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDk6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTUwLVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY0OnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2ODpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OS1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzQ6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMzpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjY6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNy1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzI6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDQ6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDk6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU3LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjYtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3My1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzQ6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk3OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDE6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA3LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwODpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzIwOlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjQ6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczMDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDY6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUxLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njg6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY5LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODEyOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OS17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUwOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1My1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTQ6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ny1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU1OjEwLjEzMjgzNDk3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Mzg2MDkxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG12ODhlNnh4eGAgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyLCBhIERTQSBkcml2ZXIsIGFuZCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzdXJlLCBtYXliZSB3aXRoIGEgZHVtbXkgTURJTyBidXMgYW5kIGEgZGV2aWNlIHRyZWUgb3ZlcmxheSwgaXQncyBwb3NzaWJsZS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFN5emthbGxlciwgd2hpY2ggSSdtIHJlbHlpbmcgb24sIGRvZXNuJ3QgaGF2ZSBhIG1vY2sgZm9yIGBtdjg4ZTZ4eHhgIHNwZWNpZmljYWxseS4gVGhlIGluc3RydWN0aW9ucyBJIGhhdmUgc2F5IGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgYXJlIHRvIGJlIGlnbm9yZWQsIHBhcnRpY3VsYXJseSB0aG9zZSB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuXG5cbklzIHRoaXMgb25lIG9mIHRob3NlIHNpdHVhdGlvbnM/IEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlJ3MgYW55IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHRoYXQgY291bGQgZmFjaWxpdGF0ZSB0aGlzLiBObyBvYnZpb3VzIGNhbmRpZGF0ZSBqdW1wcyBvdXQuIEkgdHJpZWQgdG8gdGhpbmsgb2Ygd2F5cyB0byB0cmlnZ2VyIGl0IHVzaW5nIFN5emthbGxlcidzIGV4aXN0aW5nIGZlYXR1cmVzLCBsaWtlIGBzeXpfZ2VuZXRsaW5rYCwgYnV0IHRoYXQgd29uJ3Qgd29yayBmb3IgYSBoYXJkd2FyZSBkcml2ZXIuIFRoZW4gSSBjb25zaWRlcmVkIE1ESU8gc29mdHdhcmUgZW11bGF0aW9uLiBEb2VzIHRoZSBrZXJuZWwgaGF2ZSBhbnl0aGluZyBsaWtlIHRoYXQsIGxpa2UgYG1kaW8tbW9ja3VwYCBvciBgbWRpby1ncGlvYD8gQWgsIEkgdGhvdWdodCB0aGVyZSB3YXMgYG1kaW8tbW9ja3VwYCwgYnV0IG5vcGUsIGl0IGRvZXNuJ3QgZXhpc3QuIFRoZXJlJ3MgYGRzYS1sb29wYCwgd2hpY2ggaXMgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCB0aGF0J3Mgbm90IHRoZSBzYW1lIHRoaW5nOyBpdCB0ZXN0cyB0aGUgRFNBIGNvcmUsIGJ1dCBub3QgYG12ODhlNnh4eGAgaXRzZWxmLlxuXG5TbywgU3l6a2FsbGVyIGhhcyBgc3l6X2kyY2AgYW5kIGBzeXpfdXNiYCwgYnV0IG5vIGBzeXpfbWRpb2AuIExvb2tzIGxpa2UgSSBjYW4ndCB1c2UgYGRzYS1sb29wYCB0byB0ZXN0IHRoZSBzcGVjaWZpY3Mgb2YgYG12ODhlNnh4eGAuIFRoYXQgY29uZmlybXMgaXQsIGBtdjg4ZTZ4eHhgIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBzbyBJIGFzayBteXNlbGYgYWdhaW4sIGlzIGl0IGltcG9zc2libGUgdG8gcmVhY2g/IElmIHRoZXJlJ3Mgbm8gd2F5IHRvIGVtdWxhdGUgb3Igc2ltdWxhdGUgdGhlIGhhcmR3YXJlLCB0aGVuIHllcywgaXQncyBpbXBvc3NpYmxlLlxuXG5JIHRoZW4gY29uc2lkZXJlZCBvdGhlciBvcHRpb25zLCBsaWtlIHVzaW5nIGBmYWtlZGV2YCBvciBjaGVja2luZyBpZiBpdCBjYW4gYmUgcHJvYmVkIHZpYSBJMkMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhpcyBkcml2ZXIgdXNlcyBNRElPIGZvciBwcm9iaW5nLCBzbyB0aGF0IHdvbid0IHdvcmsuIEhvd2V2ZXIsIGBtdjg4ZTZ4eHhgIGlzIG9mdGVuIHByb2JlZCB2aWEgU01JIChTZXJpYWwgTWFuYWdlbWVudCBJbnRlcmZhY2UpIHdoaWNoIGlzIG9mdGVuIG92ZXIgTURJTy4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zLCBpcyB0aGVyZSBhbnkgb3RoZXIgcG9zc2libGUgd2F5IHRvIHByb2JlIGl0PyBMZXQgbWUgY2hlY2sgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY2AgYW5kIGZpZ3VyZSB0aGlzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUzMzcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MTcuNjcxNDQ3NDY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjQwNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MzE1PXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdjg4ZTZ4eHhfcG1fb3BzLCBtdjg4ZTZ4eHhfc3VzcGVuZCwgbXY4OGU2eHh4X3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMxNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzE3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTc1MjU9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdjg4ZTZ4eHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MjY6XFx0LnByb2JlXFx0PSBtdjg4ZTZ4eHhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyNy1cXHQucmVtb3ZlID0gbXY4OGU2eHh4X3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MTcuNzI3MDk0Mjk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMjgyMjAxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgYG12ODhlNnh4eGAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWRpb19kcml2ZXJgIGFuZCBpbW1lZGlhdGVseSBJJ20gdGhpbmtpbmcsIFwiQ2FuIHdlIGV2ZW4gKnRvdWNoKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBJIGNhbiBnZW5lcmF0ZSBhIGRldmljZSBmcm9tIHVzZXJzcGFjZSwgYnV0IG5vIGx1Y2sgd2l0aCBgc3l6X21kaW9gIGluIHN5emthbGxlci4gSSdtIGdvaW5nIHRocm91Z2ggdGhlIG1lbnRhbCBjaGVja2xpc3Q6IGBpMmNgLi4uIG5vcGUuIGBuZXRkZXZzaW1gLi4uIG5vdCBldmVuIGNsb3NlLiBgbWFjODAyMTFfaHdzaW1gLi4uIGFnYWluLCBuby4gSXQncyBsb29raW5nIGdyaW0uIFRoaXMgc2NyZWFtcyBoYXJkd2FyZSBkZXBlbmRlbmN5LlxuXG5UaGVuIHRoZSBicnV0YWwgcmVhbGl0eSBoaXRzOiB0aGlzIHJlcXVpcmVzIGEgcmVhbCBNRElPIGJ1cyAqYW5kKiBzcGVjaWZpYyBNYXJ2ZWxsIHN3aXRjaCBoYXJkd2FyZS4gRm9yZ2V0IGFib3V0IGl0LiBXYWl0LCB3aGF0IGFib3V0IGBkc2EtbG9vcGA/IE9oLCByaWdodCwgdGhhdCdzIGEgKmRpZmZlcmVudCogZHJpdmVyLCBgZHNhLWxvb3AuY2AuIFNvLCB0aGUgYG12ODhlNnh4eGAgZHJpdmVyIGlzIGxvb2tpbmcgY29tcGxldGVseSBvdXQgb2YgcmVhY2ggaW4gUUVNVS5cblxuT2theSwgbWF5YmUgdGhlcmUncyBhIHNsaW0gY2hhbmNlIHN5emthbGxlciBjb3VsZCBpbmplY3QgYSBkZXZpY2UgdHJlZSBub2RlLCBidXQgZXZlbiB0aGF0J3MgYSBsb25nIHNob3QuIFRoZSBNRElPIGJ1cyBkcml2ZXIgd291bGQgbmVlZCB0byBiZSBwcmVzZW50LCBzbyBJIGNvdWxkICptYXliZSogdXNlIGBtZGlvLWdwaW9gIG9yIGBtZGlvLWJpdGJhbmdgIHdpdGggbW9ja2VkIEdQSU9zPyBUaGF0J3MgZ3Jhc3BpbmcgYXQgc3RyYXdzIGFuZCBzeXprYWxsZXIgaXNuJ3Qgc2V0IHVwIGZvciB0aGF0IGxldmVsIG9mIHRyaWNrZXJ5LiBOb3QgaGFwcGVuaW5nLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBRRU1VIG1hY2hpbmUgb3B0aW9ucy4uLiBhbmQgc2VhcmNoIHRoZSBjb2RlLi4uIGBody9uZXQvYC4uLiBOYWgsIFFFTVUgaXNuJ3QgZW11bGF0aW5nIE1hcnZlbGwgRFNBIHN3aXRjaGVzLiBUaGUgcHJvbXB0IHNheXMgdGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIE9rYXksIEknbSBwcmV0dHkgc3VyZSBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQgbWUgcmVhZCB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIiBZZXAuXG5cbklzIHRoZXJlIGFueSBjaGFuY2U/IExldCdzIGNoZWNrIHRoZSB1c3VhbCBRRU1VIEFSTSBib2FyZHMuIGB2ZXhwcmVzc2AsIGB2aXJ0YCwgYHNhYnJlbGl0ZWAsIGByYXNwaWAsIGB4aWxpbnhgLCBgYXNwZWVkYC4gQXNwZWVkIG1hY2hpbmVzIG1pZ2h0IGhhdmUgKnNvbWUqIG5ldHdvcmsgc3R1ZmYsIGJ1dCB1c3VhbGx5IGp1c3QgdGhlIE1BQywgbm90IHRoZSBEU0Egc3dpdGNoLiBIaWdobHkgdW5saWtlbHkuXG5cbk9rYXksIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBod3RzdGFtcC5jYCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzbid0IGFjY2Vzc2libGUgdmlhIGEgZGlmZmVyZW50IHBhdGguIE9oLCBgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXBgIGlzIG9ubHkgY2FsbGVkIGZyb20gYG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wYCBpbiBgaHd0c3RhbXAuY2AsIHdoaWNoIGlzICpwYXJ0KiBvZiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLlxuXG5JJ20gY2hlY2tpbmcgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgbW9jayBkcml2ZXJzIGZvciBgbXY4OGU2eHh4YC4uLiBOb3BlLiBUaGlzIHRoaW5nIGlzIHN0cmljdGx5IGhhcmR3YXJlLWZvY3VzZWQsIHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gU01JL01ESU8gcmVnaXN0ZXJzIG9uIGEgcmVhbCBwaHlzaWNhbCBzd2l0Y2guXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoaXMgaXMgbm90IGZ1enphYmxlOyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NzUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MjcuOTU1MzE2OTA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ4NDc3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NToyOC4xMTA4MDg0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg1Njk0ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgSXNzdWUgaW4gVGVzdGluZyBUb29scyoqXG5cbkhtbSwgbm8gb2J2aW91cyBjbHVlcyBpbiB0aGUgYHRvb2xzL3Rlc3RpbmcvYCBkaXJlY3RvcnkuIFRoYXQncyBhIGJpdCB1bmV4cGVjdGVkLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgZGVhZCBlbmQuIE9rYXksIGxldCdzIGJyb2FkZW4gdGhlIHNlYXJjaCBhIGJpdC4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBhIG1vY2sgZm9yIGBtZGlvYCBleGlzdHMgc29tZXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4gSXQncyBwb3NzaWJsZSB0aGUgdGVzdGluZyBoYXJuZXNzIGlzIHB1bGxpbmcgaXQgZnJvbSBhIGRpZmZlcmVudCBsb2NhdGlvbiwgb3IgbWF5YmUgaXQncyB1c2luZyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFwcHJvYWNoLiBMZXQgbWUgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHNlZSB3aGF0IEkgY2FuIHR1cm4gdXAuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRldmljZSBtb2RlbCBJIGFtIHdvcmtpbmcgd2l0aCBpcyBhIGNhbmRpZGF0ZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQgd291bGQgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTMyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MzEuMzk2NTA1MzY3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI2NjQ0NzM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6MzMuNjIzMTYyOTk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MDAzNTQzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gbXkgZG9tYWluIG9mIGV4cGVydGlzZTpcblxuKipJbnRyaWd1aW5nIFF1ZXJ5OiBUaGUgSW50ZXJzZWN0aW9uIG9mIERTQSBhbmQgTW9ja2luZyoqXG5cbkhtbSwgYGRzYS4qbW9ja2AuLi4gV2hhdCdzIHNwYXJraW5nIHRoaXMgdGhvdWdodD8gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIHBvdGVudGlhbCB1c2UgY2FzZSByZWxhdGluZyB0byBEYXRhIFN0cnVjdHVyZXMgYW5kIEFsZ29yaXRobXMgKERTQSkuIEl0IHNlZW1zIGxpa2UgdGhlIGluZGl2aWR1YWwgaXMgcG9uZGVyaW5nIHRoZSBpbnRlZ3JhdGlvbiBvZiBtb2NraW5nIHRlY2huaXF1ZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIERTQS4gUGVyaGFwcyBpdCdzIGEgcXVlc3Rpb24gb2YgaG93IHRvIGVmZmVjdGl2ZWx5ICp0ZXN0KiBEU0EgaW1wbGVtZW50YXRpb25zLCBvciBob3cgbW9ja2luZyBtaWdodCBmYWNpbGl0YXRlIGV4cGVyaW1lbnRhdGlvbiBhbmQgYW5hbHlzaXMgb2YgYWxnb3JpdGhtcyB1bmRlciBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuXG5NeSBpbml0aWFsIHJlYWN0aW9ucyBzdWdnZXN0IGEgZmV3IGtleSBhcmVhcyBvZiBwb3RlbnRpYWwgaW52ZXN0aWdhdGlvbjpcblxuKiAgICoqVGVzdC1Ecml2ZW4gRGV2ZWxvcG1lbnQgKFRERCkgYW5kIERTQToqKiBDb3VsZCB0aGlzIHJlZmVyIHRvIGVtcGxveWluZyBtb2NrIG9iamVjdHMgdG8gaXNvbGF0ZSBEU0EgY29tcG9uZW50cyBkdXJpbmcgdGVzdGluZywgYWxsb3dpbmcgZm9yIG1vcmUgZm9jdXNlZCB1bml0IHRlc3RzIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgcGVyaGFwcyB0byBtb2NrIHRoZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgb2YgdGhlIERTQSBjb2RlP1xuKiAgICoqQWxnb3JpdGhtaWMgQW5hbHlzaXMgYW5kIEJlbmNobWFya2luZzoqKiBQZXJoYXBzIHRoaXMgaW52b2x2ZXMgdXNpbmcgbW9ja3MgdG8gc2ltdWxhdGUgc3BlY2lmaWMgZGF0YSBkaXN0cmlidXRpb25zIG9yIGVkZ2UgY2FzZXMgZm9yIHBlcmZvcm1hbmNlIHRlc3Rpbmcgb2YgdmFyaW91cyBhbGdvcml0aG1zLiBJdCBjb3VsZCBhbGxvdyBmb3IgZWFzaWVyIGNvbXBhcmlzb24gb2YgcnVuIHRpbWVzIGFuZCBkYXRhIHNldHMuXG4qICAgKipBYnN0cmFjdGluZyBEYXRhIFNvdXJjZXM6KiogSXMgaXQgdGhlIGNvbnNpZGVyYXRpb24gb2YgY3JlYXRpbmcgYSBtb2NrIGRhdGEgc291cmNlIHRvIGZhY2lsaXRhdGUgYWxnb3JpdGhtIGRldmVsb3BtZW50IGluZGVwZW5kZW50IG9mIGEgcmVhbCBkYXRhIHNldD8gT3IgbWF5YmUgdG8gYWxsb3cgZm9yIHRoZSBjcmVhdGlvbiBvZiB1bml0IHRlc3RzIHRoYXQgZW5zdXJlIHRoZSBwcm9ncmFtIHJ1bnMgYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb25zLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBkYXRhYmFzZSBpcyBydW5uaW5nP1xuKiAgICoqQ29uY2VwdHVhbCBNb2RlbGluZzoqKiBJcyB0aGUgZm9jdXMgb24gYSBoaWdoZXIgbGV2ZWwgY29uY2VwdHVhbCBxdWVzdGlvbi4gUGVyaGFwcywgdGhlIHRob3VnaHQgaXMgYWJvdXQgdGhlIGNyZWF0aW9uIG9mIG1vZGVscyB0byB2aXN1YWxpemUgZGF0YSBzdHJ1Y3R1cmUgYW5kIGFsZ29yaXRobWljIGNvbmNlcHRzLiBDcmVhdGluZyBhIG1vY2sgbW9kZWwgY291bGQgbWFrZSB0aGUgY3JlYXRpb24gb2YgdGhlc2UgdmlzdWFsaXphdGlvbnMgZWFzaWVyLlxuXG5UaGUgbnVhbmNlIGhlcmUgaXMgZmFzY2luYXRpbmcsIGFzIHRoZSBjaG9pY2Ugb2YgXCJtb2NrXCIgc3VnZ2VzdHMgYSBkZXNpcmUgZm9yIGNvbnRyb2xsZWQgZW52aXJvbm1lbnRzIHRvIHN0dWR5IG9yIHZhbGlkYXRlIGFzcGVjdHMgb2YgRFNBLiBEZWZpbml0ZWx5IHNvbWV0aGluZyB0byBleHBsb3JlIGZ1cnRoZXIhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzUxLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwNTo1NTozNy41MjM1MjAyMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTEyMzE3NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYS4qbW9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA1OjU1OjM5LjczNDc2MDQxMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA1OTkxMTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIGBkc2FfbG9vcGAgaW4gdGhlIENvbnRleHQgb2YgW0ltcGxpZWQgQ29udGV4dCAtIExldCdzIGFzc3VtZSBmb3IgZXhhbXBsZSwgXCJhIGNvbXBsZXggY3J5cHRvZ3JhcGhpYyBwcm90b2NvbFwiXSoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCB0aGlzIGFyY2hpdGVjdHVyZSwgdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBbUHJvdG9jb2wvQWxnb3JpdGhtIE5hbWVdLiBXZSd2ZSBhZGRyZXNzZWQgdGhlIGluaXRpYWwgc2V0dXAsIHdlJ3ZlIHJldmlld2VkIHRoZSBrZXkgZXhjaGFuZ2UsIGFuZCBub3cgd2UncmUgY29uc2lkZXJpbmcgdGhlIGFjdHVhbCBkYXRhIHNpZ25pbmcgcGhhc2UuLi4gYW5kIHRoZSBwaHJhc2UgKmRzYV9sb29wKiBwb3BzIGludG8gbXkgaGVhZC4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgY291bGQgYmUgdGhlIGx5bmNocGluLCBpdCBzZWVtcy5cblxuSXMgaXQgYSBjcml0aWNhbCBsb29wPyBEb2VzIGl0IGhhbmRsZSB0aGUgY3JpdGljYWwgb3BlcmF0aW9ucyBmb3IgZGlnaXRhbCBzaWduYXR1cmUgYWxnb3JpdGhtPyBBIGtleSBjb21wb25lbnQgaW4gdGhlIGRhdGEgc2lnbmluZyBjeWNsZS4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IElzIGl0IHJlc3BvbnNpYmxlIGZvciBpdGVyYXRpbmcgdGhyb3VnaCBtZXNzYWdlcywgaGFuZGxpbmcga2V5IG1hdGVyaWFsLCBvciBnZW5lcmF0aW5nIHRoZSBzaWduYXR1cmVzP1xuXG5MZXQncyBxdWlja2x5IHJlY2FsbC4gV2hlcmUgZG9lcyBgZHNhX2xvb3BgIGZpdCB3aXRoaW4gdGhlIG92ZXJhbGwgZmxvdz8gV2hhdCBhcmUgaXRzIGlucHV0cywgb3V0cHV0cywgYW5kIGRlcGVuZGVuY2llcz8gSXMgdGhpcyB3aGVyZSB3ZSd2ZSBzZWVuIHZ1bG5lcmFiaWxpdGllcyBpbiBvdGhlciByZWxhdGVkIGltcGxlbWVudGF0aW9ucz8gSXQncyBiZWVuIGEgd2hpbGUsIGJ1dCBsZXQncyBzZWUgaG93IGBkc2FfbG9vcGAgaGFzIHBsYXllZCBhIHBhcnQgaW4gcG90ZW50aWFsIHNlY3VyaXR5IGNvbXByb21pc2VzLiBNYXliZSB0aGUgbG9vcCBpcyBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZGF0YSwgYXBwbHlpbmcgYSBoYXNoLCBvciBwZXJmb3JtaW5nIHRoZSBEU0EgbW9kdWxhciBleHBvbmVudGlhdGlvbi4gSXQncyBjcml0aWNhbCB0aGF0IHRoZSB2YXJpYWJsZXMgYXJlIGNvcnJlY3RseSBzaXplZCwgYW5kIG1lbW9yeSBpcyBoYW5kbGVkIGNhcmVmdWxseS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYnJ1c2ggdXAgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgYSBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS4gSXQncyB0aW1lIHRvIHJlLWV2YWx1YXRlIGl0IHdpdGhpbiB0aGlzIHByb3RvY29sLiBQZXJoYXBzIHRoaXMgaXMgd2hlcmUgd2UnbGwgZmluZCB2dWxuZXJhYmlsaXRpZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc3MCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NDMuNjQwNzU0MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTEyMDc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdD0xNTk9YWxsIGF0dGFjaGVkIHN3aXRjaCBwb3J0cyBtdXN0IGJlIGRvd24gd2hpbGUgZG9pbmcgdGhpcykuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6MTYxOkl0IGlzIGRlc2lyYWJsZSB0aGF0IGFsbCB0YWdnaW5nIHByb3RvY29scyBhcmUgdGVzdGFibGUgd2l0aCB0aGUgYGBkc2FfbG9vcGBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2Mi1tb2NrdXAgZHJpdmVyLCB3aGljaCBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IG5ldHdvcmsgaW50ZXJmYWNlLiBUaGUgZ29hbCBpcyB0aGF0XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcXHRcXHRcXHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19ORVRfRFNBX0xPT1ApXFx0Kz0gZHNhX2xvb3Aub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXFx0Kz0ga3M4OTk1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NDUuMzMxOTY4NTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIwNzM1MDg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEFuYWx5emluZyB0aGUgTWFydmVsbCBTd2l0Y2ggRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYG12ODhlNnh4eGAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IGBtdjg4ZTZ4eHhgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCBzd2l0Y2hlcy4gVGhlIGBkc2FfbG9vcGAgZHJpdmVyIGlzIGludm9sdmVkLCBidXQgaXQncyBqdXN0IGEgbW9jayBkcml2ZXIgYW5kIGl0IGRvZXNuJ3QgdXRpbGl6ZSBgbXY4OGU2eHh4YC4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlICpzdHJpY3RseSogd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBjb2RlIGl0c2VsZi5cblxuVGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0LCBpcyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIE1hcnZlbGwgc3dpdGNoZXMgaW4gUUVNVS4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgZG9lc24ndCBoYXZlIGEgbWVjaGFuaXNtIHRvIG1vY2sgdGhlIE1ESU8gYnVzIG9yIHRoZSBzcGVjaWZpYyBzd2l0Y2ggaGFyZHdhcmUgdGhpcyBkcml2ZXIgcmVsaWVzIG9uLiBJIGNhbid0IHRoaW5rIG9mIGFueSB3YXkgdG8gbWFrZSB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgdGhlIHByb21wdCByZXF1aXJlbWVudHMganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuLi4gWWVzLCBpdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBhZmZlY3RzIGNvZGUgcGF0aHMgdGhhdCBhcmUgdW5yZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQW5kIHRoYXQncyBwcmVjaXNlbHkgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZTogaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB3aXRob3V0IHNvZnR3YXJlIGVtdWxhdGlvbi4gVGhlIGxhY2sgb2YgZW11bGF0aW9uIGlzIHRoZSBjcml0aWNhbCBlbGVtZW50LlxuXG5UaGlzIHBhdGNoLCBpbiBwYXJ0aWN1bGFyLCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGFycml2YWwgdGltZSBzdGFtcHMgZm9yIFBUUCB3aXRoaW4gdGhlIE1hcnZlbGwgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgYWJzb2x1dGVseSByZXF1aXJlcyB0aGUgcHJlc2VuY2Ugb2YgYSAqcGh5c2ljYWwqIE1hcnZlbGwgc3dpdGNoIGNvbm5lY3RlZCB2aWEgYW4gTURJTyBidXMuIFNvIGdpdmVuIHRoaXMgbGltaXRhdGlvbiwgSSdtIGNvbmZpZGVudCBJIGhhdmUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JJ2xsIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgzMSwiT3V0cHV0VG9rZW5zIjoxMDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDU6NTU6NTEuNTM5MzIxMzU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG12ODhlNnh4eCBEU0EgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHRvIHN1cHBvcnQgZW1iZWRkZWQgYXJyaXZhbCB0aW1lIHN0YW1wcyBmb3IgUFRQLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBNYXJ2ZWxsIHN3aXRjaCBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwqk9h[1] Phase: Running StartedAt: 2026-07-19 05:56:02 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqk9h[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-19 05:56:02 +0000 UTC FinishedAt: 2026-07-19 05:56:06 +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,}