Name: series-workflow7bpsq Phase: Failed StartedAt: 2026-07-07 14:04:13 +0000 UTC FinishedAt: 2026-07-07 14:23:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bpsq[0] Phase: Succeeded StartedAt: 2026-07-07 14:04:13 +0000 UTC FinishedAt: 2026-07-07 14:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bpsq[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 14:04:13 +0000 UTC FinishedAt: 2026-07-07 14:23:15 +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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIChFc3dpbiBFSUM3NzAwIFNvQykgd2hpY2ggcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5NDVjOWU3MzgwNmQ5OTQzMTQwMTAwZDFiZTI5YjFjMzNlZTIzMjk3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNDoyMjo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi5iYTQ5ZmQ2YTA4NmNiOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtMjAsMTYgJiM0MzsyMCwzNyBAQCBzZWxlY3Q6XG4gICAgICAgY29udGFpbnM6XG4gICAgICAgICBlbnVtOlxuICAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuJiM0MzsgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuICAgcmVxdWlyZWQ6XG4gICAgIC0gY29tcGF0aWJsZVxuIFxuIGFsbE9mOlxuICAgLSAkcmVmOiBzbnBzLGR3bWFjLnlhbWwjXG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGhcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4mIzQzOyAgICAgICAgICBtYXhpbXVtOiAyNTQwXG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbiYjNDM7ICAgICAgICAgIG1pbmltdW06IDIwMDBcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgaXRlbXM6XG4tICAgICAgLSBjb25zdDogZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4mIzQzOyAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4mIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXG4gICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG5AQCAtNjMsMTAgJiM0Mzs4NCwxNCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4tICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF1cbiYjNDM7ICAgIG1pbmltdW06IDBcbiYjNDM7ICAgIG1heGltdW06IDI1NDBcbiYjNDM7ICAgIG11bHRpcGxlT2Y6IDIwXG4gXG4gICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxuJiM0MzsgICAgbWluaW11bTogMFxuJiM0MzsgICAgbWF4aW11bTogNDU0MFxuJiM0MzsgICAgbXVsdGlwbGVPZjogMjBcbiBcbiAgIGVzd2luLGhzcC1zcC1jc3I6XG4gICAgIGRlc2NyaXB0aW9uOlxuQEAgLTEwNSw4ICYjNDM7MTMwLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHBoeS1tb2RlXG4gICAtIHJlc2V0c1xuICAgLSByZXNldC1uYW1lc1xuLSAgLSByeC1pbnRlcm5hbC1kZWxheS1wc1xuLSAgLSB0eC1pbnRlcm5hbC1kZWxheS1wc1xuICAgLSBlc3dpbixoc3Atc3AtY3NyXG4gXG4gdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuQEAgLTExNiwyNiAmIzQzOzEzOSw1MSBAQCBleGFtcGxlczpcbiAgICAgZXRoZXJuZXRANTA0MDAwMDAge1xuICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aFwmIzM0OywgXCYjMzQ7c25wcyxkd21hYy01LjIwXCYjMzQ7O1xuICAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXHUwMDNlO1xuLSAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuLSAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTNcdTAwM2U7XG4tICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2F4aVwmIzM0OywgXCYjMzQ7Y2ZnXCYjMzQ7LCBcJiMzNDtzdG1tYWNldGhcJiMzNDssIFwmIzM0O3R4XCYjMzQ7O1xuICAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNnBsaWNcdTAwM2U7XG4gICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjNjFcdTAwM2U7XG4gICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcJiMzNDttYWNpcnFcJiMzNDs7XG4tICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLSAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTkzXHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7YXhpXCYjMzQ7LCBcJiMzNDtjZmdcJiMzNDssIFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7dHhcJiMzNDs7XG4gICAgICAgICByZXNldHMgPSBcdTAwM2NcdTAwMjZyZXNldCA5NVx1MDAzZTtcbiAgICAgICAgIHJlc2V0LW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7O1xuLSAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMDBcdTAwM2U7XG4tICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIwMFx1MDAzZTtcbiAgICAgICAgIGVzd2luLGhzcC1zcC1jc3IgPSBcdTAwM2NcdTAwMjZoc3Bfc3BfY3NyIDB4MTAwIDB4MTA4IDB4MTE4IDB4MTE0IDB4MTFjXHUwMDNlO1xuLSAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGh5MFx1MDAzZTtcbiYjNDM7ICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuICAgICAgICAgc25wcyxhYWw7XG4gICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuICAgICAgICAgc25wcyx0c287XG4mIzQzOyAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbiYjNDM7XG4gICAgICAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG4gICAgICAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4gICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gXHUwMDNjMlx1MDAzZTtcbiAgICAgICAgICAgICBzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MyXHUwMDNlO1xuICAgICAgICAgfTtcbiAgICAgfTtcbiYjNDM7XG4mIzQzOyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXCYjMzQ7LCBcJiMzNDtzbnBzLGR3bWFjLTUuMjBcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQxMDAwMCAweDEwMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZwbGljXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2M3MFx1MDAzZTtcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcJiMzNDttYWNpcnFcJiMzNDs7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTk0XHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7YXhpXCYjMzQ7LCBcJiMzNDtjZmdcJiMzNDssIFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7dHhcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVzZXRzID0gXHUwMDNjXHUwMDI2cmVzZXQgOTRcdTAwM2U7XG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSBcJiMzNDtzdG1tYWNldGhcJiMzNDs7XG4mIzQzOyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWNcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmdtYWMxX3BoeTBcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbiYjNDM7ICAgICAgICBzbnBzLGFhbDtcbiYjNDM7ICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuJiM0MzsgICAgICAgIHNucHMsdHNvO1xuJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBfZ21hYzFcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHN0bW1hY19heGlfc2V0dXBfZ21hYzE6IHN0bW1hYy1heGktY29uZmlnIHtcbiYjNDM7ICAgICAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY1xuQEAgLTI4LDExICYjNDM7MjgsMTUgQEBcbiBcbiAvKlxuICAqIFRYL1JYIENsb2NrIERlbGF5IEJpdCBNYXNrczpcbi0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbi0gKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0g4oCUIFJYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXG4mIzQzOyAqIC0gVFggRGVsYXk6IGJpdHMgWzE0OjhdIC0gVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbiYjNDM7ICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV1cbiYjNDM7ICogLSBSWCBEZWxheTogYml0cyBbMzA6MjRdIC0gUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbiYjNDM7ICogLSBSWCBJbnZlcnQgOiBiaXQgIFszMV1cbiAgKi9cbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWVx0R0VOTUFTSygxNCwgOClcbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWVx0R0VOTUFTSygzMCwgMjQpXG4mIzQzOyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXHRCSVQoMTUpXG4mIzQzOyNkZWZpbmUgRUlDNzcwMF9FVEhfUlhfSU5WX0RFTEFZXHRCSVQoMzEpXG4gXG4gI2RlZmluZSBFSUM3NzAwX01BWF9ERUxBWV9TVEVQU1x0XHQweDdGXG4gI2RlZmluZSBFSUM3NzAwX0RFTEFZX1NURVBfUFNcdFx0MjBcbkBAIC00Myw3ICYjNDM7NDcsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBlaWM3NzAwX2Nsa19uYW1lc1tdID0ge1xuIFx0XCYjMzQ7dHhcJiMzNDssIFwmIzM0O2F4aVwmIzM0OywgXCYjMzQ7Y2ZnXCYjMzQ7LFxuIH07XG4gXG4mIzQzO3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEge1xuJiM0MztcdGJvb2wgcmdtaWlfcnhfY2xrX2ludmVydDtcbiYjNDM7XHRib29sIGhhc19pbnRlcm5hbF90eF9kZWxheTtcbiYjNDM7XHR1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2IHtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuIFx0c3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwO1xuIFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XG5AQCAtNTQsNiAmIzQzOzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xuIFx0dTMyIGV0aF9jbGtfZGx5X3BhcmFtO1xuIFx0Ym9vbCBoYXNfdHhkX29mZnNldDtcbiBcdGJvb2wgaGFzX3J4ZF9vZmZzZXQ7XG4mIzQzO1x0Ym9vbCBldGhfcnhfY2xrX2ludjtcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZWljNzcwMF9jbGtzX2NvbmZpZyh2b2lkICpwcml2LCBib29sIGVuYWJsZWQpXG5AQCAtOTcsOSAmIzQzOzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChkd2MtXHUwMDNlaGFzX3J4ZF9vZmZzZXQpXG4gXHRcdHJlZ21hcF93cml0ZShkd2MtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xuIFxuLVx0cmVnbWFwX3dyaXRlKGR3Yy1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cdTAwM2VldGhfY2xrX29mZnNldCxcbi1cdFx0ICAgICBkd2MtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEyNiw4ICYjNDM7MTM1LDM4IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwcml2KVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XG4mIzQzOyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxuJiM0MzsgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuJiM0MztcdFx0XHRcdCAgICBpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3YyA9IChzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqKXByaXY7XG4mIzQzO1x0dTMyIGRseV9wYXJhbSA9IGR3Yy1cdTAwM2VldGhfY2xrX2RseV9wYXJhbTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChzcGVlZCkge1xuJiM0MztcdGNhc2UgU1BFRURfMTAwMDpcbiYjNDM7XHRcdGlmIChkd2MtXHUwMDNlZXRoX3J4X2Nsa19pbnYpXG4mIzQzO1x0XHRcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDpcbiYjNDM7XHRjYXNlIFNQRUVEXzEwOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdGRldl93YXJuKGR3Yy1cdTAwM2VkZXYsIFwmIzM0O3Vuc3VwcG9ydGVkIHNwZWVkICV1XFxuXCYjMzQ7LCBzcGVlZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZWdtYXBfd3JpdGUoZHdjLVx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLVx1MDAzZWV0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhO1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7XG5AQCAtMTQ4LDYgJiM0MzsxODcsMzAgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAoIWR3Y19wcml2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiYjNDM7XHRkd2NfcHJpdi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKCFkYXRhKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAtRUlOVkFMLCBcJiMzNDtubyBtYXRjaCBkYXRhIGZvdW5kXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0ZHdjX3ByaXYtXHUwMDNlZXRoX3J4X2Nsa19pbnYgPSBkYXRhLVx1MDAzZXJnbWlpX3J4X2Nsa19pbnZlcnQ7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgTUFDIHNpbGljb24gdW5jb25kaXRpb25hbGx5IGFkZHMgfjIgbnMgVFggZGVsYXk7IHByZXZlbnRcbiYjNDM7XHQgKiB0aGUgUEhZIGZyb20gYWxzbyBhZGRpbmcgVFggZGVsYXkgdG8gYXZvaWQgZG91YmxpbmcgaXQuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBEVCBzcGVjaWZpZXMgcmdtaWktaWQgKFRYIGZyb20gTUFDIHNpbGljb24sIFJYIGZyb20gUEhZKTtcbiYjNDM7XHQgKiBvdmVycmlkZSB0byByZ21paS1yeGlkIHNvIHRoZSBQSFkgb25seSBhZGRzIGl0cyBSWCBkZWxheS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGF0YS1cdTAwM2VoYXNfaW50ZXJuYWxfdHhfZGVsYXkpIHtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPVxuJiM0MztcdFx0XHRcdCBwaHlfZml4X3BoeV9tb2RlX2Zvcl9tYWNfZGVsYXlzKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgdHJ1ZSwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKVxuJiM0MztcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaHkgaW50ZXJmYWNlIG1vZGUgaXMgTkFcXG5cJiMzNDspO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBSZWFkIHJ4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgcnhfY2xrIGRlbGF5ICovXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsXG4gXHRcdFx0XHQgIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZkZWxheV9wcykpIHtcbkBAIC0xNjUsMTIgJiM0MzsyMjgsMTUgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdGR3Y19wcml2LVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFx1MDAyNj0gfkVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWTtcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gfD1cbiBcdFx0XHRcdCBGSUVMRF9QUkVQKEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWSwgdmFsKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFwmIzM0O21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgcngtaW50ZXJuYWwtZGVsYXktcHNcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0LyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqL1xuJiM0MztcdC8qIFJlYWQgdHgtaW50ZXJuYWwtZGVsYXktcHMgYW5kIHVwZGF0ZSB0eF9jbGsgZGVsYXkuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXNcbiYjNDM7XHQgKiB0aGUgZWZmZWN0aXZlIFRYIGRlbGF5IGF0IHRoZSBNQUMgb3V0cHV0LCBpbmNsdWRpbmcgdGhlIGluaGVyZW50XG4mIzQzO1x0ICogc2lsaWNvbiBkZWxheS4gU3VidHJhY3QgdGhlIGZpeGVkIGNvbXBvbmVudCB0byBvYnRhaW4gdGhlXG4mIzQzO1x0ICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLlxuJiM0MztcdCAqL1xuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuIFx0XHRcdFx0ICBcJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wc1wmIzM0OywgXHUwMDI2ZGVsYXlfcHMpKSB7XG4gXHRcdGlmIChkZWxheV9wcyAlIEVJQzc3MDBfREVMQVlfU1RFUF9QUylcbkBAIC0xNzgsMTggJiM0MzsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0XHRcJiMzNDt0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXG5cJiMzNDssXG4gXHRcdFx0XHRFSUM3NzAwX0RFTEFZX1NURVBfUFMpO1xuIFxuJiM0MztcdFx0aWYgKGRlbGF5X3BzIFx1MDAzYyBkYXRhLVx1MDAzZXR4X2Nsa19pbmhlcmVudF9za2V3X3BzKVxuJiM0MztcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbiYjNDM7XHRcdFx0XHRcJiMzNDt0eCBkZWxheSAldXBzIGJlbG93IGluaGVyZW50IHNrZXcgJXVwc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRkZWxheV9wcywgZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcyk7XG4mIzQzO1xuJiM0MztcdFx0ZGVsYXlfcHMgLT0gZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcztcbiYjNDM7XG4gXHRcdGlmIChkZWxheV9wcyBcdTAwM2UgRUlDNzcwMF9NQVhfREVMQVlfUFMpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XHRcJiMzNDt0eCBkZWxheSBvdXQgb2YgcmFuZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdFwmIzM0O3R4IGRlbGF5IG91dCBvZiBwcm9ncmFtbWFibGUgcmFuZ2VcXG5cJiMzNDspO1xuIFxuIFx0XHR2YWwgPSBkZWxheV9wcyAvIEVJQzc3MDBfREVMQVlfU1RFUF9QUztcbiBcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gXHUwMDI2PSB+RUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZO1xuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxuIFx0XHRcdFx0IEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XCYjMzQ7bWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSB0eC1pbnRlcm5hbC1kZWxheS1wc1xcblwmIzM0Oyk7XG4gXHR9XG4gXG4gXHRkd2NfcHJpdi1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAgPVxuQEAgLTI2MCwxMiAmIzQzOzMzMCwzMSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG4mIzQzO1x0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGVpYzc3MDBfZHdtYWNfZml4X3NwZWVkO1xuIFxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YSA9IHtcbiYjNDM7XHQucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLFxuJiM0MztcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSBmYWxzZSxcbiYjNDM7XHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24gPSB7XG4mIzQzO1x0LnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLFxuJiM0MztcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSB0cnVlLFxuJiM0MztcdC50eF9jbGtfaW5oZXJlbnRfc2tld19wcyA9IDIwMDAsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGVpYzc3MDBfZHdtYWNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtlc3dpbixlaWM3NzAwLXFvcy1ldGhcJiMzNDsgfSxcbiYjNDM7XHR7XHQuY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aFwmIzM0OyxcbiYjNDM7XHRcdC5kYXRhID0gXHUwMDI2ZWljNzcwMF9kd21hY19kYXRhLFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblwmIzM0OyxcbiYjNDM7XHRcdC5kYXRhID0gXHUwMDI2ZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24sXG4mIzQzO1x0fSxcbiBcdHsgfVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQ1YzllNzM4MDZkOTk0MzE0MDEwMGQxYmUyOWIxYzMzZWUyMzI5NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKaW5kZXggNjU4ODJmZjc5ZDhkN2UuLmJhNDlmZDZhMDg2Y2I5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sCkBAIC0yMCwxNiAmIzQzOzIwLDM3IEBAIHNlbGVjdDoKICAgICAgIGNvbnRhaW5zOgogICAgICAgICBlbnVtOgogICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoCiYjNDM7ICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24KICAgcmVxdWlyZWQ6CiAgICAgLSBjb21wYXRpYmxlCiAKIGFsbE9mOgogICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCMKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgKJiM0MzsgICAgdGhlbjoKJiM0MzsgICAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgICAgICAgIG1heGltdW06IDI1NDAKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbgomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgICAgICAgbWluaW11bTogMjAwMAogCiBwcm9wZXJ0aWVzOgogICBjb21wYXRpYmxlOgogICAgIGl0ZW1zOgotICAgICAgLSBjb25zdDogZXN3aW4sZWljNzcwMC1xb3MtZXRoCiYjNDM7ICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aAomIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uCiAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjAKIAogICByZWc6CkBAIC02MywxMCAmIzQzOzg0LDE0IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGgKIAogICByeC1pbnRlcm5hbC1kZWxheS1wczoKLSAgICBlbnVtOiBbMCwgMjAwLCA2MDAsIDEyMDAsIDE2MDAsIDE4MDAsIDIwMDAsIDIyMDAsIDI0MDBdCiYjNDM7ICAgIG1pbmltdW06IDAKJiM0MzsgICAgbWF4aW11bTogMjU0MAomIzQzOyAgICBtdWx0aXBsZU9mOiAyMAogCiAgIHR4LWludGVybmFsLWRlbGF5LXBzOgotICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF0KJiM0MzsgICAgbWluaW11bTogMAomIzQzOyAgICBtYXhpbXVtOiA0NTQwCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDIwCiAKICAgZXN3aW4saHNwLXNwLWNzcjoKICAgICBkZXNjcmlwdGlvbjoKQEAgLTEwNSw4ICYjNDM7MTMwLDYgQEAgcmVxdWlyZWQ6CiAgIC0gcGh5LW1vZGUKICAgLSByZXNldHMKICAgLSByZXNldC1uYW1lcwotICAtIHJ4LWludGVybmFsLWRlbGF5LXBzCi0gIC0gdHgtaW50ZXJuYWwtZGVsYXktcHMKICAgLSBlc3dpbixoc3Atc3AtY3NyCiAKIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKQEAgLTExNiwyNiAmIzQzOzEzOSw1MSBAQCBleGFtcGxlczoKICAgICBldGhlcm5ldEA1MDQwMDAwMCB7CiAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7LCAmIzM0O3NucHMsZHdtYWMtNS4yMCYjMzQ7OwogICAgICAgICByZWcgPSAmbHQ7MHg1MDQwMDAwMCAweDEwMDAwJmd0OzsKLSAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7ZDBfY2xvY2sgMTg2Jmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgMTcxJmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgNDAmZ3Q7LAotICAgICAgICAgICAgICAgICZsdDsmYW1wO2QwX2Nsb2NrIDE5MyZndDs7Ci0gICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDtheGkmIzM0OywgJiMzNDtjZmcmIzM0OywgJiMzNDtzdG1tYWNldGgmIzM0OywgJiMzNDt0eCYjMzQ7OwogICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7cGxpYyZndDs7CiAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7NjEmZ3Q7OwogICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSAmIzM0O21hY2lycSYjMzQ7OwotICAgICAgICBwaHktbW9kZSA9ICYjMzQ7cmdtaWktaWQmIzM0OzsKLSAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7ZDBfY2xvY2sgMTg2Jmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgMTcxJmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgNDAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAmbHQ7JmFtcDtkMF9jbG9jayAxOTMmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2F4aSYjMzQ7LCAmIzM0O2NmZyYjMzQ7LCAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O3R4JiMzNDs7CiAgICAgICAgIHJlc2V0cyA9ICZsdDsmYW1wO3Jlc2V0IDk1Jmd0OzsKICAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7OwotICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMDAmZ3Q7OwotICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMDAmZ3Q7OwogICAgICAgICBlc3dpbixoc3Atc3AtY3NyID0gJmx0OyZhbXA7aHNwX3NwX2NzciAweDEwMCAweDEwOCAweDExOCAweDExNCAweDExYyZndDs7Ci0gICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LW1vZGUgPSAmIzM0O3JnbWlpLWlkJiMzNDs7CiAgICAgICAgIHNucHMsYWFsOwogICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0OwogICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXAmZ3Q7OwomIzQzOwogICAgICAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7CiAgICAgICAgICAgICBzbnBzLGJsZW4gPSAmbHQ7MCAwIDAgMCAxNiA4IDQmZ3Q7OwogICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gJmx0OzImZ3Q7OwogICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gJmx0OzImZ3Q7OwogICAgICAgICB9OwogICAgIH07CiYjNDM7CiYjNDM7ICAgIGV0aGVybmV0QDUwNDEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDssICYjMzQ7c25wcyxkd21hYy01LjIwJiMzNDs7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MHg1MDQxMDAwMCAweDEwMDAwJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSAmbHQ7JmFtcDtwbGljJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7NzAmZ3Q7OwomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gJiMzNDttYWNpcnEmIzM0OzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2QwX2Nsb2NrIDE4NiZndDssICZsdDsmYW1wO2QwX2Nsb2NrIDE3MSZndDssICZsdDsmYW1wO2QwX2Nsb2NrIDQwJmd0OywKJiM0MzsgICAgICAgICAgICAgICAgJmx0OyZhbXA7ZDBfY2xvY2sgMTk0Jmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDtheGkmIzM0OywgJiMzNDtjZmcmIzM0OywgJiMzNDtzdG1tYWNldGgmIzM0OywgJiMzNDt0eCYjMzQ7OwomIzQzOyAgICAgICAgcmVzZXRzID0gJmx0OyZhbXA7cmVzZXQgOTQmZ3Q7OwomIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7OwomIzQzOyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9ICZsdDsmYW1wO2hzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWMmZ3Q7OwomIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO2dtYWMxX3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LW1vZGUgPSAmIzM0O3JnbWlpLWlkJiMzNDs7CiYjNDM7ICAgICAgICBzbnBzLGFhbDsKJiM0MzsgICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7CiYjNDM7ICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXBfZ21hYzEmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcgewomIzQzOyAgICAgICAgICAgIHNucHMsYmxlbiA9ICZsdDswIDAgMCAwIDE2IDggNCZndDs7CiYjNDM7ICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMKaW5kZXggNGFjOTc5ZDg3NGQ2ZWQuLmVhYjhjMTNmYmRjYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jCkBAIC0yOCwxMSAmIzQzOzI4LDE1IEBACiAKIC8qCiAgKiBUWC9SWCBDbG9jayBEZWxheSBCaXQgTWFza3M6Ci0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdCkKLSAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSDigJQgUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdCkKJiM0MzsgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpCiYjNDM7ICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV0KJiM0MzsgKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0gLSBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KQomIzQzOyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdCiAgKi8KICNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZCUdFTk1BU0soMTQsIDgpCiAjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWQlHRU5NQVNLKDMwLCAyNCkKJiM0MzsjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0lOVl9ERUxBWQlCSVQoMTUpCiYjNDM7I2RlZmluZSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVkJQklUKDMxKQogCiAjZGVmaW5lIEVJQzc3MDBfTUFYX0RFTEFZX1NURVBTCQkweDdGCiAjZGVmaW5lIEVJQzc3MDBfREVMQVlfU1RFUF9QUwkJMjAKQEAgLTQzLDcgJiM0Mzs0NywxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGVpYzc3MDBfY2xrX25hbWVzW10gPSB7CiAJJiMzNDt0eCYjMzQ7LCAmIzM0O2F4aSYjMzQ7LCAmIzM0O2NmZyYjMzQ7LAogfTsKIAomIzQzO3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgewomIzQzOwlib29sIHJnbWlpX3J4X2Nsa19pbnZlcnQ7CiYjNDM7CWJvb2wgaGFzX2ludGVybmFsX3R4X2RlbGF5OwomIzQzOwl1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2IHsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7CiAJc3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwOwogCXUzMiBldGhfYXhpX2xwX2N0cmxfb2Zmc2V0OwpAQCAtNTQsNiAmIzQzOzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgewogCXUzMiBldGhfY2xrX2RseV9wYXJhbTsKIAlib29sIGhhc190eGRfb2Zmc2V0OwogCWJvb2wgaGFzX3J4ZF9vZmZzZXQ7CiYjNDM7CWJvb2wgZXRoX3J4X2Nsa19pbnY7CiB9OwogCiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKQpAQCAtOTcsOSAmIzQzOzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdikKIAlpZiAoZHdjLSZndDtoYXNfcnhkX29mZnNldCkKIAkJcmVnbWFwX3dyaXRlKGR3Yy0mZ3Q7ZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtJmd0O2V0aF9yeGRfb2Zmc2V0LCAwKTsKIAotCXJlZ21hcF93cml0ZShkd2MtJmd0O2VpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLSZndDtldGhfY2xrX29mZnNldCwKLQkJICAgICBkd2MtJmd0O2V0aF9jbGtfZGx5X3BhcmFtKTsKLQogCXJldHVybiAwOwogfQogCkBAIC0xMjYsOCAmIzQzOzEzNSwzOCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdikKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoKJiM0MzsgKiBldGgxIHJlcXVpcmVzIFJYIGNsb2NrIGludmVyc2lvbiBhdCAxMDAwTWJwcyBkdWUgdG8gc2lsaWNvbi1pbmhlcmVudAomIzQzOyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LgomIzQzOyAqCiYjNDM7ICogVGhlIGNvbmZpZ3VyYXRpb24gaXMgdXBkYXRlZCBpbiBmaXhfbWFjX3NwZWVkKCkgYmVjYXVzZSB0aGUgcmVxdWlyZWQKJiM0MzsgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgZWljNzcwMF9kd21hY19maXhfc3BlZWQodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwKJiM0MzsJCQkJICAgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjID0gKHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICopcHJpdjsKJiM0MzsJdTMyIGRseV9wYXJhbSA9IGR3Yy0mZ3Q7ZXRoX2Nsa19kbHlfcGFyYW07CiYjNDM7CiYjNDM7CXN3aXRjaCAoc3BlZWQpIHsKJiM0MzsJY2FzZSBTUEVFRF8xMDAwOgomIzQzOwkJaWYgKGR3Yy0mZ3Q7ZXRoX3J4X2Nsa19pbnYpCiYjNDM7CQkJZGx5X3BhcmFtIHw9IEVJQzc3MDBfRVRIX1JYX0lOVl9ERUxBWTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDoKJiM0MzsJY2FzZSBTUEVFRF8xMDoKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJZGV2X3dhcm4oZHdjLSZndDtkZXYsICYjMzQ7dW5zdXBwb3J0ZWQgc3BlZWQgJXVcbiYjMzQ7LCBzcGVlZCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGR3Yy0mZ3Q7ZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtJmd0O2V0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewomIzQzOwljb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhOwogCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7CiAJc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlczsKIAlzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7CkBAIC0xNDgsNiAmIzQzOzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoIWR3Y19wcml2KQogCQlyZXR1cm4gLUVOT01FTTsKIAomIzQzOwlkd2NfcHJpdi0mZ3Q7ZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CWRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAoIWRhdGEpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmYW1wO3BkZXYtJmd0O2RldiwKJiM0MzsJCQkJICAgICAtRUlOVkFMLCAmIzM0O25vIG1hdGNoIGRhdGEgZm91bmRcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJZHdjX3ByaXYtJmd0O2V0aF9yeF9jbGtfaW52ID0gZGF0YS0mZ3Q7cmdtaWlfcnhfY2xrX2ludmVydDsKJiM0MzsJLyoKJiM0MzsJICogVGhlIE1BQyBzaWxpY29uIHVuY29uZGl0aW9uYWxseSBhZGRzIH4yIG5zIFRYIGRlbGF5OyBwcmV2ZW50CiYjNDM7CSAqIHRoZSBQSFkgZnJvbSBhbHNvIGFkZGluZyBUWCBkZWxheSB0byBhdm9pZCBkb3VibGluZyBpdC4KJiM0MzsJICoKJiM0MzsJICogRFQgc3BlY2lmaWVzIHJnbWlpLWlkIChUWCBmcm9tIE1BQyBzaWxpY29uLCBSWCBmcm9tIFBIWSk7CiYjNDM7CSAqIG92ZXJyaWRlIHRvIHJnbWlpLXJ4aWQgc28gdGhlIFBIWSBvbmx5IGFkZHMgaXRzIFJYIGRlbGF5LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRhdGEtJmd0O2hhc19pbnRlcm5hbF90eF9kZWxheSkgewomIzQzOwkJcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPQomIzQzOwkJCQkgcGh5X2ZpeF9waHlfbW9kZV9mb3JfbWFjX2RlbGF5cyhwbGF0X2RhdC0mZ3Q7cGh5X2ludGVyZmFjZSwKJiM0MzsJCQkJCQkJCSB0cnVlLCBmYWxzZSk7CiYjNDM7CQlpZiAocGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKQomIzQzOwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAomIzQzOwkJCQkmIzM0O3BoeSBpbnRlcmZhY2UgbW9kZSBpcyBOQVxuJiMzNDspOwomIzQzOwl9CiYjNDM7CiAJLyogUmVhZCByeC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHJ4X2NsayBkZWxheSAqLwogCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0mZ3Q7ZGV2Lm9mX25vZGUsCiAJCQkJICAmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7ZGVsYXlfcHMpKSB7CkBAIC0xNjUsMTIgJiM0MzsyMjgsMTUgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCWR3Y19wcml2LSZndDtldGhfY2xrX2RseV9wYXJhbSAmYW1wOz0gfkVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWTsKIAkJZHdjX3ByaXYtJmd0O2V0aF9jbGtfZGx5X3BhcmFtIHw9CiAJCQkJIEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfUlhfQURKX0RFTEFZLCB2YWwpOwotCX0gZWxzZSB7Ci0JCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJJiMzNDttaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHJ4LWludGVybmFsLWRlbGF5LXBzXG4mIzM0Oyk7CiAJfQogCi0JLyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqLwomIzQzOwkvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LgomIzQzOwkgKgomIzQzOwkgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXMKJiM0MzsJICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudAomIzQzOwkgKiBzaWxpY29uIGRlbGF5LiBTdWJ0cmFjdCB0aGUgZml4ZWQgY29tcG9uZW50IHRvIG9idGFpbiB0aGUKJiM0MzsJICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLgomIzQzOwkgKi8KIAlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtJmd0O2Rldi5vZl9ub2RlLAogCQkJCSAgJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wcyYjMzQ7LCAmYW1wO2RlbGF5X3BzKSkgewogCQlpZiAoZGVsYXlfcHMgJSBFSUM3NzAwX0RFTEFZX1NURVBfUFMpCkBAIC0xNzgsMTggJiM0MzsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJJiMzNDt0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcbiYjMzQ7LAogCQkJCUVJQzc3MDBfREVMQVlfU1RFUF9QUyk7CiAKJiM0MzsJCWlmIChkZWxheV9wcyAmbHQ7IGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzKQomIzQzOwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAomIzQzOwkJCQkmIzM0O3R4IGRlbGF5ICV1cHMgYmVsb3cgaW5oZXJlbnQgc2tldyAldXBzXG4mIzM0OywKJiM0MzsJCQkJZGVsYXlfcHMsIGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzKTsKJiM0MzsKJiM0MzsJCWRlbGF5X3BzIC09IGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzOwomIzQzOwogCQlpZiAoZGVsYXlfcHMgJmd0OyBFSUM3NzAwX01BWF9ERUxBWV9QUykKIAkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJCSYjMzQ7dHggZGVsYXkgb3V0IG9mIHJhbmdlXG4mIzM0Oyk7CiYjNDM7CQkJCSYjMzQ7dHggZGVsYXkgb3V0IG9mIHByb2dyYW1tYWJsZSByYW5nZVxuJiMzNDspOwogCiAJCXZhbCA9IGRlbGF5X3BzIC8gRUlDNzcwMF9ERUxBWV9TVEVQX1BTOwogCiAJCWR3Y19wcml2LSZndDtldGhfY2xrX2RseV9wYXJhbSAmYW1wOz0gfkVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWTsKIAkJZHdjX3ByaXYtJmd0O2V0aF9jbGtfZGx5X3BhcmFtIHw9CiAJCQkJIEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpOwotCX0gZWxzZSB7Ci0JCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJJiMzNDttaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXG4mIzM0Oyk7CiAJfQogCiAJZHdjX3ByaXYtJmd0O2VpYzc3MDBfaHNwX3JlZ21hcCA9CkBAIC0yNjAsMTIgJiM0MzszMzAsMzEgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcGxhdF9kYXQtJmd0O2V4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7CiAJcGxhdF9kYXQtJmd0O3N1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7CiAJcGxhdF9kYXQtJmd0O3Jlc3VtZSA9IGVpYzc3MDBfZHdtYWNfcmVzdW1lOwomIzQzOwlwbGF0X2RhdC0mZ3Q7Zml4X21hY19zcGVlZCA9IGVpYzc3MDBfZHdtYWNfZml4X3NwZWVkOwogCiAJcmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCAmYW1wO3N0bW1hY19yZXMpOwogfQogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgZWljNzcwMF9kd21hY19kYXRhID0gewomIzQzOwkucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLAomIzQzOwkuaGFzX2ludGVybmFsX3R4X2RlbGF5ID0gZmFsc2UsCiYjNDM7CS50eF9jbGtfaW5oZXJlbnRfc2tld19wcyA9IDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGFfY2xrX2ludmVyc2lvbiA9IHsKJiM0MzsJLnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLAomIzQzOwkuaGFzX2ludGVybmFsX3R4X2RlbGF5ID0gdHJ1ZSwKJiM0MzsJLnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMjAwMCwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0gewotCXsgLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7IH0sCiYjNDM7CXsJLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7LAomIzQzOwkJLmRhdGEgPSAmYW1wO2VpYzc3MDBfZHdtYWNfZGF0YSwKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7ZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24sCiYjNDM7CX0sCiAJeyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MDcKCQkJCQkJCW91dHB1dDogODIKCQkJCQkJCXRob3VnaHRzOiA5MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY2AuICBCYXNpY2FsbHksIGl0IGFkZHMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsIGBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbmAsIGFuZCBzb21lIGNsb2NrIGludmVyc2lvbi9kZWxheSBsb2dpYyB3aXRoaW4gYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGFuZCBgZWljNzcwMF9kd21hY19maXhfc3BlZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KClRoaXMgZHJpdmVyLCBgZHdtYWMtZWljNzcwMC5jYCwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgRXN3aW4gRUlDNzcwMCBTb0MuIFBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGFyZ2V0aW5nIHNwZWNpZmljIGhhcmR3YXJlIGxpa2UgdGhpcywgYXJlICp0eXBpY2FsbHkqIG5vdCByZWFjaGFibGUgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICBJIG1lYW4sIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gZm9yIHRoYXQgKmV4YWN0KiBoYXJkd2FyZS4gIEFuIGVtdWxhdG9yIGZvciB0aGUgRXN3aW4gRUlDNzcwMD8gSGlnaGx5IHVubGlrZWx5LgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZm9yY2UgdGhlIHByb2JlLiBUaGUgZHJpdmVyIG1hdGNoZXMgb24gYCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoJiMzNDtgIGFuZCB0aGUgbmV3IGAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDtgLiBDYW4gd2UgaW5qZWN0IGEgbWF0Y2hpbmcgZGV2aWNlIG5vZGUgc29tZWhvdywgbWF5YmUgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IFN5emthbGxlciBoYXMgc29tZSBwbGF0Zm9ybSBkZXZpY2UgaW5qZWN0aW9uIGNhcGFiaWxpdGllcywgYnV0IGl0JiMzOTtzIHVzdWFsbHkgZWl0aGVyIHRocm91Z2ggcHJlZGVmaW5lZCBkZXNjcmlwdGlvbnMsIHBzZXVkby1kZXZpY2VzLCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgc3l6X2dlbmV0bGlua2AuIEFuZCBJIHJlbWVtYmVyLCBubywgaXQmIzM5O3Mgbm90IGFyYml0cmFyeSBEVCBub2RlcyB1bmxlc3MgaXQmIzM5O3MgYSBEVC1iYXNlZCBmdXp6ZXIgYW5kIHRoaXMgaXNuJiMzOTt0IG9uZS4KCkJ1dCwgaGFuZyBvbiwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZHJpdmVycyBpZiBpdCAqY2FuKiBpbnN0YW50aWF0ZSB0aGVtLiAgSG93ZXZlciwgdGhpcyBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciAodGhlIGBzdG1tYWNgIHBsYXRmb3JtIGRyaXZlciBoZXJlKSBpcyAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50IG9yLCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGVtdWxhdGVkLgoKU28sIGxldCYjMzk7cyBjb25maXJtIHRoaXMgaXMgaW5kZWVkIGhhcmR3YXJlLXNwZWNpZmljLiBZZXAsIGBkd21hYy1laWM3NzAwLmNgIGlzIGV4cGxpY2l0bHkgZm9yIHRoZSBFc3dpbiBFSUM3NzAwLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gIEkgcmVjYWxsIHRoZSBydWxlIG9mIHRodW1iOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4mIzM0Oy4gQW5kIHRoYXQmIzM5O3Mgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgU29DLiBJdCYjMzk7cyAqaGlnaGx5KiBpbXByb2JhYmxlIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGRyaXZlciBpcyByZWdpc3RlcmVkIHVzaW5nIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKWAuICBJdCAqbmVlZHMqIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIHRoYXQgYCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoJiMzNDtgIG9yIGAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDtgIGNvbXBhdGlibGUgc3RyaW5nLiBJbiBhIHN0YW5kYXJkIHg4Nl82NCBvciBhcm02NCBRRU1VIHZpcnQgbWFjaGluZSwgdGhhdCBub2RlICp3b24mIzM5O3QqIGJlIHRoZXJlLiAgVGhlcmVmb3JlLCB0aGUgYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuICBUaGUgY29kZSBpcyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLgoKSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYFJlYXNvbmluZ2Agd2lsbCBiZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7CgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIGdlbmVyaWMgY29kZSBtaXhlZCBpbi4gTm9wZSwganVzdCB0aGUgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbGAgYW5kIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jYCBmaWxlcy4gIEJvdGggYXJlIHNwZWNpZmljIHRvIHRoZSBFc3dpbiBFSUM3NzAwLgoKSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE0OjIyOjQ3LjkzNDA3MzQyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAyOTgwMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNDoyMjo0Ny45MzQwODAyMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNDM0NjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk0NWM5ZTczODA2ZDk5NDMxNDAxMDBkMWJlMjliMWMzM2VlMjMyOTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNDoyMjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcXG5pbmRleCA2NTg4MmZmNzlkOGQ3ZS4uYmE0OWZkNmEwODZjYjkgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuQEAgLTIwLDE2ICsyMCwzNyBAQCBzZWxlY3Q6XFxuICAgICAgIGNvbnRhaW5zOlxcbiAgICAgICAgIGVudW06XFxuICAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcbiAgIHJlcXVpcmVkOlxcbiAgICAgLSBjb21wYXRpYmxlXFxuIFxcbiBhbGxPZjpcXG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgICAgICAgIG1heGltdW06IDI1NDBcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXFxuKyAgICB0aGVuOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgICAgICAgbWluaW11bTogMjAwMFxcbiBcXG4gcHJvcGVydGllczpcXG4gICBjb21wYXRpYmxlOlxcbiAgICAgaXRlbXM6XFxuLSAgICAgIC0gY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAtIGVudW06XFxuKyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcbiAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjBcXG4gXFxuICAgcmVnOlxcbkBAIC02MywxMCArODQsMTQgQEAgcHJvcGVydGllczpcXG4gICAgICAgLSBjb25zdDogc3RtbWFjZXRoXFxuIFxcbiAgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxcbisgICAgbWluaW11bTogMFxcbisgICAgbWF4aW11bTogMjU0MFxcbisgICAgbXVsdGlwbGVPZjogMjBcXG4gXFxuICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuLSAgICBlbnVtOiBbMCwgMjAwLCA2MDAsIDEyMDAsIDE2MDAsIDE4MDAsIDIwMDAsIDIyMDAsIDI0MDBdXFxuKyAgICBtaW5pbXVtOiAwXFxuKyAgICBtYXhpbXVtOiA0NTQwXFxuKyAgICBtdWx0aXBsZU9mOiAyMFxcbiBcXG4gICBlc3dpbixoc3Atc3AtY3NyOlxcbiAgICAgZGVzY3JpcHRpb246XFxuQEAgLTEwNSw4ICsxMzAsNiBAQCByZXF1aXJlZDpcXG4gICAtIHBoeS1tb2RlXFxuICAgLSByZXNldHNcXG4gICAtIHJlc2V0LW5hbWVzXFxuLSAgLSByeC1pbnRlcm5hbC1kZWxheS1wc1xcbi0gIC0gdHgtaW50ZXJuYWwtZGVsYXktcHNcXG4gICAtIGVzd2luLGhzcC1zcC1jc3JcXG4gXFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG5AQCAtMTE2LDI2ICsxMzksNTEgQEAgZXhhbXBsZXM6XFxuICAgICBldGhlcm5ldEA1MDQwMDAwMCB7XFxuICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcXFwiLCBcXFwic25wcyxkd21hYy01LjIwXFxcIjtcXG4gICAgICAgICByZWcgPSBcXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXFx1MDAzZTtcXG4tICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE4NlxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTcxXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayA0MFxcdTAwM2UsXFxuLSAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE5M1xcdTAwM2U7XFxuLSAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsIFxcXCJzdG1tYWNldGhcXFwiLCBcXFwidHhcXFwiO1xcbiAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNnBsaWNcXHUwMDNlO1xcbiAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjNjFcXHUwMDNlO1xcbiAgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiO1xcbi0gICAgICAgIHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG4tICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZwaHkwXFx1MDAzZTtcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE4NlxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTcxXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayA0MFxcdTAwM2UsXFxuKyAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE5M1xcdTAwM2U7XFxuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsIFxcXCJzdG1tYWNldGhcXFwiLCBcXFwidHhcXFwiO1xcbiAgICAgICAgIHJlc2V0cyA9IFxcdTAwM2NcXHUwMDI2cmVzZXQgOTVcXHUwMDNlO1xcbiAgICAgICAgIHJlc2V0LW5hbWVzID0gXFxcInN0bW1hY2V0aFxcXCI7XFxuLSAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjAwXFx1MDAzZTtcXG4tICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMDBcXHUwMDNlO1xcbiAgICAgICAgIGVzd2luLGhzcC1zcC1jc3IgPSBcXHUwMDNjXFx1MDAyNmhzcF9zcF9jc3IgMHgxMDAgMHgxMDggMHgxMTggMHgxMTQgMHgxMWNcXHUwMDNlO1xcbi0gICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuKyAgICAgICAgcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGh5MFxcdTAwM2U7XFxuKyAgICAgICAgcGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbiAgICAgICAgIHNucHMsYWFsO1xcbiAgICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XFxuICAgICAgICAgc25wcyx0c287XFxuKyAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG4rXFxuICAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbiAgICAgICAgICAgICBzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbiAgICAgICAgICAgICBzbnBzLHJkX29zcl9sbXQgPSBcXHUwMDNjMlxcdTAwM2U7XFxuICAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4gICAgICAgICB9O1xcbiAgICAgfTtcXG4rXFxuKyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcXCIsIFxcXCJzbnBzLGR3bWFjLTUuMjBcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDUwNDEwMDAwIDB4MTAwMDBcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNnBsaWNcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjNzBcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiO1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTg2XFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayAxNzFcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDQwXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTk0XFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJheGlcXFwiLCBcXFwiY2ZnXFxcIiwgXFxcInN0bW1hY2V0aFxcXCIsIFxcXCJ0eFxcXCI7XFxuKyAgICAgICAgcmVzZXRzID0gXFx1MDAzY1xcdTAwMjZyZXNldCA5NFxcdTAwM2U7XFxuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcXFwic3RtbWFjZXRoXFxcIjtcXG4rICAgICAgICBlc3dpbixoc3Atc3AtY3NyID0gXFx1MDAzY1xcdTAwMjZoc3Bfc3BfY3NyIDB4MjAwIDB4MjA4IDB4MjE4IDB4MjE0IDB4MjFjXFx1MDAzZTtcXG4rICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZnbWFjMV9waHkwXFx1MDAzZTtcXG4rICAgICAgICBwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuKyAgICAgICAgc25wcyxhYWw7XFxuKyAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcXG4rICAgICAgICBzbnBzLHRzbztcXG4rICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBfZ21hYzFcXHUwMDNlO1xcbitcXG4rICAgICAgICBzdG1tYWNfYXhpX3NldHVwX2dtYWMxOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuKyAgICAgICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuKyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXFxuQEAgLTI4LDExICsyOCwxNSBAQFxcbiBcXG4gLypcXG4gICogVFgvUlggQ2xvY2sgRGVsYXkgQml0IE1hc2tzOlxcbi0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcXG4tICogLSBSWCBEZWxheTogYml0cyBbMzA6MjRdIOKAlCBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxcbisgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXFxuKyAqIC0gVFggSW52ZXJ0IDogYml0ICBbMTVdXFxuKyAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSAtIFJYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXFxuKyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdXFxuICAqL1xcbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWVxcdEdFTk1BU0soMTQsIDgpXFxuICNkZWZpbmUgRUlDNzcwMF9FVEhfUlhfQURKX0RFTEFZXFx0R0VOTUFTSygzMCwgMjQpXFxuKyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXFx0QklUKDE1KVxcbisjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0lOVl9ERUxBWVxcdEJJVCgzMSlcXG4gXFxuICNkZWZpbmUgRUlDNzcwMF9NQVhfREVMQVlfU1RFUFNcXHRcXHQweDdGXFxuICNkZWZpbmUgRUlDNzcwMF9ERUxBWV9TVEVQX1BTXFx0XFx0MjBcXG5AQCAtNDMsNyArNDcsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBlaWM3NzAwX2Nsa19uYW1lc1tdID0ge1xcbiBcXHRcXFwidHhcXFwiLCBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsXFxuIH07XFxuIFxcbitzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIHtcXG4rXFx0Ym9vbCByZ21paV9yeF9jbGtfaW52ZXJ0O1xcbitcXHRib29sIGhhc19pbnRlcm5hbF90eF9kZWxheTtcXG4rXFx0dTMyIHR4X2Nsa19pbmhlcmVudF9za2V3X3BzO1xcbit9O1xcbitcXG4gc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuIFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuIFxcdHN0cnVjdCByZWdtYXAgKmVpYzc3MDBfaHNwX3JlZ21hcDtcXG4gXFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XFxuQEAgLTU0LDYgKzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xcbiBcXHR1MzIgZXRoX2Nsa19kbHlfcGFyYW07XFxuIFxcdGJvb2wgaGFzX3R4ZF9vZmZzZXQ7XFxuIFxcdGJvb2wgaGFzX3J4ZF9vZmZzZXQ7XFxuK1xcdGJvb2wgZXRoX3J4X2Nsa19pbnY7XFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbkBAIC05Nyw5ICsxMDksNiBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuIFxcdGlmIChkd2MtXFx1MDAzZWhhc19yeGRfb2Zmc2V0KVxcbiBcXHRcXHRyZWdtYXBfd3JpdGUoZHdjLVxcdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xcbiBcXG4tXFx0cmVnbWFwX3dyaXRlKGR3Yy1cXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXFx1MDAzZWV0aF9jbGtfb2Zmc2V0LFxcbi1cXHRcXHQgICAgIGR3Yy1cXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xcbi1cXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTEyNiw4ICsxMzUsMzggQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XFxuKyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LlxcbisgKlxcbisgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxcbisgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHRcXHQgICAgaW50IHNwZWVkLCB1bnNpZ25lZCBpbnQgbW9kZSlcXG4re1xcbitcXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjID0gKHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICopcHJpdjtcXG4rXFx0dTMyIGRseV9wYXJhbSA9IGR3Yy1cXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW07XFxuK1xcbitcXHRzd2l0Y2ggKHNwZWVkKSB7XFxuK1xcdGNhc2UgU1BFRURfMTAwMDpcXG4rXFx0XFx0aWYgKGR3Yy1cXHUwMDNlZXRoX3J4X2Nsa19pbnYpXFxuK1xcdFxcdFxcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDpcXG4rXFx0Y2FzZSBTUEVFRF8xMDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGRldl93YXJuKGR3Yy1cXHUwMDNlZGV2LCBcXFwidW5zdXBwb3J0ZWQgc3BlZWQgJXVcXFxcblxcXCIsIHNwZWVkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyZWdtYXBfd3JpdGUoZHdjLVxcdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cXHUwMDNlZXRoX2Nsa19vZmZzZXQsIGRseV9wYXJhbSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiB7XFxuK1xcdGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgKmRhdGE7XFxuIFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuIFxcdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcXG5AQCAtMTQ4LDYgKzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0aWYgKCFkd2NfcHJpdilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbitcXHRkd2NfcHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFxuK1xcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmICghZGF0YSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAtRUlOVkFMLCBcXFwibm8gbWF0Y2ggZGF0YSBmb3VuZFxcXFxuXFxcIik7XFxuK1xcbitcXHRkd2NfcHJpdi1cXHUwMDNlZXRoX3J4X2Nsa19pbnYgPSBkYXRhLVxcdTAwM2VyZ21paV9yeF9jbGtfaW52ZXJ0O1xcbitcXHQvKlxcbitcXHQgKiBUaGUgTUFDIHNpbGljb24gdW5jb25kaXRpb25hbGx5IGFkZHMgfjIgbnMgVFggZGVsYXk7IHByZXZlbnRcXG4rXFx0ICogdGhlIFBIWSBmcm9tIGFsc28gYWRkaW5nIFRYIGRlbGF5IHRvIGF2b2lkIGRvdWJsaW5nIGl0LlxcbitcXHQgKlxcbitcXHQgKiBEVCBzcGVjaWZpZXMgcmdtaWktaWQgKFRYIGZyb20gTUFDIHNpbGljb24sIFJYIGZyb20gUEhZKTtcXG4rXFx0ICogb3ZlcnJpZGUgdG8gcmdtaWktcnhpZCBzbyB0aGUgUEhZIG9ubHkgYWRkcyBpdHMgUlggZGVsYXkuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGF0YS1cXHUwMDNlaGFzX2ludGVybmFsX3R4X2RlbGF5KSB7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID1cXG4rXFx0XFx0XFx0XFx0IHBoeV9maXhfcGh5X21vZGVfZm9yX21hY19kZWxheXMocGxhdF9kYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpXFxuK1xcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuK1xcdFxcdFxcdFxcdFxcXCJwaHkgaW50ZXJmYWNlIG1vZGUgaXMgTkFcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBSZWFkIHJ4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgcnhfY2xrIGRlbGF5ICovXFxuIFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsXFxuIFxcdFxcdFxcdFxcdCAgXFxcInJ4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5X3BzKSkge1xcbkBAIC0xNjUsMTIgKzIyOCwxNSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0ZHdjX3ByaXYtXFx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFxcdTAwMjY9IH5FSUM3NzAwX0VUSF9SWF9BREpfREVMQVk7XFxuIFxcdFxcdGR3Y19wcml2LVxcdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxcbiBcXHRcXHRcXHRcXHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9SWF9BREpfREVMQVksIHZhbCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuLVxcdFxcdFxcdFxcXCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHJ4LWludGVybmFsLWRlbGF5LXBzXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqL1xcbitcXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LlxcbitcXHQgKlxcbitcXHQgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXNcXG4rXFx0ICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudFxcbitcXHQgKiBzaWxpY29uIGRlbGF5LiBTdWJ0cmFjdCB0aGUgZml4ZWQgY29tcG9uZW50IHRvIG9idGFpbiB0aGVcXG4rXFx0ICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLlxcbitcXHQgKi9cXG4gXFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSxcXG4gXFx0XFx0XFx0XFx0ICBcXFwidHgtaW50ZXJuYWwtZGVsYXktcHNcXFwiLCBcXHUwMDI2ZGVsYXlfcHMpKSB7XFxuIFxcdFxcdGlmIChkZWxheV9wcyAlIEVJQzc3MDBfREVMQVlfU1RFUF9QUylcXG5AQCAtMTc4LDE4ICsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcXCJ0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdEVJQzc3MDBfREVMQVlfU1RFUF9QUyk7XFxuIFxcbitcXHRcXHRpZiAoZGVsYXlfcHMgXFx1MDAzYyBkYXRhLVxcdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcylcXG4rXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVJTlZBTCxcXG4rXFx0XFx0XFx0XFx0XFxcInR4IGRlbGF5ICV1cHMgYmVsb3cgaW5oZXJlbnQgc2tldyAldXBzXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRkZWxheV9wcywgZGF0YS1cXHUwMDNldHhfY2xrX2luaGVyZW50X3NrZXdfcHMpO1xcbitcXG4rXFx0XFx0ZGVsYXlfcHMgLT0gZGF0YS1cXHUwMDNldHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XFxuK1xcbiBcXHRcXHRpZiAoZGVsYXlfcHMgXFx1MDAzZSBFSUM3NzAwX01BWF9ERUxBWV9QUylcXG4gXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVJTlZBTCxcXG4tXFx0XFx0XFx0XFx0XFxcInR4IGRlbGF5IG91dCBvZiByYW5nZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdFxcXCJ0eCBkZWxheSBvdXQgb2YgcHJvZ3JhbW1hYmxlIHJhbmdlXFxcXG5cXFwiKTtcXG4gXFxuIFxcdFxcdHZhbCA9IGRlbGF5X3BzIC8gRUlDNzcwMF9ERUxBWV9TVEVQX1BTO1xcbiBcXG4gXFx0XFx0ZHdjX3ByaXYtXFx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFxcdTAwMjY9IH5FSUM3NzAwX0VUSF9UWF9BREpfREVMQVk7XFxuIFxcdFxcdGR3Y19wcml2LVxcdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxcbiBcXHRcXHRcXHRcXHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9UWF9BREpfREVMQVksIHZhbCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuLVxcdFxcdFxcdFxcXCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZHdjX3ByaXYtXFx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCA9XFxuQEAgLTI2MCwxMiArMzMwLDMxIEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRwbGF0X2RhdC1cXHUwMDNlZXhpdCA9IGVpYzc3MDBfZHdtYWNfZXhpdDtcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBlaWM3NzAwX2R3bWFjX3Jlc3VtZTtcXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZDtcXG4gXFxuIFxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiB9XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGEgPSB7XFxuK1xcdC5yZ21paV9yeF9jbGtfaW52ZXJ0ID0gZmFsc2UsXFxuK1xcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSBmYWxzZSxcXG4rXFx0LnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uID0ge1xcbitcXHQucmdtaWlfcnhfY2xrX2ludmVydCA9IHRydWUsXFxuK1xcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSB0cnVlLFxcbitcXHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAyMDAwLFxcbit9O1xcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xcbi1cXHR7IC5jb21wYXRpYmxlID0gXFxcImVzd2luLGVpYzc3MDAtcW9zLWV0aFxcXCIgfSxcXG4rXFx0e1xcdC5jb21wYXRpYmxlID0gXFxcImVzd2luLGVpYzc3MDAtcW9zLWV0aFxcXCIsXFxuK1xcdFxcdC5kYXRhID0gXFx1MDAyNmVpYzc3MDBfZHdtYWNfZGF0YSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcXCIsXFxuK1xcdFxcdC5kYXRhID0gXFx1MDAyNmVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uLFxcbitcXHR9LFxcbiBcXHR7IH1cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE0OjIyOjQ4Ljc1OTQwMTkxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5Nzc2NDAzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIChFc3dpbiBFSUM3NzAwIFNvQykgd2hpY2ggcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTQ1YzllNzM4MDZkOTk0MzE0MDEwMGQxYmUyOWIxYzMzZWUyMzI5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTQ6MjI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi5iYTQ5ZmQ2YTA4NmNiOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtMjAsMTYgKzIwLDM3IEBAIHNlbGVjdDpcbiAgICAgICBjb250YWluczpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4rICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cbiAgIHJlcXVpcmVkOlxuICAgICAtIGNvbXBhdGlibGVcbiBcbiBhbGxPZjpcbiAgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xuKyAgLSBpZjpcbisgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgY29tcGF0aWJsZTpcbisgICAgICAgICAgY29udGFpbnM6XG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbisgICAgICAgICAgbWF4aW11bTogMjU0MFxuKyAgLSBpZjpcbisgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgY29tcGF0aWJsZTpcbisgICAgICAgICAgY29udGFpbnM6XG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtaW5pbXVtOiAyMDAwXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4gICAgIGl0ZW1zOlxuLSAgICAgIC0gY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuKyAgICAgIC0gZW51bTpcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGhcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuICAgICAgIC0gY29uc3Q6IHNucHMsZHdtYWMtNS4yMFxuIFxuICAgcmVnOlxuQEAgLTYzLDEwICs4NCwxNCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4tICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF1cbisgICAgbWluaW11bTogMFxuKyAgICBtYXhpbXVtOiAyNTQwXG4rICAgIG11bHRpcGxlT2Y6IDIwXG4gXG4gICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxuKyAgICBtaW5pbXVtOiAwXG4rICAgIG1heGltdW06IDQ1NDBcbisgICAgbXVsdGlwbGVPZjogMjBcbiBcbiAgIGVzd2luLGhzcC1zcC1jc3I6XG4gICAgIGRlc2NyaXB0aW9uOlxuQEAgLTEwNSw4ICsxMzAsNiBAQCByZXF1aXJlZDpcbiAgIC0gcGh5LW1vZGVcbiAgIC0gcmVzZXRzXG4gICAtIHJlc2V0LW5hbWVzXG4tICAtIHJ4LWludGVybmFsLWRlbGF5LXBzXG4tICAtIHR4LWludGVybmFsLWRlbGF5LXBzXG4gICAtIGVzd2luLGhzcC1zcC1jc3JcbiBcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG5AQCAtMTE2LDI2ICsxMzksNTEgQEAgZXhhbXBsZXM6XG4gICAgIGV0aGVybmV0QDUwNDAwMDAwIHtcbiAgICAgICAgIGNvbXBhdGlibGUgPSBcImVzd2luLGVpYzc3MDAtcW9zLWV0aFwiLCBcInNucHMsZHdtYWMtNS4yMFwiO1xuICAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXHUwMDNlO1xuLSAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuLSAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTNcdTAwM2U7XG4tICAgICAgICBjbG9jay1uYW1lcyA9IFwiYXhpXCIsIFwiY2ZnXCIsIFwic3RtbWFjZXRoXCIsIFwidHhcIjtcbiAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZwbGljXHUwMDNlO1xuICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzYxXHUwMDNlO1xuICAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gXCJtYWNpcnFcIjtcbi0gICAgICAgIHBoeS1tb2RlID0gXCJyZ21paS1pZFwiO1xuLSAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4rICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZkMF9jbG9jayAxODZcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDE3MVx1MDAzZSwgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgNDBcdTAwM2UsXG4rICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDE5M1x1MDAzZTtcbisgICAgICAgIGNsb2NrLW5hbWVzID0gXCJheGlcIiwgXCJjZmdcIiwgXCJzdG1tYWNldGhcIiwgXCJ0eFwiO1xuICAgICAgICAgcmVzZXRzID0gXHUwMDNjXHUwMDI2cmVzZXQgOTVcdTAwM2U7XG4gICAgICAgICByZXNldC1uYW1lcyA9IFwic3RtbWFjZXRoXCI7XG4tICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIwMFx1MDAzZTtcbi0gICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjAwXHUwMDNlO1xuICAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgxMDAgMHgxMDggMHgxMTggMHgxMTQgMHgxMWNcdTAwM2U7XG4tICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuKyAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4rICAgICAgICBwaHktbW9kZSA9IFwicmdtaWktaWRcIjtcbiAgICAgICAgIHNucHMsYWFsO1xuICAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcbiAgICAgICAgIHNucHMsdHNvO1xuKyAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbitcbiAgICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbiAgICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbiAgICAgICAgICAgICBzbnBzLHJkX29zcl9sbXQgPSBcdTAwM2MyXHUwMDNlO1xuICAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4gICAgICAgICB9O1xuICAgICB9O1xuK1xuKyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblwiLCBcInNucHMsZHdtYWMtNS4yMFwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQxMDAwMCAweDEwMDAwXHUwMDNlO1xuKyAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNnBsaWNcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjNzBcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiO1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuKyAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTRcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYXhpXCIsIFwiY2ZnXCIsIFwic3RtbWFjZXRoXCIsIFwidHhcIjtcbisgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNnJlc2V0IDk0XHUwMDNlO1xuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcInN0bW1hY2V0aFwiO1xuKyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWNcdTAwM2U7XG4rICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2Z21hYzFfcGh5MFx1MDAzZTtcbisgICAgICAgIHBoeS1tb2RlID0gXCJyZ21paS1pZFwiO1xuKyAgICAgICAgc25wcyxhYWw7XG4rICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuKyAgICAgICAgc25wcyx0c287XG4rICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwX2dtYWMxXHUwMDNlO1xuK1xuKyAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xuKyAgICAgICAgICAgIHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuKyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY1xuQEAgLTI4LDExICsyOCwxNSBAQFxuIFxuIC8qXG4gICogVFgvUlggQ2xvY2sgRGVsYXkgQml0IE1hc2tzOlxuLSAqIC0gVFggRGVsYXk6IGJpdHMgWzE0OjhdIOKAlCBUWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxuLSAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSDigJQgUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbisgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXG4rICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV1cbisgKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0gLSBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxuKyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdXG4gICovXG4gI2RlZmluZSBFSUM3NzAwX0VUSF9UWF9BREpfREVMQVlcdEdFTk1BU0soMTQsIDgpXG4gI2RlZmluZSBFSUM3NzAwX0VUSF9SWF9BREpfREVMQVlcdEdFTk1BU0soMzAsIDI0KVxuKyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXHRCSVQoMTUpXG4rI2RlZmluZSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVlcdEJJVCgzMSlcbiBcbiAjZGVmaW5lIEVJQzc3MDBfTUFYX0RFTEFZX1NURVBTXHRcdDB4N0ZcbiAjZGVmaW5lIEVJQzc3MDBfREVMQVlfU1RFUF9QU1x0XHQyMFxuQEAgLTQzLDcgKzQ3LDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZWljNzcwMF9jbGtfbmFtZXNbXSA9IHtcbiBcdFwidHhcIiwgXCJheGlcIiwgXCJjZmdcIixcbiB9O1xuIFxuK3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEge1xuK1x0Ym9vbCByZ21paV9yeF9jbGtfaW52ZXJ0O1xuK1x0Ym9vbCBoYXNfaW50ZXJuYWxfdHhfZGVsYXk7XG4rXHR1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XG4rfTtcbitcbiBzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiB7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuIFx0c3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwO1xuIFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XG5AQCAtNTQsNiArNjUsNyBAQCBzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiB7XG4gXHR1MzIgZXRoX2Nsa19kbHlfcGFyYW07XG4gXHRib29sIGhhc190eGRfb2Zmc2V0O1xuIFx0Ym9vbCBoYXNfcnhkX29mZnNldDtcbitcdGJvb2wgZXRoX3J4X2Nsa19pbnY7XG4gfTtcbiBcbiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxuQEAgLTk3LDkgKzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChkd2MtXHUwMDNlaGFzX3J4ZF9vZmZzZXQpXG4gXHRcdHJlZ21hcF93cml0ZShkd2MtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xuIFxuLVx0cmVnbWFwX3dyaXRlKGR3Yy1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cdTAwM2VldGhfY2xrX29mZnNldCxcbi1cdFx0ICAgICBkd2MtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEyNiw4ICsxMzUsMzggQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKlxuKyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XG4rICogUlggc2FtcGxpbmcgc2tldyBhdCBNQUMgaW5wdXQuXG4rICpcbisgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxuKyAqIHNhbXBsaW5nIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIG5lZ290aWF0ZWQgbGluayBzcGVlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdFx0ICAgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXG4re1xuK1x0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3YyA9IChzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqKXByaXY7XG4rXHR1MzIgZGx5X3BhcmFtID0gZHdjLVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtO1xuK1xuK1x0c3dpdGNoIChzcGVlZCkge1xuK1x0Y2FzZSBTUEVFRF8xMDAwOlxuK1x0XHRpZiAoZHdjLVx1MDAzZWV0aF9yeF9jbGtfaW52KVxuK1x0XHRcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDA6XG4rXHRjYXNlIFNQRUVEXzEwOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdGRldl93YXJuKGR3Yy1cdTAwM2VkZXYsIFwidW5zdXBwb3J0ZWQgc3BlZWQgJXVcXG5cIiwgc3BlZWQpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRyZWdtYXBfd3JpdGUoZHdjLVx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLVx1MDAzZWV0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pO1xuK31cbitcbiBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4rXHRjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhO1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7XG5AQCAtMTQ4LDYgKzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmICghZHdjX3ByaXYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuK1x0ZHdjX3ByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4rXG4rXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmICghZGF0YSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgICAgIC1FSU5WQUwsIFwibm8gbWF0Y2ggZGF0YSBmb3VuZFxcblwiKTtcbitcbitcdGR3Y19wcml2LVx1MDAzZWV0aF9yeF9jbGtfaW52ID0gZGF0YS1cdTAwM2VyZ21paV9yeF9jbGtfaW52ZXJ0O1xuK1x0LypcbitcdCAqIFRoZSBNQUMgc2lsaWNvbiB1bmNvbmRpdGlvbmFsbHkgYWRkcyB+MiBucyBUWCBkZWxheTsgcHJldmVudFxuK1x0ICogdGhlIFBIWSBmcm9tIGFsc28gYWRkaW5nIFRYIGRlbGF5IHRvIGF2b2lkIGRvdWJsaW5nIGl0LlxuK1x0ICpcbitcdCAqIERUIHNwZWNpZmllcyByZ21paS1pZCAoVFggZnJvbSBNQUMgc2lsaWNvbiwgUlggZnJvbSBQSFkpO1xuK1x0ICogb3ZlcnJpZGUgdG8gcmdtaWktcnhpZCBzbyB0aGUgUEhZIG9ubHkgYWRkcyBpdHMgUlggZGVsYXkuXG4rXHQgKi9cbitcdGlmIChkYXRhLVx1MDAzZWhhc19pbnRlcm5hbF90eF9kZWxheSkge1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID1cbitcdFx0XHRcdCBwaHlfZml4X3BoeV9tb2RlX2Zvcl9tYWNfZGVsYXlzKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4rXHRcdFx0XHRcdFx0XHRcdCB0cnVlLCBmYWxzZSk7XG4rXHRcdGlmIChwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSlcbitcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbitcdFx0XHRcdFwicGh5IGludGVyZmFjZSBtb2RlIGlzIE5BXFxuXCIpO1xuK1x0fVxuK1xuIFx0LyogUmVhZCByeC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHJ4X2NsayBkZWxheSAqL1xuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuIFx0XHRcdFx0ICBcInJ4LWludGVybmFsLWRlbGF5LXBzXCIsIFx1MDAyNmRlbGF5X3BzKSkge1xuQEAgLTE2NSwxMiArMjI4LDE1IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSBcdTAwMjY9IH5FSUM3NzAwX0VUSF9SWF9BREpfREVMQVk7XG4gXHRcdGR3Y19wcml2LVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIHw9XG4gXHRcdFx0XHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9SWF9BREpfREVMQVksIHZhbCk7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbi1cdFx0XHRcIm1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgcngtaW50ZXJuYWwtZGVsYXktcHNcXG5cIik7XG4gXHR9XG4gXG4tXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5ICovXG4rXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LlxuK1x0ICpcbitcdCAqIEZvciBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbiwgdGhlIERUIHByb3BlcnR5IGRlc2NyaWJlc1xuK1x0ICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudFxuK1x0ICogc2lsaWNvbiBkZWxheS4gU3VidHJhY3QgdGhlIGZpeGVkIGNvbXBvbmVudCB0byBvYnRhaW4gdGhlXG4rXHQgKiBwcm9ncmFtbWFibGUgZGVsYXkgdmFsdWUuXG4rXHQgKi9cbiBcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSxcbiBcdFx0XHRcdCAgXCJ0eC1pbnRlcm5hbC1kZWxheS1wc1wiLCBcdTAwMjZkZWxheV9wcykpIHtcbiBcdFx0aWYgKGRlbGF5X3BzICUgRUlDNzcwMF9ERUxBWV9TVEVQX1BTKVxuQEAgLTE3OCwxOCArMjQ0LDIyIEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XCJ0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXG5cIixcbiBcdFx0XHRcdEVJQzc3MDBfREVMQVlfU1RFUF9QUyk7XG4gXG4rXHRcdGlmIChkZWxheV9wcyBcdTAwM2MgZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcylcbitcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbitcdFx0XHRcdFwidHggZGVsYXkgJXVwcyBiZWxvdyBpbmhlcmVudCBza2V3ICV1cHNcXG5cIixcbitcdFx0XHRcdGRlbGF5X3BzLCBkYXRhLVx1MDAzZXR4X2Nsa19pbmhlcmVudF9za2V3X3BzKTtcbitcbitcdFx0ZGVsYXlfcHMgLT0gZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcztcbitcbiBcdFx0aWYgKGRlbGF5X3BzIFx1MDAzZSBFSUM3NzAwX01BWF9ERUxBWV9QUylcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbi1cdFx0XHRcdFwidHggZGVsYXkgb3V0IG9mIHJhbmdlXFxuXCIpO1xuK1x0XHRcdFx0XCJ0eCBkZWxheSBvdXQgb2YgcHJvZ3JhbW1hYmxlIHJhbmdlXFxuXCIpO1xuIFxuIFx0XHR2YWwgPSBkZWxheV9wcyAvIEVJQzc3MDBfREVMQVlfU1RFUF9QUztcbiBcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gXHUwMDI2PSB+RUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZO1xuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxuIFx0XHRcdFx0IEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXFxuXCIpO1xuIFx0fVxuIFxuIFx0ZHdjX3ByaXYtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwID1cbkBAIC0yNjAsMTIgKzMzMCwzMSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG4rXHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZWljNzcwMF9kd21hY19maXhfc3BlZWQ7XG4gXG4gXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGEgPSB7XG4rXHQucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLFxuK1x0Lmhhc19pbnRlcm5hbF90eF9kZWxheSA9IGZhbHNlLFxuK1x0LnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uID0ge1xuK1x0LnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLFxuK1x0Lmhhc19pbnRlcm5hbF90eF9kZWxheSA9IHRydWUsXG4rXHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAyMDAwLFxuK307XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoXCIgfSxcbitcdHtcdC5jb21wYXRpYmxlID0gXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcIixcbitcdFx0LmRhdGEgPSBcdTAwMjZlaWM3NzAwX2R3bWFjX2RhdGEsXG4rXHR9LFxuK1x0e1xuK1x0XHQuY29tcGF0aWJsZSA9IFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cIixcbitcdFx0LmRhdGEgPSBcdTAwMjZlaWM3NzAwX2R3bWFjX2RhdGFfY2xrX2ludmVyc2lvbixcbitcdH0sXG4gXHR7IH1cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTQ6MjI6NDguNzU5NDA0MzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5Nzc2MDM0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY2AuICBCYXNpY2FsbHksIGl0IGFkZHMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsIGBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbmAsIGFuZCBzb21lIGNsb2NrIGludmVyc2lvbi9kZWxheSBsb2dpYyB3aXRoaW4gYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGFuZCBgZWljNzcwMF9kd21hY19maXhfc3BlZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuVGhpcyBkcml2ZXIsIGBkd21hYy1laWM3NzAwLmNgLCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBFc3dpbiBFSUM3NzAwIFNvQy4gUGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0YXJnZXRpbmcgc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSB0aGlzLCBhcmUgKnR5cGljYWxseSogbm90IHJlYWNoYWJsZSBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIEkgbWVhbiwgdW5sZXNzIHRoZXJlJ3Mgc29tZSBkZWRpY2F0ZWQgZW11bGF0aW9uIGZvciB0aGF0ICpleGFjdCogaGFyZHdhcmUuICBBbiBlbXVsYXRvciBmb3IgdGhlIEVzd2luIEVJQzc3MDA/IEhpZ2hseSB1bmxpa2VseS5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHdlIGNhbiBmb3JjZSB0aGUgcHJvYmUuIFRoZSBkcml2ZXIgbWF0Y2hlcyBvbiBgXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcImAgYW5kIHRoZSBuZXcgYFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cImAuIENhbiB3ZSBpbmplY3QgYSBtYXRjaGluZyBkZXZpY2Ugbm9kZSBzb21laG93LCBtYXliZSB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3ZlcmxheT8gU3l6a2FsbGVyIGhhcyBzb21lIHBsYXRmb3JtIGRldmljZSBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLCBidXQgaXQncyB1c3VhbGx5IGVpdGhlciB0aHJvdWdoIHByZWRlZmluZWQgZGVzY3JpcHRpb25zLCBwc2V1ZG8tZGV2aWNlcywgb3IgbWF5YmUgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtgLiBBbmQgSSByZW1lbWJlciwgbm8sIGl0J3Mgbm90IGFyYml0cmFyeSBEVCBub2RlcyB1bmxlc3MgaXQncyBhIERULWJhc2VkIGZ1enplciBhbmQgdGhpcyBpc24ndCBvbmUuXG5cbkJ1dCwgaGFuZyBvbiwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZHJpdmVycyBpZiBpdCAqY2FuKiBpbnN0YW50aWF0ZSB0aGVtLiAgSG93ZXZlciwgdGhpcyBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciAodGhlIGBzdG1tYWNgIHBsYXRmb3JtIGRyaXZlciBoZXJlKSBpcyAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50IG9yLCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGVtdWxhdGVkLlxuXG5TbywgbGV0J3MgY29uZmlybSB0aGlzIGlzIGluZGVlZCBoYXJkd2FyZS1zcGVjaWZpYy4gWWVwLCBgZHdtYWMtZWljNzcwMC5jYCBpcyBleHBsaWNpdGx5IGZvciB0aGUgRXN3aW4gRUlDNzcwMC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/ICBJIHJlY2FsbCB0aGUgcnVsZSBvZiB0aHVtYjogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uXCIuIEFuZCB0aGF0J3Mgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgU29DLiBJdCdzICpoaWdobHkqIGltcHJvYmFibGUgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgd2l0aG91dCBzb21lIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5BbHJpZ2h0LCBsZXQncyBkb3VibGUtY2hlY2sganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFRoaXMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgdXNpbmcgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZWljNzcwMF9kd21hY19kcml2ZXIpYC4gIEl0ICpuZWVkcyogYSBkZXZpY2UgdHJlZSBub2RlIHdpdGggdGhhdCBgXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcImAgb3IgYFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cImAgY29tcGF0aWJsZSBzdHJpbmcuIEluIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFybTY0IFFFTVUgdmlydCBtYWNoaW5lLCB0aGF0IG5vZGUgKndvbid0KiBiZSB0aGVyZS4gIFRoZXJlZm9yZSwgdGhlIGBlaWM3NzAwX2R3bWFjX3Byb2JlYCBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiAgVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgUmVhc29uaW5nYCB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCJcblxuSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjaywgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGlzbid0IHNvbWUgZ2VuZXJpYyBjb2RlIG1peGVkIGluLiBOb3BlLCBqdXN0IHRoZSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNgIGZpbGVzLiAgQm90aCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVzd2luIEVJQzc3MDAuXG5cbkknbGwgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTA3LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTQ6MjM6MDMuNzM3MDExNjg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow7bpsq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 14:04:13 +0000 UTC FinishedAt: 2026-07-07 14:23:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIChFc3dpbiBFSUM3NzAwIFNvQykgd2hpY2ggcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5NDVjOWU3MzgwNmQ5OTQzMTQwMTAwZDFiZTI5YjFjMzNlZTIzMjk3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNDoyMjo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi5iYTQ5ZmQ2YTA4NmNiOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtMjAsMTYgJiM0MzsyMCwzNyBAQCBzZWxlY3Q6XG4gICAgICAgY29udGFpbnM6XG4gICAgICAgICBlbnVtOlxuICAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuJiM0MzsgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuICAgcmVxdWlyZWQ6XG4gICAgIC0gY29tcGF0aWJsZVxuIFxuIGFsbE9mOlxuICAgLSAkcmVmOiBzbnBzLGR3bWFjLnlhbWwjXG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGhcbiYjNDM7ICAgIHRoZW46XG4mIzQzOyAgICAgIHByb3BlcnRpZXM6XG4mIzQzOyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4mIzQzOyAgICAgICAgICBtYXhpbXVtOiAyNTQwXG4mIzQzOyAgLSBpZjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICBjb21wYXRpYmxlOlxuJiM0MzsgICAgICAgICAgY29udGFpbnM6XG4mIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuJiM0MzsgICAgdGhlbjpcbiYjNDM7ICAgICAgcHJvcGVydGllczpcbiYjNDM7ICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbiYjNDM7ICAgICAgICAgIG1pbmltdW06IDIwMDBcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbiAgICAgaXRlbXM6XG4tICAgICAgLSBjb25zdDogZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4mIzQzOyAgICAgIC0gZW51bTpcbiYjNDM7ICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4mIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXG4gICAgICAgLSBjb25zdDogc25wcyxkd21hYy01LjIwXG4gXG4gICByZWc6XG5AQCAtNjMsMTAgJiM0Mzs4NCwxNCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4tICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF1cbiYjNDM7ICAgIG1pbmltdW06IDBcbiYjNDM7ICAgIG1heGltdW06IDI1NDBcbiYjNDM7ICAgIG11bHRpcGxlT2Y6IDIwXG4gXG4gICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxuJiM0MzsgICAgbWluaW11bTogMFxuJiM0MzsgICAgbWF4aW11bTogNDU0MFxuJiM0MzsgICAgbXVsdGlwbGVPZjogMjBcbiBcbiAgIGVzd2luLGhzcC1zcC1jc3I6XG4gICAgIGRlc2NyaXB0aW9uOlxuQEAgLTEwNSw4ICYjNDM7MTMwLDYgQEAgcmVxdWlyZWQ6XG4gICAtIHBoeS1tb2RlXG4gICAtIHJlc2V0c1xuICAgLSByZXNldC1uYW1lc1xuLSAgLSByeC1pbnRlcm5hbC1kZWxheS1wc1xuLSAgLSB0eC1pbnRlcm5hbC1kZWxheS1wc1xuICAgLSBlc3dpbixoc3Atc3AtY3NyXG4gXG4gdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuQEAgLTExNiwyNiAmIzQzOzEzOSw1MSBAQCBleGFtcGxlczpcbiAgICAgZXRoZXJuZXRANTA0MDAwMDAge1xuICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aFwmIzM0OywgXCYjMzQ7c25wcyxkd21hYy01LjIwXCYjMzQ7O1xuICAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXHUwMDNlO1xuLSAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuLSAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTNcdTAwM2U7XG4tICAgICAgICBjbG9jay1uYW1lcyA9IFwmIzM0O2F4aVwmIzM0OywgXCYjMzQ7Y2ZnXCYjMzQ7LCBcJiMzNDtzdG1tYWNldGhcJiMzNDssIFwmIzM0O3R4XCYjMzQ7O1xuICAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNnBsaWNcdTAwM2U7XG4gICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjNjFcdTAwM2U7XG4gICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcJiMzNDttYWNpcnFcJiMzNDs7XG4tICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuLSAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTkzXHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7YXhpXCYjMzQ7LCBcJiMzNDtjZmdcJiMzNDssIFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7dHhcJiMzNDs7XG4gICAgICAgICByZXNldHMgPSBcdTAwM2NcdTAwMjZyZXNldCA5NVx1MDAzZTtcbiAgICAgICAgIHJlc2V0LW5hbWVzID0gXCYjMzQ7c3RtbWFjZXRoXCYjMzQ7O1xuLSAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMDBcdTAwM2U7XG4tICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIwMFx1MDAzZTtcbiAgICAgICAgIGVzd2luLGhzcC1zcC1jc3IgPSBcdTAwM2NcdTAwMjZoc3Bfc3BfY3NyIDB4MTAwIDB4MTA4IDB4MTE4IDB4MTE0IDB4MTFjXHUwMDNlO1xuLSAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbiYjNDM7ICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGh5MFx1MDAzZTtcbiYjNDM7ICAgICAgICBwaHktbW9kZSA9IFwmIzM0O3JnbWlpLWlkXCYjMzQ7O1xuICAgICAgICAgc25wcyxhYWw7XG4gICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuICAgICAgICAgc25wcyx0c287XG4mIzQzOyAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbiYjNDM7XG4gICAgICAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7XG4gICAgICAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4gICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gXHUwMDNjMlx1MDAzZTtcbiAgICAgICAgICAgICBzbnBzLHdyX29zcl9sbXQgPSBcdTAwM2MyXHUwMDNlO1xuICAgICAgICAgfTtcbiAgICAgfTtcbiYjNDM7XG4mIzQzOyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XG4mIzQzOyAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXCYjMzQ7LCBcJiMzNDtzbnBzLGR3bWFjLTUuMjBcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQxMDAwMCAweDEwMDAwXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZwbGljXHUwMDNlO1xuJiM0MzsgICAgICAgIGludGVycnVwdHMgPSBcdTAwM2M3MFx1MDAzZTtcbiYjNDM7ICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcJiMzNDttYWNpcnFcJiMzNDs7XG4mIzQzOyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuJiM0MzsgICAgICAgICAgICAgICAgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTk0XHUwMDNlO1xuJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gXCYjMzQ7YXhpXCYjMzQ7LCBcJiMzNDtjZmdcJiMzNDssIFwmIzM0O3N0bW1hY2V0aFwmIzM0OywgXCYjMzQ7dHhcJiMzNDs7XG4mIzQzOyAgICAgICAgcmVzZXRzID0gXHUwMDNjXHUwMDI2cmVzZXQgOTRcdTAwM2U7XG4mIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSBcJiMzNDtzdG1tYWNldGhcJiMzNDs7XG4mIzQzOyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWNcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNmdtYWMxX3BoeTBcdTAwM2U7XG4mIzQzOyAgICAgICAgcGh5LW1vZGUgPSBcJiMzNDtyZ21paS1pZFwmIzM0OztcbiYjNDM7ICAgICAgICBzbnBzLGFhbDtcbiYjNDM7ICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuJiM0MzsgICAgICAgIHNucHMsdHNvO1xuJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFx1MDAzY1x1MDAyNnN0bW1hY19heGlfc2V0dXBfZ21hYzFcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIHN0bW1hY19heGlfc2V0dXBfZ21hYzE6IHN0bW1hYy1heGktY29uZmlnIHtcbiYjNDM7ICAgICAgICAgICAgc25wcyxibGVuID0gXHUwMDNjMCAwIDAgMCAxNiA4IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY1xuQEAgLTI4LDExICYjNDM7MjgsMTUgQEBcbiBcbiAvKlxuICAqIFRYL1JYIENsb2NrIERlbGF5IEJpdCBNYXNrczpcbi0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbi0gKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0g4oCUIFJYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXG4mIzQzOyAqIC0gVFggRGVsYXk6IGJpdHMgWzE0OjhdIC0gVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbiYjNDM7ICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV1cbiYjNDM7ICogLSBSWCBEZWxheTogYml0cyBbMzA6MjRdIC0gUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbiYjNDM7ICogLSBSWCBJbnZlcnQgOiBiaXQgIFszMV1cbiAgKi9cbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWVx0R0VOTUFTSygxNCwgOClcbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWVx0R0VOTUFTSygzMCwgMjQpXG4mIzQzOyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXHRCSVQoMTUpXG4mIzQzOyNkZWZpbmUgRUlDNzcwMF9FVEhfUlhfSU5WX0RFTEFZXHRCSVQoMzEpXG4gXG4gI2RlZmluZSBFSUM3NzAwX01BWF9ERUxBWV9TVEVQU1x0XHQweDdGXG4gI2RlZmluZSBFSUM3NzAwX0RFTEFZX1NURVBfUFNcdFx0MjBcbkBAIC00Myw3ICYjNDM7NDcsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBlaWM3NzAwX2Nsa19uYW1lc1tdID0ge1xuIFx0XCYjMzQ7dHhcJiMzNDssIFwmIzM0O2F4aVwmIzM0OywgXCYjMzQ7Y2ZnXCYjMzQ7LFxuIH07XG4gXG4mIzQzO3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEge1xuJiM0MztcdGJvb2wgcmdtaWlfcnhfY2xrX2ludmVydDtcbiYjNDM7XHRib29sIGhhc19pbnRlcm5hbF90eF9kZWxheTtcbiYjNDM7XHR1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XG4mIzQzO307XG4mIzQzO1xuIHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2IHtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuIFx0c3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwO1xuIFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XG5AQCAtNTQsNiAmIzQzOzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xuIFx0dTMyIGV0aF9jbGtfZGx5X3BhcmFtO1xuIFx0Ym9vbCBoYXNfdHhkX29mZnNldDtcbiBcdGJvb2wgaGFzX3J4ZF9vZmZzZXQ7XG4mIzQzO1x0Ym9vbCBldGhfcnhfY2xrX2ludjtcbiB9O1xuIFxuIHN0YXRpYyBpbnQgZWljNzcwMF9jbGtzX2NvbmZpZyh2b2lkICpwcml2LCBib29sIGVuYWJsZWQpXG5AQCAtOTcsOSAmIzQzOzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChkd2MtXHUwMDNlaGFzX3J4ZF9vZmZzZXQpXG4gXHRcdHJlZ21hcF93cml0ZShkd2MtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xuIFxuLVx0cmVnbWFwX3dyaXRlKGR3Yy1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cdTAwM2VldGhfY2xrX29mZnNldCxcbi1cdFx0ICAgICBkd2MtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEyNiw4ICYjNDM7MTM1LDM4IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwcml2KVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XG4mIzQzOyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxuJiM0MzsgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuJiM0MztcdFx0XHRcdCAgICBpbnQgc3BlZWQsIHVuc2lnbmVkIGludCBtb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3YyA9IChzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqKXByaXY7XG4mIzQzO1x0dTMyIGRseV9wYXJhbSA9IGR3Yy1cdTAwM2VldGhfY2xrX2RseV9wYXJhbTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChzcGVlZCkge1xuJiM0MztcdGNhc2UgU1BFRURfMTAwMDpcbiYjNDM7XHRcdGlmIChkd2MtXHUwMDNlZXRoX3J4X2Nsa19pbnYpXG4mIzQzO1x0XHRcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDpcbiYjNDM7XHRjYXNlIFNQRUVEXzEwOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdGRldl93YXJuKGR3Yy1cdTAwM2VkZXYsIFwmIzM0O3Vuc3VwcG9ydGVkIHNwZWVkICV1XFxuXCYjMzQ7LCBzcGVlZCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZWdtYXBfd3JpdGUoZHdjLVx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLVx1MDAzZWV0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhO1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7XG5AQCAtMTQ4LDYgJiM0MzsxODcsMzAgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRpZiAoIWR3Y19wcml2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiYjNDM7XHRkd2NfcHJpdi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiYjNDM7XG4mIzQzO1x0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0aWYgKCFkYXRhKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAtRUlOVkFMLCBcJiMzNDtubyBtYXRjaCBkYXRhIGZvdW5kXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0ZHdjX3ByaXYtXHUwMDNlZXRoX3J4X2Nsa19pbnYgPSBkYXRhLVx1MDAzZXJnbWlpX3J4X2Nsa19pbnZlcnQ7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBUaGUgTUFDIHNpbGljb24gdW5jb25kaXRpb25hbGx5IGFkZHMgfjIgbnMgVFggZGVsYXk7IHByZXZlbnRcbiYjNDM7XHQgKiB0aGUgUEhZIGZyb20gYWxzbyBhZGRpbmcgVFggZGVsYXkgdG8gYXZvaWQgZG91YmxpbmcgaXQuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBEVCBzcGVjaWZpZXMgcmdtaWktaWQgKFRYIGZyb20gTUFDIHNpbGljb24sIFJYIGZyb20gUEhZKTtcbiYjNDM7XHQgKiBvdmVycmlkZSB0byByZ21paS1yeGlkIHNvIHRoZSBQSFkgb25seSBhZGRzIGl0cyBSWCBkZWxheS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGF0YS1cdTAwM2VoYXNfaW50ZXJuYWxfdHhfZGVsYXkpIHtcbiYjNDM7XHRcdHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPVxuJiM0MztcdFx0XHRcdCBwaHlfZml4X3BoeV9tb2RlX2Zvcl9tYWNfZGVsYXlzKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgdHJ1ZSwgZmFsc2UpO1xuJiM0MztcdFx0aWYgKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKVxuJiM0MztcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbiYjNDM7XHRcdFx0XHRcJiMzNDtwaHkgaW50ZXJmYWNlIG1vZGUgaXMgTkFcXG5cJiMzNDspO1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBSZWFkIHJ4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgcnhfY2xrIGRlbGF5ICovXG4gXHRpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsXG4gXHRcdFx0XHQgIFwmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzXCYjMzQ7LCBcdTAwMjZkZWxheV9wcykpIHtcbkBAIC0xNjUsMTIgJiM0MzsyMjgsMTUgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdGR3Y19wcml2LVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFx1MDAyNj0gfkVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWTtcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gfD1cbiBcdFx0XHRcdCBGSUVMRF9QUkVQKEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWSwgdmFsKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCAtRUlOVkFMLFxuLVx0XHRcdFwmIzM0O21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgcngtaW50ZXJuYWwtZGVsYXktcHNcXG5cJiMzNDspO1xuIFx0fVxuIFxuLVx0LyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqL1xuJiM0MztcdC8qIFJlYWQgdHgtaW50ZXJuYWwtZGVsYXktcHMgYW5kIHVwZGF0ZSB0eF9jbGsgZGVsYXkuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXNcbiYjNDM7XHQgKiB0aGUgZWZmZWN0aXZlIFRYIGRlbGF5IGF0IHRoZSBNQUMgb3V0cHV0LCBpbmNsdWRpbmcgdGhlIGluaGVyZW50XG4mIzQzO1x0ICogc2lsaWNvbiBkZWxheS4gU3VidHJhY3QgdGhlIGZpeGVkIGNvbXBvbmVudCB0byBvYnRhaW4gdGhlXG4mIzQzO1x0ICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLlxuJiM0MztcdCAqL1xuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuIFx0XHRcdFx0ICBcJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wc1wmIzM0OywgXHUwMDI2ZGVsYXlfcHMpKSB7XG4gXHRcdGlmIChkZWxheV9wcyAlIEVJQzc3MDBfREVMQVlfU1RFUF9QUylcbkBAIC0xNzgsMTggJiM0MzsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0XHRcJiMzNDt0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXG5cJiMzNDssXG4gXHRcdFx0XHRFSUM3NzAwX0RFTEFZX1NURVBfUFMpO1xuIFxuJiM0MztcdFx0aWYgKGRlbGF5X3BzIFx1MDAzYyBkYXRhLVx1MDAzZXR4X2Nsa19pbmhlcmVudF9za2V3X3BzKVxuJiM0MztcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbiYjNDM7XHRcdFx0XHRcJiMzNDt0eCBkZWxheSAldXBzIGJlbG93IGluaGVyZW50IHNrZXcgJXVwc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRkZWxheV9wcywgZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcyk7XG4mIzQzO1xuJiM0MztcdFx0ZGVsYXlfcHMgLT0gZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcztcbiYjNDM7XG4gXHRcdGlmIChkZWxheV9wcyBcdTAwM2UgRUlDNzcwMF9NQVhfREVMQVlfUFMpXG4gXHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XHRcJiMzNDt0eCBkZWxheSBvdXQgb2YgcmFuZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdFwmIzM0O3R4IGRlbGF5IG91dCBvZiBwcm9ncmFtbWFibGUgcmFuZ2VcXG5cJiMzNDspO1xuIFxuIFx0XHR2YWwgPSBkZWxheV9wcyAvIEVJQzc3MDBfREVMQVlfU1RFUF9QUztcbiBcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gXHUwMDI2PSB+RUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZO1xuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxuIFx0XHRcdFx0IEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XCYjMzQ7bWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSB0eC1pbnRlcm5hbC1kZWxheS1wc1xcblwmIzM0Oyk7XG4gXHR9XG4gXG4gXHRkd2NfcHJpdi1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAgPVxuQEAgLTI2MCwxMiAmIzQzOzMzMCwzMSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG4mIzQzO1x0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGVpYzc3MDBfZHdtYWNfZml4X3NwZWVkO1xuIFxuIFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YSA9IHtcbiYjNDM7XHQucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLFxuJiM0MztcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSBmYWxzZSxcbiYjNDM7XHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24gPSB7XG4mIzQzO1x0LnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLFxuJiM0MztcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSB0cnVlLFxuJiM0MztcdC50eF9jbGtfaW5oZXJlbnRfc2tld19wcyA9IDIwMDAsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGVpYzc3MDBfZHdtYWNfbWF0Y2hbXSA9IHtcbi1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtlc3dpbixlaWM3NzAwLXFvcy1ldGhcJiMzNDsgfSxcbiYjNDM7XHR7XHQuY29tcGF0aWJsZSA9IFwmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aFwmIzM0OyxcbiYjNDM7XHRcdC5kYXRhID0gXHUwMDI2ZWljNzcwMF9kd21hY19kYXRhLFxuJiM0MztcdH0sXG4mIzQzO1x0e1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblwmIzM0OyxcbiYjNDM7XHRcdC5kYXRhID0gXHUwMDI2ZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24sXG4mIzQzO1x0fSxcbiBcdHsgfVxuIH07XG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQ1YzllNzM4MDZkOTk0MzE0MDEwMGQxYmUyOWIxYzMzZWUyMzI5NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKaW5kZXggNjU4ODJmZjc5ZDhkN2UuLmJhNDlmZDZhMDg2Y2I5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sCkBAIC0yMCwxNiAmIzQzOzIwLDM3IEBAIHNlbGVjdDoKICAgICAgIGNvbnRhaW5zOgogICAgICAgICBlbnVtOgogICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoCiYjNDM7ICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24KICAgcmVxdWlyZWQ6CiAgICAgLSBjb21wYXRpYmxlCiAKIGFsbE9mOgogICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCMKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgKJiM0MzsgICAgdGhlbjoKJiM0MzsgICAgICBwcm9wZXJ0aWVzOgomIzQzOyAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgICAgICAgIG1heGltdW06IDI1NDAKJiM0MzsgIC0gaWY6CiYjNDM7ICAgICAgcHJvcGVydGllczoKJiM0MzsgICAgICAgIGNvbXBhdGlibGU6CiYjNDM7ICAgICAgICAgIGNvbnRhaW5zOgomIzQzOyAgICAgICAgICAgIGNvbnN0OiBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbgomIzQzOyAgICB0aGVuOgomIzQzOyAgICAgIHByb3BlcnRpZXM6CiYjNDM7ICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgICAgICAgbWluaW11bTogMjAwMAogCiBwcm9wZXJ0aWVzOgogICBjb21wYXRpYmxlOgogICAgIGl0ZW1zOgotICAgICAgLSBjb25zdDogZXN3aW4sZWljNzcwMC1xb3MtZXRoCiYjNDM7ICAgICAgLSBlbnVtOgomIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aAomIzQzOyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uCiAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjAKIAogICByZWc6CkBAIC02MywxMCAmIzQzOzg0LDE0IEBAIHByb3BlcnRpZXM6CiAgICAgICAtIGNvbnN0OiBzdG1tYWNldGgKIAogICByeC1pbnRlcm5hbC1kZWxheS1wczoKLSAgICBlbnVtOiBbMCwgMjAwLCA2MDAsIDEyMDAsIDE2MDAsIDE4MDAsIDIwMDAsIDIyMDAsIDI0MDBdCiYjNDM7ICAgIG1pbmltdW06IDAKJiM0MzsgICAgbWF4aW11bTogMjU0MAomIzQzOyAgICBtdWx0aXBsZU9mOiAyMAogCiAgIHR4LWludGVybmFsLWRlbGF5LXBzOgotICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF0KJiM0MzsgICAgbWluaW11bTogMAomIzQzOyAgICBtYXhpbXVtOiA0NTQwCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDIwCiAKICAgZXN3aW4saHNwLXNwLWNzcjoKICAgICBkZXNjcmlwdGlvbjoKQEAgLTEwNSw4ICYjNDM7MTMwLDYgQEAgcmVxdWlyZWQ6CiAgIC0gcGh5LW1vZGUKICAgLSByZXNldHMKICAgLSByZXNldC1uYW1lcwotICAtIHJ4LWludGVybmFsLWRlbGF5LXBzCi0gIC0gdHgtaW50ZXJuYWwtZGVsYXktcHMKICAgLSBlc3dpbixoc3Atc3AtY3NyCiAKIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UKQEAgLTExNiwyNiAmIzQzOzEzOSw1MSBAQCBleGFtcGxlczoKICAgICBldGhlcm5ldEA1MDQwMDAwMCB7CiAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7LCAmIzM0O3NucHMsZHdtYWMtNS4yMCYjMzQ7OwogICAgICAgICByZWcgPSAmbHQ7MHg1MDQwMDAwMCAweDEwMDAwJmd0OzsKLSAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7ZDBfY2xvY2sgMTg2Jmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgMTcxJmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgNDAmZ3Q7LAotICAgICAgICAgICAgICAgICZsdDsmYW1wO2QwX2Nsb2NrIDE5MyZndDs7Ci0gICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDtheGkmIzM0OywgJiMzNDtjZmcmIzM0OywgJiMzNDtzdG1tYWNldGgmIzM0OywgJiMzNDt0eCYjMzQ7OwogICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7cGxpYyZndDs7CiAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7NjEmZ3Q7OwogICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSAmIzM0O21hY2lycSYjMzQ7OwotICAgICAgICBwaHktbW9kZSA9ICYjMzQ7cmdtaWktaWQmIzM0OzsKLSAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2tzID0gJmx0OyZhbXA7ZDBfY2xvY2sgMTg2Jmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgMTcxJmd0OywgJmx0OyZhbXA7ZDBfY2xvY2sgNDAmZ3Q7LAomIzQzOyAgICAgICAgICAgICAgICAmbHQ7JmFtcDtkMF9jbG9jayAxOTMmZ3Q7OwomIzQzOyAgICAgICAgY2xvY2stbmFtZXMgPSAmIzM0O2F4aSYjMzQ7LCAmIzM0O2NmZyYjMzQ7LCAmIzM0O3N0bW1hY2V0aCYjMzQ7LCAmIzM0O3R4JiMzNDs7CiAgICAgICAgIHJlc2V0cyA9ICZsdDsmYW1wO3Jlc2V0IDk1Jmd0OzsKICAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7OwotICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMDAmZ3Q7OwotICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMDAmZ3Q7OwogICAgICAgICBlc3dpbixoc3Atc3AtY3NyID0gJmx0OyZhbXA7aHNwX3NwX2NzciAweDEwMCAweDEwOCAweDExOCAweDExNCAweDExYyZndDs7Ci0gICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LW1vZGUgPSAmIzM0O3JnbWlpLWlkJiMzNDs7CiAgICAgICAgIHNucHMsYWFsOwogICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0OwogICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXAmZ3Q7OwomIzQzOwogICAgICAgICBzdG1tYWNfYXhpX3NldHVwOiBzdG1tYWMtYXhpLWNvbmZpZyB7CiAgICAgICAgICAgICBzbnBzLGJsZW4gPSAmbHQ7MCAwIDAgMCAxNiA4IDQmZ3Q7OwogICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gJmx0OzImZ3Q7OwogICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gJmx0OzImZ3Q7OwogICAgICAgICB9OwogICAgIH07CiYjNDM7CiYjNDM7ICAgIGV0aGVybmV0QDUwNDEwMDAwIHsKJiM0MzsgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDssICYjMzQ7c25wcyxkd21hYy01LjIwJiMzNDs7CiYjNDM7ICAgICAgICByZWcgPSAmbHQ7MHg1MDQxMDAwMCAweDEwMDAwJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSAmbHQ7JmFtcDtwbGljJmd0OzsKJiM0MzsgICAgICAgIGludGVycnVwdHMgPSAmbHQ7NzAmZ3Q7OwomIzQzOyAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gJiMzNDttYWNpcnEmIzM0OzsKJiM0MzsgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2QwX2Nsb2NrIDE4NiZndDssICZsdDsmYW1wO2QwX2Nsb2NrIDE3MSZndDssICZsdDsmYW1wO2QwX2Nsb2NrIDQwJmd0OywKJiM0MzsgICAgICAgICAgICAgICAgJmx0OyZhbXA7ZDBfY2xvY2sgMTk0Jmd0OzsKJiM0MzsgICAgICAgIGNsb2NrLW5hbWVzID0gJiMzNDtheGkmIzM0OywgJiMzNDtjZmcmIzM0OywgJiMzNDtzdG1tYWNldGgmIzM0OywgJiMzNDt0eCYjMzQ7OwomIzQzOyAgICAgICAgcmVzZXRzID0gJmx0OyZhbXA7cmVzZXQgOTQmZ3Q7OwomIzQzOyAgICAgICAgcmVzZXQtbmFtZXMgPSAmIzM0O3N0bW1hY2V0aCYjMzQ7OwomIzQzOyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9ICZsdDsmYW1wO2hzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWMmZ3Q7OwomIzQzOyAgICAgICAgcGh5LWhhbmRsZSA9ICZsdDsmYW1wO2dtYWMxX3BoeTAmZ3Q7OwomIzQzOyAgICAgICAgcGh5LW1vZGUgPSAmIzM0O3JnbWlpLWlkJiMzNDs7CiYjNDM7ICAgICAgICBzbnBzLGFhbDsKJiM0MzsgICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7CiYjNDM7ICAgICAgICBzbnBzLHRzbzsKJiM0MzsgICAgICAgIHNucHMsYXhpLWNvbmZpZyA9ICZsdDsmYW1wO3N0bW1hY19heGlfc2V0dXBfZ21hYzEmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcgewomIzQzOyAgICAgICAgICAgIHNucHMsYmxlbiA9ICZsdDswIDAgMCAwIDE2IDggNCZndDs7CiYjNDM7ICAgICAgICAgICAgc25wcyxyZF9vc3JfbG10ID0gJmx0OzImZ3Q7OwomIzQzOyAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9ICZsdDsyJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMKaW5kZXggNGFjOTc5ZDg3NGQ2ZWQuLmVhYjhjMTNmYmRjYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jCkBAIC0yOCwxMSAmIzQzOzI4LDE1IEBACiAKIC8qCiAgKiBUWC9SWCBDbG9jayBEZWxheSBCaXQgTWFza3M6Ci0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdCkKLSAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSDigJQgUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdCkKJiM0MzsgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpCiYjNDM7ICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV0KJiM0MzsgKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0gLSBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KQomIzQzOyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdCiAgKi8KICNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZCUdFTk1BU0soMTQsIDgpCiAjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWQlHRU5NQVNLKDMwLCAyNCkKJiM0MzsjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0lOVl9ERUxBWQlCSVQoMTUpCiYjNDM7I2RlZmluZSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVkJQklUKDMxKQogCiAjZGVmaW5lIEVJQzc3MDBfTUFYX0RFTEFZX1NURVBTCQkweDdGCiAjZGVmaW5lIEVJQzc3MDBfREVMQVlfU1RFUF9QUwkJMjAKQEAgLTQzLDcgJiM0Mzs0NywxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGVpYzc3MDBfY2xrX25hbWVzW10gPSB7CiAJJiMzNDt0eCYjMzQ7LCAmIzM0O2F4aSYjMzQ7LCAmIzM0O2NmZyYjMzQ7LAogfTsKIAomIzQzO3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgewomIzQzOwlib29sIHJnbWlpX3J4X2Nsa19pbnZlcnQ7CiYjNDM7CWJvb2wgaGFzX2ludGVybmFsX3R4X2RlbGF5OwomIzQzOwl1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2IHsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7CiAJc3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwOwogCXUzMiBldGhfYXhpX2xwX2N0cmxfb2Zmc2V0OwpAQCAtNTQsNiAmIzQzOzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgewogCXUzMiBldGhfY2xrX2RseV9wYXJhbTsKIAlib29sIGhhc190eGRfb2Zmc2V0OwogCWJvb2wgaGFzX3J4ZF9vZmZzZXQ7CiYjNDM7CWJvb2wgZXRoX3J4X2Nsa19pbnY7CiB9OwogCiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKQpAQCAtOTcsOSAmIzQzOzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdikKIAlpZiAoZHdjLSZndDtoYXNfcnhkX29mZnNldCkKIAkJcmVnbWFwX3dyaXRlKGR3Yy0mZ3Q7ZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtJmd0O2V0aF9yeGRfb2Zmc2V0LCAwKTsKIAotCXJlZ21hcF93cml0ZShkd2MtJmd0O2VpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLSZndDtldGhfY2xrX29mZnNldCwKLQkJICAgICBkd2MtJmd0O2V0aF9jbGtfZGx5X3BhcmFtKTsKLQogCXJldHVybiAwOwogfQogCkBAIC0xMjYsOCAmIzQzOzEzNSwzOCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdikKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7LyoKJiM0MzsgKiBldGgxIHJlcXVpcmVzIFJYIGNsb2NrIGludmVyc2lvbiBhdCAxMDAwTWJwcyBkdWUgdG8gc2lsaWNvbi1pbmhlcmVudAomIzQzOyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LgomIzQzOyAqCiYjNDM7ICogVGhlIGNvbmZpZ3VyYXRpb24gaXMgdXBkYXRlZCBpbiBmaXhfbWFjX3NwZWVkKCkgYmVjYXVzZSB0aGUgcmVxdWlyZWQKJiM0MzsgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgZWljNzcwMF9kd21hY19maXhfc3BlZWQodm9pZCAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwKJiM0MzsJCQkJICAgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjID0gKHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICopcHJpdjsKJiM0MzsJdTMyIGRseV9wYXJhbSA9IGR3Yy0mZ3Q7ZXRoX2Nsa19kbHlfcGFyYW07CiYjNDM7CiYjNDM7CXN3aXRjaCAoc3BlZWQpIHsKJiM0MzsJY2FzZSBTUEVFRF8xMDAwOgomIzQzOwkJaWYgKGR3Yy0mZ3Q7ZXRoX3J4X2Nsa19pbnYpCiYjNDM7CQkJZGx5X3BhcmFtIHw9IEVJQzc3MDBfRVRIX1JYX0lOVl9ERUxBWTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDoKJiM0MzsJY2FzZSBTUEVFRF8xMDoKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJZGV2X3dhcm4oZHdjLSZndDtkZXYsICYjMzQ7dW5zdXBwb3J0ZWQgc3BlZWQgJXVcbiYjMzQ7LCBzcGVlZCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVnbWFwX3dyaXRlKGR3Yy0mZ3Q7ZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtJmd0O2V0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewomIzQzOwljb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhOwogCXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7CiAJc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlczsKIAlzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7CkBAIC0xNDgsNiAmIzQzOzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoIWR3Y19wcml2KQogCQlyZXR1cm4gLUVOT01FTTsKIAomIzQzOwlkd2NfcHJpdi0mZ3Q7ZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiYjNDM7CiYjNDM7CWRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwlpZiAoIWRhdGEpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmYW1wO3BkZXYtJmd0O2RldiwKJiM0MzsJCQkJICAgICAtRUlOVkFMLCAmIzM0O25vIG1hdGNoIGRhdGEgZm91bmRcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJZHdjX3ByaXYtJmd0O2V0aF9yeF9jbGtfaW52ID0gZGF0YS0mZ3Q7cmdtaWlfcnhfY2xrX2ludmVydDsKJiM0MzsJLyoKJiM0MzsJICogVGhlIE1BQyBzaWxpY29uIHVuY29uZGl0aW9uYWxseSBhZGRzIH4yIG5zIFRYIGRlbGF5OyBwcmV2ZW50CiYjNDM7CSAqIHRoZSBQSFkgZnJvbSBhbHNvIGFkZGluZyBUWCBkZWxheSB0byBhdm9pZCBkb3VibGluZyBpdC4KJiM0MzsJICoKJiM0MzsJICogRFQgc3BlY2lmaWVzIHJnbWlpLWlkIChUWCBmcm9tIE1BQyBzaWxpY29uLCBSWCBmcm9tIFBIWSk7CiYjNDM7CSAqIG92ZXJyaWRlIHRvIHJnbWlpLXJ4aWQgc28gdGhlIFBIWSBvbmx5IGFkZHMgaXRzIFJYIGRlbGF5LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRhdGEtJmd0O2hhc19pbnRlcm5hbF90eF9kZWxheSkgewomIzQzOwkJcGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPQomIzQzOwkJCQkgcGh5X2ZpeF9waHlfbW9kZV9mb3JfbWFjX2RlbGF5cyhwbGF0X2RhdC0mZ3Q7cGh5X2ludGVyZmFjZSwKJiM0MzsJCQkJCQkJCSB0cnVlLCBmYWxzZSk7CiYjNDM7CQlpZiAocGxhdF9kYXQtJmd0O3BoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKQomIzQzOwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAomIzQzOwkJCQkmIzM0O3BoeSBpbnRlcmZhY2UgbW9kZSBpcyBOQVxuJiMzNDspOwomIzQzOwl9CiYjNDM7CiAJLyogUmVhZCByeC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHJ4X2NsayBkZWxheSAqLwogCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0mZ3Q7ZGV2Lm9mX25vZGUsCiAJCQkJICAmIzM0O3J4LWludGVybmFsLWRlbGF5LXBzJiMzNDssICZhbXA7ZGVsYXlfcHMpKSB7CkBAIC0xNjUsMTIgJiM0MzsyMjgsMTUgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCWR3Y19wcml2LSZndDtldGhfY2xrX2RseV9wYXJhbSAmYW1wOz0gfkVJQzc3MDBfRVRIX1JYX0FESl9ERUxBWTsKIAkJZHdjX3ByaXYtJmd0O2V0aF9jbGtfZGx5X3BhcmFtIHw9CiAJCQkJIEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfUlhfQURKX0RFTEFZLCB2YWwpOwotCX0gZWxzZSB7Ci0JCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJJiMzNDttaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHJ4LWludGVybmFsLWRlbGF5LXBzXG4mIzM0Oyk7CiAJfQogCi0JLyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqLwomIzQzOwkvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LgomIzQzOwkgKgomIzQzOwkgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXMKJiM0MzsJICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudAomIzQzOwkgKiBzaWxpY29uIGRlbGF5LiBTdWJ0cmFjdCB0aGUgZml4ZWQgY29tcG9uZW50IHRvIG9idGFpbiB0aGUKJiM0MzsJICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLgomIzQzOwkgKi8KIAlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtJmd0O2Rldi5vZl9ub2RlLAogCQkJCSAgJiMzNDt0eC1pbnRlcm5hbC1kZWxheS1wcyYjMzQ7LCAmYW1wO2RlbGF5X3BzKSkgewogCQlpZiAoZGVsYXlfcHMgJSBFSUM3NzAwX0RFTEFZX1NURVBfUFMpCkBAIC0xNzgsMTggJiM0MzsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJJiMzNDt0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcbiYjMzQ7LAogCQkJCUVJQzc3MDBfREVMQVlfU1RFUF9QUyk7CiAKJiM0MzsJCWlmIChkZWxheV9wcyAmbHQ7IGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzKQomIzQzOwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAomIzQzOwkJCQkmIzM0O3R4IGRlbGF5ICV1cHMgYmVsb3cgaW5oZXJlbnQgc2tldyAldXBzXG4mIzM0OywKJiM0MzsJCQkJZGVsYXlfcHMsIGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzKTsKJiM0MzsKJiM0MzsJCWRlbGF5X3BzIC09IGRhdGEtJmd0O3R4X2Nsa19pbmhlcmVudF9za2V3X3BzOwomIzQzOwogCQlpZiAoZGVsYXlfcHMgJmd0OyBFSUM3NzAwX01BWF9ERUxBWV9QUykKIAkJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJCSYjMzQ7dHggZGVsYXkgb3V0IG9mIHJhbmdlXG4mIzM0Oyk7CiYjNDM7CQkJCSYjMzQ7dHggZGVsYXkgb3V0IG9mIHByb2dyYW1tYWJsZSByYW5nZVxuJiMzNDspOwogCiAJCXZhbCA9IGRlbGF5X3BzIC8gRUlDNzcwMF9ERUxBWV9TVEVQX1BTOwogCiAJCWR3Y19wcml2LSZndDtldGhfY2xrX2RseV9wYXJhbSAmYW1wOz0gfkVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWTsKIAkJZHdjX3ByaXYtJmd0O2V0aF9jbGtfZGx5X3BhcmFtIHw9CiAJCQkJIEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpOwotCX0gZWxzZSB7Ci0JCXJldHVybiBkZXZfZXJyX3Byb2JlKCZhbXA7cGRldi0mZ3Q7ZGV2LCAtRUlOVkFMLAotCQkJJiMzNDttaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXG4mIzM0Oyk7CiAJfQogCiAJZHdjX3ByaXYtJmd0O2VpYzc3MDBfaHNwX3JlZ21hcCA9CkBAIC0yNjAsMTIgJiM0MzszMzAsMzEgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcGxhdF9kYXQtJmd0O2V4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7CiAJcGxhdF9kYXQtJmd0O3N1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7CiAJcGxhdF9kYXQtJmd0O3Jlc3VtZSA9IGVpYzc3MDBfZHdtYWNfcmVzdW1lOwomIzQzOwlwbGF0X2RhdC0mZ3Q7Zml4X21hY19zcGVlZCA9IGVpYzc3MDBfZHdtYWNfZml4X3NwZWVkOwogCiAJcmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCAmYW1wO3N0bW1hY19yZXMpOwogfQogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgZWljNzcwMF9kd21hY19kYXRhID0gewomIzQzOwkucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLAomIzQzOwkuaGFzX2ludGVybmFsX3R4X2RlbGF5ID0gZmFsc2UsCiYjNDM7CS50eF9jbGtfaW5oZXJlbnRfc2tld19wcyA9IDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGFfY2xrX2ludmVyc2lvbiA9IHsKJiM0MzsJLnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLAomIzQzOwkuaGFzX2ludGVybmFsX3R4X2RlbGF5ID0gdHJ1ZSwKJiM0MzsJLnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMjAwMCwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0gewotCXsgLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7IH0sCiYjNDM7CXsJLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aCYjMzQ7LAomIzQzOwkJLmRhdGEgPSAmYW1wO2VpYzc3MDBfZHdtYWNfZGF0YSwKJiM0MzsJfSwKJiM0MzsJewomIzQzOwkJLmNvbXBhdGlibGUgPSAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7ZWljNzcwMF9kd21hY19kYXRhX2Nsa19pbnZlcnNpb24sCiYjNDM7CX0sCiAJeyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MDcKCQkJCQkJCW91dHB1dDogODIKCQkJCQkJCXRob3VnaHRzOiA5MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY2AuICBCYXNpY2FsbHksIGl0IGFkZHMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsIGBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbmAsIGFuZCBzb21lIGNsb2NrIGludmVyc2lvbi9kZWxheSBsb2dpYyB3aXRoaW4gYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGFuZCBgZWljNzcwMF9kd21hY19maXhfc3BlZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KClRoaXMgZHJpdmVyLCBgZHdtYWMtZWljNzcwMC5jYCwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgRXN3aW4gRUlDNzcwMCBTb0MuIFBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGFyZ2V0aW5nIHNwZWNpZmljIGhhcmR3YXJlIGxpa2UgdGhpcywgYXJlICp0eXBpY2FsbHkqIG5vdCByZWFjaGFibGUgaW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICBJIG1lYW4sIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGRlZGljYXRlZCBlbXVsYXRpb24gZm9yIHRoYXQgKmV4YWN0KiBoYXJkd2FyZS4gIEFuIGVtdWxhdG9yIGZvciB0aGUgRXN3aW4gRUlDNzcwMD8gSGlnaGx5IHVubGlrZWx5LgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZm9yY2UgdGhlIHByb2JlLiBUaGUgZHJpdmVyIG1hdGNoZXMgb24gYCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoJiMzNDtgIGFuZCB0aGUgbmV3IGAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDtgLiBDYW4gd2UgaW5qZWN0IGEgbWF0Y2hpbmcgZGV2aWNlIG5vZGUgc29tZWhvdywgbWF5YmUgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IFN5emthbGxlciBoYXMgc29tZSBwbGF0Zm9ybSBkZXZpY2UgaW5qZWN0aW9uIGNhcGFiaWxpdGllcywgYnV0IGl0JiMzOTtzIHVzdWFsbHkgZWl0aGVyIHRocm91Z2ggcHJlZGVmaW5lZCBkZXNjcmlwdGlvbnMsIHBzZXVkby1kZXZpY2VzLCBvciBtYXliZSBzb21ldGhpbmcgbGlrZSBgc3l6X2dlbmV0bGlua2AuIEFuZCBJIHJlbWVtYmVyLCBubywgaXQmIzM5O3Mgbm90IGFyYml0cmFyeSBEVCBub2RlcyB1bmxlc3MgaXQmIzM5O3MgYSBEVC1iYXNlZCBmdXp6ZXIgYW5kIHRoaXMgaXNuJiMzOTt0IG9uZS4KCkJ1dCwgaGFuZyBvbiwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZHJpdmVycyBpZiBpdCAqY2FuKiBpbnN0YW50aWF0ZSB0aGVtLiAgSG93ZXZlciwgdGhpcyBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciAodGhlIGBzdG1tYWNgIHBsYXRmb3JtIGRyaXZlciBoZXJlKSBpcyAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50IG9yLCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGVtdWxhdGVkLgoKU28sIGxldCYjMzk7cyBjb25maXJtIHRoaXMgaXMgaW5kZWVkIGhhcmR3YXJlLXNwZWNpZmljLiBZZXAsIGBkd21hYy1laWM3NzAwLmNgIGlzIGV4cGxpY2l0bHkgZm9yIHRoZSBFc3dpbiBFSUM3NzAwLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gIEkgcmVjYWxsIHRoZSBydWxlIG9mIHRodW1iOiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4mIzM0Oy4gQW5kIHRoYXQmIzM5O3Mgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgU29DLiBJdCYjMzk7cyAqaGlnaGx5KiBpbXByb2JhYmxlIHRoYXQgaXQmIzM5O3MgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyB3aXRob3V0IHNvbWUgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGRyaXZlciBpcyByZWdpc3RlcmVkIHVzaW5nIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKWAuICBJdCAqbmVlZHMqIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIHRoYXQgYCYjMzQ7ZXN3aW4sZWljNzcwMC1xb3MtZXRoJiMzNDtgIG9yIGAmIzM0O2Vzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uJiMzNDtgIGNvbXBhdGlibGUgc3RyaW5nLiBJbiBhIHN0YW5kYXJkIHg4Nl82NCBvciBhcm02NCBRRU1VIHZpcnQgbWFjaGluZSwgdGhhdCBub2RlICp3b24mIzM5O3QqIGJlIHRoZXJlLiAgVGhlcmVmb3JlLCB0aGUgYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuICBUaGUgY29kZSBpcyBzaW1wbHkgdW5yZWFjaGFibGUgaW4gdGhlc2UgZW52aXJvbm1lbnRzLgoKSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgYFJlYXNvbmluZ2Agd2lsbCBiZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7CgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIGdlbmVyaWMgY29kZSBtaXhlZCBpbi4gTm9wZSwganVzdCB0aGUgYERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbGAgYW5kIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jYCBmaWxlcy4gIEJvdGggYXJlIHNwZWNpZmljIHRvIHRoZSBFc3dpbiBFSUM3NzAwLgoKSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgKEVzd2luIEVJQzc3MDAgU29DKSB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE0OjIyOjQ3LjkzNDA3MzQyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODAyOTgwMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNDoyMjo0Ny45MzQwODAyMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNDM0NjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk0NWM5ZTczODA2ZDk5NDMxNDAxMDBkMWJlMjliMWMzM2VlMjMyOTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNDoyMjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcXG5pbmRleCA2NTg4MmZmNzlkOGQ3ZS4uYmE0OWZkNmEwODZjYjkgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXFxuQEAgLTIwLDE2ICsyMCwzNyBAQCBzZWxlY3Q6XFxuICAgICAgIGNvbnRhaW5zOlxcbiAgICAgICAgIGVudW06XFxuICAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcbiAgIHJlcXVpcmVkOlxcbiAgICAgLSBjb21wYXRpYmxlXFxuIFxcbiBhbGxPZjpcXG4gICAtICRyZWY6IHNucHMsZHdtYWMueWFtbCNcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgdGhlbjpcXG4rICAgICAgcHJvcGVydGllczpcXG4rICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcXG4rICAgICAgICAgIG1heGltdW06IDI1NDBcXG4rICAtIGlmOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIGNvbXBhdGlibGU6XFxuKyAgICAgICAgICBjb250YWluczpcXG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXFxuKyAgICB0aGVuOlxcbisgICAgICBwcm9wZXJ0aWVzOlxcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgICAgICAgbWluaW11bTogMjAwMFxcbiBcXG4gcHJvcGVydGllczpcXG4gICBjb21wYXRpYmxlOlxcbiAgICAgaXRlbXM6XFxuLSAgICAgIC0gY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAtIGVudW06XFxuKyAgICAgICAgICAtIGVzd2luLGVpYzc3MDAtcW9zLWV0aFxcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcbiAgICAgICAtIGNvbnN0OiBzbnBzLGR3bWFjLTUuMjBcXG4gXFxuICAgcmVnOlxcbkBAIC02MywxMCArODQsMTQgQEAgcHJvcGVydGllczpcXG4gICAgICAgLSBjb25zdDogc3RtbWFjZXRoXFxuIFxcbiAgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxcbisgICAgbWluaW11bTogMFxcbisgICAgbWF4aW11bTogMjU0MFxcbisgICAgbXVsdGlwbGVPZjogMjBcXG4gXFxuICAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XFxuLSAgICBlbnVtOiBbMCwgMjAwLCA2MDAsIDEyMDAsIDE2MDAsIDE4MDAsIDIwMDAsIDIyMDAsIDI0MDBdXFxuKyAgICBtaW5pbXVtOiAwXFxuKyAgICBtYXhpbXVtOiA0NTQwXFxuKyAgICBtdWx0aXBsZU9mOiAyMFxcbiBcXG4gICBlc3dpbixoc3Atc3AtY3NyOlxcbiAgICAgZGVzY3JpcHRpb246XFxuQEAgLTEwNSw4ICsxMzAsNiBAQCByZXF1aXJlZDpcXG4gICAtIHBoeS1tb2RlXFxuICAgLSByZXNldHNcXG4gICAtIHJlc2V0LW5hbWVzXFxuLSAgLSByeC1pbnRlcm5hbC1kZWxheS1wc1xcbi0gIC0gdHgtaW50ZXJuYWwtZGVsYXktcHNcXG4gICAtIGVzd2luLGhzcC1zcC1jc3JcXG4gXFxuIHVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcXG5AQCAtMTE2LDI2ICsxMzksNTEgQEAgZXhhbXBsZXM6XFxuICAgICBldGhlcm5ldEA1MDQwMDAwMCB7XFxuICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcXFwiLCBcXFwic25wcyxkd21hYy01LjIwXFxcIjtcXG4gICAgICAgICByZWcgPSBcXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXFx1MDAzZTtcXG4tICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE4NlxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTcxXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayA0MFxcdTAwM2UsXFxuLSAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE5M1xcdTAwM2U7XFxuLSAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsIFxcXCJzdG1tYWNldGhcXFwiLCBcXFwidHhcXFwiO1xcbiAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNnBsaWNcXHUwMDNlO1xcbiAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjNjFcXHUwMDNlO1xcbiAgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiO1xcbi0gICAgICAgIHBoeS1tb2RlID0gXFxcInJnbWlpLWlkXFxcIjtcXG4tICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZwaHkwXFx1MDAzZTtcXG4rICAgICAgICBjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE4NlxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTcxXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayA0MFxcdTAwM2UsXFxuKyAgICAgICAgICAgICAgICBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDE5M1xcdTAwM2U7XFxuKyAgICAgICAgY2xvY2stbmFtZXMgPSBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsIFxcXCJzdG1tYWNldGhcXFwiLCBcXFwidHhcXFwiO1xcbiAgICAgICAgIHJlc2V0cyA9IFxcdTAwM2NcXHUwMDI2cmVzZXQgOTVcXHUwMDNlO1xcbiAgICAgICAgIHJlc2V0LW5hbWVzID0gXFxcInN0bW1hY2V0aFxcXCI7XFxuLSAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjAwXFx1MDAzZTtcXG4tICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMDBcXHUwMDNlO1xcbiAgICAgICAgIGVzd2luLGhzcC1zcC1jc3IgPSBcXHUwMDNjXFx1MDAyNmhzcF9zcF9jc3IgMHgxMDAgMHgxMDggMHgxMTggMHgxMTQgMHgxMWNcXHUwMDNlO1xcbi0gICAgICAgIHNucHMsYXhpLWNvbmZpZyA9IFxcdTAwM2NcXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFxcdTAwM2U7XFxuKyAgICAgICAgcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGh5MFxcdTAwM2U7XFxuKyAgICAgICAgcGh5LW1vZGUgPSBcXFwicmdtaWktaWRcXFwiO1xcbiAgICAgICAgIHNucHMsYWFsO1xcbiAgICAgICAgIHNucHMsZml4ZWQtYnVyc3Q7XFxuICAgICAgICAgc25wcyx0c287XFxuKyAgICAgICAgc25wcyxheGktY29uZmlnID0gXFx1MDAzY1xcdTAwMjZzdG1tYWNfYXhpX3NldHVwXFx1MDAzZTtcXG4rXFxuICAgICAgICAgc3RtbWFjX2F4aV9zZXR1cDogc3RtbWFjLWF4aS1jb25maWcge1xcbiAgICAgICAgICAgICBzbnBzLGJsZW4gPSBcXHUwMDNjMCAwIDAgMCAxNiA4IDRcXHUwMDNlO1xcbiAgICAgICAgICAgICBzbnBzLHJkX29zcl9sbXQgPSBcXHUwMDNjMlxcdTAwM2U7XFxuICAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4gICAgICAgICB9O1xcbiAgICAgfTtcXG4rXFxuKyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XFxuKyAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcXCIsIFxcXCJzbnBzLGR3bWFjLTUuMjBcXFwiO1xcbisgICAgICAgIHJlZyA9IFxcdTAwM2MweDUwNDEwMDAwIDB4MTAwMDBcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNnBsaWNcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjNzBcXHUwMDNlO1xcbisgICAgICAgIGludGVycnVwdC1uYW1lcyA9IFxcXCJtYWNpcnFcXFwiO1xcbisgICAgICAgIGNsb2NrcyA9IFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTg2XFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZkMF9jbG9jayAxNzFcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNmQwX2Nsb2NrIDQwXFx1MDAzZSxcXG4rICAgICAgICAgICAgICAgIFxcdTAwM2NcXHUwMDI2ZDBfY2xvY2sgMTk0XFx1MDAzZTtcXG4rICAgICAgICBjbG9jay1uYW1lcyA9IFxcXCJheGlcXFwiLCBcXFwiY2ZnXFxcIiwgXFxcInN0bW1hY2V0aFxcXCIsIFxcXCJ0eFxcXCI7XFxuKyAgICAgICAgcmVzZXRzID0gXFx1MDAzY1xcdTAwMjZyZXNldCA5NFxcdTAwM2U7XFxuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcXFwic3RtbWFjZXRoXFxcIjtcXG4rICAgICAgICBlc3dpbixoc3Atc3AtY3NyID0gXFx1MDAzY1xcdTAwMjZoc3Bfc3BfY3NyIDB4MjAwIDB4MjA4IDB4MjE4IDB4MjE0IDB4MjFjXFx1MDAzZTtcXG4rICAgICAgICBwaHktaGFuZGxlID0gXFx1MDAzY1xcdTAwMjZnbWFjMV9waHkwXFx1MDAzZTtcXG4rICAgICAgICBwaHktbW9kZSA9IFxcXCJyZ21paS1pZFxcXCI7XFxuKyAgICAgICAgc25wcyxhYWw7XFxuKyAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcXG4rICAgICAgICBzbnBzLHRzbztcXG4rICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcXHUwMDNjXFx1MDAyNnN0bW1hY19heGlfc2V0dXBfZ21hYzFcXHUwMDNlO1xcbitcXG4rICAgICAgICBzdG1tYWNfYXhpX3NldHVwX2dtYWMxOiBzdG1tYWMtYXhpLWNvbmZpZyB7XFxuKyAgICAgICAgICAgIHNucHMsYmxlbiA9IFxcdTAwM2MwIDAgMCAwIDE2IDggNFxcdTAwM2U7XFxuKyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXFx1MDAzYzJcXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXFxuQEAgLTI4LDExICsyOCwxNSBAQFxcbiBcXG4gLypcXG4gICogVFgvUlggQ2xvY2sgRGVsYXkgQml0IE1hc2tzOlxcbi0gKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSDigJQgVFhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcXG4tICogLSBSWCBEZWxheTogYml0cyBbMzA6MjRdIOKAlCBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxcbisgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXFxuKyAqIC0gVFggSW52ZXJ0IDogYml0ICBbMTVdXFxuKyAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSAtIFJYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXFxuKyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdXFxuICAqL1xcbiAjZGVmaW5lIEVJQzc3MDBfRVRIX1RYX0FESl9ERUxBWVxcdEdFTk1BU0soMTQsIDgpXFxuICNkZWZpbmUgRUlDNzcwMF9FVEhfUlhfQURKX0RFTEFZXFx0R0VOTUFTSygzMCwgMjQpXFxuKyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXFx0QklUKDE1KVxcbisjZGVmaW5lIEVJQzc3MDBfRVRIX1JYX0lOVl9ERUxBWVxcdEJJVCgzMSlcXG4gXFxuICNkZWZpbmUgRUlDNzcwMF9NQVhfREVMQVlfU1RFUFNcXHRcXHQweDdGXFxuICNkZWZpbmUgRUlDNzcwMF9ERUxBWV9TVEVQX1BTXFx0XFx0MjBcXG5AQCAtNDMsNyArNDcsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBlaWM3NzAwX2Nsa19uYW1lc1tdID0ge1xcbiBcXHRcXFwidHhcXFwiLCBcXFwiYXhpXFxcIiwgXFxcImNmZ1xcXCIsXFxuIH07XFxuIFxcbitzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIHtcXG4rXFx0Ym9vbCByZ21paV9yeF9jbGtfaW52ZXJ0O1xcbitcXHRib29sIGhhc19pbnRlcm5hbF90eF9kZWxheTtcXG4rXFx0dTMyIHR4X2Nsa19pbmhlcmVudF9za2V3X3BzO1xcbit9O1xcbitcXG4gc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XFxuIFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuIFxcdHN0cnVjdCByZWdtYXAgKmVpYzc3MDBfaHNwX3JlZ21hcDtcXG4gXFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XFxuQEAgLTU0LDYgKzY1LDcgQEAgc3RydWN0IGVpYzc3MDBfcW9zX3ByaXYge1xcbiBcXHR1MzIgZXRoX2Nsa19kbHlfcGFyYW07XFxuIFxcdGJvb2wgaGFzX3R4ZF9vZmZzZXQ7XFxuIFxcdGJvb2wgaGFzX3J4ZF9vZmZzZXQ7XFxuK1xcdGJvb2wgZXRoX3J4X2Nsa19pbnY7XFxuIH07XFxuIFxcbiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxcbkBAIC05Nyw5ICsxMDksNiBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuIFxcdGlmIChkd2MtXFx1MDAzZWhhc19yeGRfb2Zmc2V0KVxcbiBcXHRcXHRyZWdtYXBfd3JpdGUoZHdjLVxcdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xcbiBcXG4tXFx0cmVnbWFwX3dyaXRlKGR3Yy1cXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXFx1MDAzZWV0aF9jbGtfb2Zmc2V0LFxcbi1cXHRcXHQgICAgIGR3Yy1cXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xcbi1cXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTEyNiw4ICsxMzUsMzggQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XFxuKyAqIFJYIHNhbXBsaW5nIHNrZXcgYXQgTUFDIGlucHV0LlxcbisgKlxcbisgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxcbisgKiBzYW1wbGluZyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBuZWdvdGlhdGVkIGxpbmsgc3BlZWQuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbitcXHRcXHRcXHRcXHQgICAgaW50IHNwZWVkLCB1bnNpZ25lZCBpbnQgbW9kZSlcXG4re1xcbitcXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjID0gKHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICopcHJpdjtcXG4rXFx0dTMyIGRseV9wYXJhbSA9IGR3Yy1cXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW07XFxuK1xcbitcXHRzd2l0Y2ggKHNwZWVkKSB7XFxuK1xcdGNhc2UgU1BFRURfMTAwMDpcXG4rXFx0XFx0aWYgKGR3Yy1cXHUwMDNlZXRoX3J4X2Nsa19pbnYpXFxuK1xcdFxcdFxcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDpcXG4rXFx0Y2FzZSBTUEVFRF8xMDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGRldl93YXJuKGR3Yy1cXHUwMDNlZGV2LCBcXFwidW5zdXBwb3J0ZWQgc3BlZWQgJXVcXFxcblxcXCIsIHNwZWVkKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyZWdtYXBfd3JpdGUoZHdjLVxcdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cXHUwMDNlZXRoX2Nsa19vZmZzZXQsIGRseV9wYXJhbSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiB7XFxuK1xcdGNvbnN0IHN0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEgKmRhdGE7XFxuIFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuIFxcdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcXG5AQCAtMTQ4LDYgKzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0aWYgKCFkd2NfcHJpdilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbitcXHRkd2NfcHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4rXFxuK1xcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuK1xcdGlmICghZGF0YSlcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAtRUlOVkFMLCBcXFwibm8gbWF0Y2ggZGF0YSBmb3VuZFxcXFxuXFxcIik7XFxuK1xcbitcXHRkd2NfcHJpdi1cXHUwMDNlZXRoX3J4X2Nsa19pbnYgPSBkYXRhLVxcdTAwM2VyZ21paV9yeF9jbGtfaW52ZXJ0O1xcbitcXHQvKlxcbitcXHQgKiBUaGUgTUFDIHNpbGljb24gdW5jb25kaXRpb25hbGx5IGFkZHMgfjIgbnMgVFggZGVsYXk7IHByZXZlbnRcXG4rXFx0ICogdGhlIFBIWSBmcm9tIGFsc28gYWRkaW5nIFRYIGRlbGF5IHRvIGF2b2lkIGRvdWJsaW5nIGl0LlxcbitcXHQgKlxcbitcXHQgKiBEVCBzcGVjaWZpZXMgcmdtaWktaWQgKFRYIGZyb20gTUFDIHNpbGljb24sIFJYIGZyb20gUEhZKTtcXG4rXFx0ICogb3ZlcnJpZGUgdG8gcmdtaWktcnhpZCBzbyB0aGUgUEhZIG9ubHkgYWRkcyBpdHMgUlggZGVsYXkuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGF0YS1cXHUwMDNlaGFzX2ludGVybmFsX3R4X2RlbGF5KSB7XFxuK1xcdFxcdHBsYXRfZGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID1cXG4rXFx0XFx0XFx0XFx0IHBoeV9maXhfcGh5X21vZGVfZm9yX21hY19kZWxheXMocGxhdF9kYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCB0cnVlLCBmYWxzZSk7XFxuK1xcdFxcdGlmIChwbGF0X2RhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpXFxuK1xcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuK1xcdFxcdFxcdFxcdFxcXCJwaHkgaW50ZXJmYWNlIG1vZGUgaXMgTkFcXFxcblxcXCIpO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBSZWFkIHJ4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgcnhfY2xrIGRlbGF5ICovXFxuIFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUsXFxuIFxcdFxcdFxcdFxcdCAgXFxcInJ4LWludGVybmFsLWRlbGF5LXBzXFxcIiwgXFx1MDAyNmRlbGF5X3BzKSkge1xcbkBAIC0xNjUsMTIgKzIyOCwxNSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0ZHdjX3ByaXYtXFx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFxcdTAwMjY9IH5FSUM3NzAwX0VUSF9SWF9BREpfREVMQVk7XFxuIFxcdFxcdGR3Y19wcml2LVxcdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxcbiBcXHRcXHRcXHRcXHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9SWF9BREpfREVMQVksIHZhbCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuLVxcdFxcdFxcdFxcXCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHJ4LWludGVybmFsLWRlbGF5LXBzXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4tXFx0LyogUmVhZCB0eC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHR4X2NsayBkZWxheSAqL1xcbitcXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LlxcbitcXHQgKlxcbitcXHQgKiBGb3IgZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb24sIHRoZSBEVCBwcm9wZXJ0eSBkZXNjcmliZXNcXG4rXFx0ICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudFxcbitcXHQgKiBzaWxpY29uIGRlbGF5LiBTdWJ0cmFjdCB0aGUgZml4ZWQgY29tcG9uZW50IHRvIG9idGFpbiB0aGVcXG4rXFx0ICogcHJvZ3JhbW1hYmxlIGRlbGF5IHZhbHVlLlxcbitcXHQgKi9cXG4gXFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSxcXG4gXFx0XFx0XFx0XFx0ICBcXFwidHgtaW50ZXJuYWwtZGVsYXktcHNcXFwiLCBcXHUwMDI2ZGVsYXlfcHMpKSB7XFxuIFxcdFxcdGlmIChkZWxheV9wcyAlIEVJQzc3MDBfREVMQVlfU1RFUF9QUylcXG5AQCAtMTc4LDE4ICsyNDQsMjIgQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcXCJ0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdEVJQzc3MDBfREVMQVlfU1RFUF9QUyk7XFxuIFxcbitcXHRcXHRpZiAoZGVsYXlfcHMgXFx1MDAzYyBkYXRhLVxcdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcylcXG4rXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVJTlZBTCxcXG4rXFx0XFx0XFx0XFx0XFxcInR4IGRlbGF5ICV1cHMgYmVsb3cgaW5oZXJlbnQgc2tldyAldXBzXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRkZWxheV9wcywgZGF0YS1cXHUwMDNldHhfY2xrX2luaGVyZW50X3NrZXdfcHMpO1xcbitcXG4rXFx0XFx0ZGVsYXlfcHMgLT0gZGF0YS1cXHUwMDNldHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XFxuK1xcbiBcXHRcXHRpZiAoZGVsYXlfcHMgXFx1MDAzZSBFSUM3NzAwX01BWF9ERUxBWV9QUylcXG4gXFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVJTlZBTCxcXG4tXFx0XFx0XFx0XFx0XFxcInR4IGRlbGF5IG91dCBvZiByYW5nZVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdFxcXCJ0eCBkZWxheSBvdXQgb2YgcHJvZ3JhbW1hYmxlIHJhbmdlXFxcXG5cXFwiKTtcXG4gXFxuIFxcdFxcdHZhbCA9IGRlbGF5X3BzIC8gRUlDNzcwMF9ERUxBWV9TVEVQX1BTO1xcbiBcXG4gXFx0XFx0ZHdjX3ByaXYtXFx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIFxcdTAwMjY9IH5FSUM3NzAwX0VUSF9UWF9BREpfREVMQVk7XFxuIFxcdFxcdGR3Y19wcml2LVxcdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxcbiBcXHRcXHRcXHRcXHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9UWF9BREpfREVMQVksIHZhbCk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIC1FSU5WQUwsXFxuLVxcdFxcdFxcdFxcXCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXFxcXG5cXFwiKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZHdjX3ByaXYtXFx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCA9XFxuQEAgLTI2MCwxMiArMzMwLDMxIEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRwbGF0X2RhdC1cXHUwMDNlZXhpdCA9IGVpYzc3MDBfZHdtYWNfZXhpdDtcXG4gXFx0cGxhdF9kYXQtXFx1MDAzZXN1c3BlbmQgPSBlaWM3NzAwX2R3bWFjX3N1c3BlbmQ7XFxuIFxcdHBsYXRfZGF0LVxcdTAwM2VyZXN1bWUgPSBlaWM3NzAwX2R3bWFjX3Jlc3VtZTtcXG4rXFx0cGxhdF9kYXQtXFx1MDAzZWZpeF9tYWNfc3BlZWQgPSBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZDtcXG4gXFxuIFxcdHJldHVybiBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbiB9XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGEgPSB7XFxuK1xcdC5yZ21paV9yeF9jbGtfaW52ZXJ0ID0gZmFsc2UsXFxuK1xcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSBmYWxzZSxcXG4rXFx0LnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uID0ge1xcbitcXHQucmdtaWlfcnhfY2xrX2ludmVydCA9IHRydWUsXFxuK1xcdC5oYXNfaW50ZXJuYWxfdHhfZGVsYXkgPSB0cnVlLFxcbitcXHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAyMDAwLFxcbit9O1xcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xcbi1cXHR7IC5jb21wYXRpYmxlID0gXFxcImVzd2luLGVpYzc3MDAtcW9zLWV0aFxcXCIgfSxcXG4rXFx0e1xcdC5jb21wYXRpYmxlID0gXFxcImVzd2luLGVpYzc3MDAtcW9zLWV0aFxcXCIsXFxuK1xcdFxcdC5kYXRhID0gXFx1MDAyNmVpYzc3MDBfZHdtYWNfZGF0YSxcXG4rXFx0fSxcXG4rXFx0e1xcbitcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxcXCIsXFxuK1xcdFxcdC5kYXRhID0gXFx1MDAyNmVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uLFxcbitcXHR9LFxcbiBcXHR7IH1cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZWljNzcwMF9kd21hY19tYXRjaCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE0OjIyOjQ4Ljc1OTQwMTkxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5Nzc2NDAzNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIChFc3dpbiBFSUM3NzAwIFNvQykgd2hpY2ggcmVxdWlyZXMgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTQ1YzllNzM4MDZkOTk0MzE0MDEwMGQxYmUyOWIxYzMzZWUyMzI5N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDcgMTQ6MjI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Vzd2luLGVpYzc3MDAtZXRoLnlhbWxcbmluZGV4IDY1ODgyZmY3OWQ4ZDdlLi5iYTQ5ZmQ2YTA4NmNiOSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXN3aW4sZWljNzcwMC1ldGgueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sXG5AQCAtMjAsMTYgKzIwLDM3IEBAIHNlbGVjdDpcbiAgICAgICBjb250YWluczpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoXG4rICAgICAgICAgIC0gZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cbiAgIHJlcXVpcmVkOlxuICAgICAtIGNvbXBhdGlibGVcbiBcbiBhbGxPZjpcbiAgIC0gJHJlZjogc25wcyxkd21hYy55YW1sI1xuKyAgLSBpZjpcbisgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgY29tcGF0aWJsZTpcbisgICAgICAgICAgY29udGFpbnM6XG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuKyAgICB0aGVuOlxuKyAgICAgIHByb3BlcnRpZXM6XG4rICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbisgICAgICAgICAgbWF4aW11bTogMjU0MFxuKyAgLSBpZjpcbisgICAgICBwcm9wZXJ0aWVzOlxuKyAgICAgICAgY29tcGF0aWJsZTpcbisgICAgICAgICAgY29udGFpbnM6XG4rICAgICAgICAgICAgY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aC1jbGstaW52ZXJzaW9uXG4rICAgIHRoZW46XG4rICAgICAgcHJvcGVydGllczpcbisgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICAgICAgICBtaW5pbXVtOiAyMDAwXG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4gICAgIGl0ZW1zOlxuLSAgICAgIC0gY29uc3Q6IGVzd2luLGVpYzc3MDAtcW9zLWV0aFxuKyAgICAgIC0gZW51bTpcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGhcbisgICAgICAgICAgLSBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblxuICAgICAgIC0gY29uc3Q6IHNucHMsZHdtYWMtNS4yMFxuIFxuICAgcmVnOlxuQEAgLTYzLDEwICs4NCwxNCBAQCBwcm9wZXJ0aWVzOlxuICAgICAgIC0gY29uc3Q6IHN0bW1hY2V0aFxuIFxuICAgcngtaW50ZXJuYWwtZGVsYXktcHM6XG4tICAgIGVudW06IFswLCAyMDAsIDYwMCwgMTIwMCwgMTYwMCwgMTgwMCwgMjAwMCwgMjIwMCwgMjQwMF1cbisgICAgbWluaW11bTogMFxuKyAgICBtYXhpbXVtOiAyNTQwXG4rICAgIG11bHRpcGxlT2Y6IDIwXG4gXG4gICB0eC1pbnRlcm5hbC1kZWxheS1wczpcbi0gICAgZW51bTogWzAsIDIwMCwgNjAwLCAxMjAwLCAxNjAwLCAxODAwLCAyMDAwLCAyMjAwLCAyNDAwXVxuKyAgICBtaW5pbXVtOiAwXG4rICAgIG1heGltdW06IDQ1NDBcbisgICAgbXVsdGlwbGVPZjogMjBcbiBcbiAgIGVzd2luLGhzcC1zcC1jc3I6XG4gICAgIGRlc2NyaXB0aW9uOlxuQEAgLTEwNSw4ICsxMzAsNiBAQCByZXF1aXJlZDpcbiAgIC0gcGh5LW1vZGVcbiAgIC0gcmVzZXRzXG4gICAtIHJlc2V0LW5hbWVzXG4tICAtIHJ4LWludGVybmFsLWRlbGF5LXBzXG4tICAtIHR4LWludGVybmFsLWRlbGF5LXBzXG4gICAtIGVzd2luLGhzcC1zcC1jc3JcbiBcbiB1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG5AQCAtMTE2LDI2ICsxMzksNTEgQEAgZXhhbXBsZXM6XG4gICAgIGV0aGVybmV0QDUwNDAwMDAwIHtcbiAgICAgICAgIGNvbXBhdGlibGUgPSBcImVzd2luLGVpYzc3MDAtcW9zLWV0aFwiLCBcInNucHMsZHdtYWMtNS4yMFwiO1xuICAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQwMDAwMCAweDEwMDAwXHUwMDNlO1xuLSAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuLSAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTNcdTAwM2U7XG4tICAgICAgICBjbG9jay1uYW1lcyA9IFwiYXhpXCIsIFwiY2ZnXCIsIFwic3RtbWFjZXRoXCIsIFwidHhcIjtcbiAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZwbGljXHUwMDNlO1xuICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzYxXHUwMDNlO1xuICAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gXCJtYWNpcnFcIjtcbi0gICAgICAgIHBoeS1tb2RlID0gXCJyZ21paS1pZFwiO1xuLSAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4rICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZkMF9jbG9jayAxODZcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDE3MVx1MDAzZSwgXHUwMDNjXHUwMDI2ZDBfY2xvY2sgNDBcdTAwM2UsXG4rICAgICAgICAgICAgICAgIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDE5M1x1MDAzZTtcbisgICAgICAgIGNsb2NrLW5hbWVzID0gXCJheGlcIiwgXCJjZmdcIiwgXCJzdG1tYWNldGhcIiwgXCJ0eFwiO1xuICAgICAgICAgcmVzZXRzID0gXHUwMDNjXHUwMDI2cmVzZXQgOTVcdTAwM2U7XG4gICAgICAgICByZXNldC1uYW1lcyA9IFwic3RtbWFjZXRoXCI7XG4tICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIwMFx1MDAzZTtcbi0gICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjAwXHUwMDNlO1xuICAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgxMDAgMHgxMDggMHgxMTggMHgxMTQgMHgxMWNcdTAwM2U7XG4tICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwXHUwMDNlO1xuKyAgICAgICAgcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBoeTBcdTAwM2U7XG4rICAgICAgICBwaHktbW9kZSA9IFwicmdtaWktaWRcIjtcbiAgICAgICAgIHNucHMsYWFsO1xuICAgICAgICAgc25wcyxmaXhlZC1idXJzdDtcbiAgICAgICAgIHNucHMsdHNvO1xuKyAgICAgICAgc25wcyxheGktY29uZmlnID0gXHUwMDNjXHUwMDI2c3RtbWFjX2F4aV9zZXR1cFx1MDAzZTtcbitcbiAgICAgICAgIHN0bW1hY19heGlfc2V0dXA6IHN0bW1hYy1heGktY29uZmlnIHtcbiAgICAgICAgICAgICBzbnBzLGJsZW4gPSBcdTAwM2MwIDAgMCAwIDE2IDggNFx1MDAzZTtcbiAgICAgICAgICAgICBzbnBzLHJkX29zcl9sbXQgPSBcdTAwM2MyXHUwMDNlO1xuICAgICAgICAgICAgIHNucHMsd3Jfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4gICAgICAgICB9O1xuICAgICB9O1xuK1xuKyAgICBldGhlcm5ldEA1MDQxMDAwMCB7XG4rICAgICAgICBjb21wYXRpYmxlID0gXCJlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvblwiLCBcInNucHMsZHdtYWMtNS4yMFwiO1xuKyAgICAgICAgcmVnID0gXHUwMDNjMHg1MDQxMDAwMCAweDEwMDAwXHUwMDNlO1xuKyAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IFx1MDAzY1x1MDAyNnBsaWNcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjNzBcdTAwM2U7XG4rICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSBcIm1hY2lycVwiO1xuKyAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2ZDBfY2xvY2sgMTg2XHUwMDNlLCBcdTAwM2NcdTAwMjZkMF9jbG9jayAxNzFcdTAwM2UsIFx1MDAzY1x1MDAyNmQwX2Nsb2NrIDQwXHUwMDNlLFxuKyAgICAgICAgICAgICAgICBcdTAwM2NcdTAwMjZkMF9jbG9jayAxOTRcdTAwM2U7XG4rICAgICAgICBjbG9jay1uYW1lcyA9IFwiYXhpXCIsIFwiY2ZnXCIsIFwic3RtbWFjZXRoXCIsIFwidHhcIjtcbisgICAgICAgIHJlc2V0cyA9IFx1MDAzY1x1MDAyNnJlc2V0IDk0XHUwMDNlO1xuKyAgICAgICAgcmVzZXQtbmFtZXMgPSBcInN0bW1hY2V0aFwiO1xuKyAgICAgICAgZXN3aW4saHNwLXNwLWNzciA9IFx1MDAzY1x1MDAyNmhzcF9zcF9jc3IgMHgyMDAgMHgyMDggMHgyMTggMHgyMTQgMHgyMWNcdTAwM2U7XG4rICAgICAgICBwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2Z21hYzFfcGh5MFx1MDAzZTtcbisgICAgICAgIHBoeS1tb2RlID0gXCJyZ21paS1pZFwiO1xuKyAgICAgICAgc25wcyxhYWw7XG4rICAgICAgICBzbnBzLGZpeGVkLWJ1cnN0O1xuKyAgICAgICAgc25wcyx0c287XG4rICAgICAgICBzbnBzLGF4aS1jb25maWcgPSBcdTAwM2NcdTAwMjZzdG1tYWNfYXhpX3NldHVwX2dtYWMxXHUwMDNlO1xuK1xuKyAgICAgICAgc3RtbWFjX2F4aV9zZXR1cF9nbWFjMTogc3RtbWFjLWF4aS1jb25maWcge1xuKyAgICAgICAgICAgIHNucHMsYmxlbiA9IFx1MDAzYzAgMCAwIDAgMTYgOCA0XHUwMDNlO1xuKyAgICAgICAgICAgIHNucHMscmRfb3NyX2xtdCA9IFx1MDAzYzJcdTAwM2U7XG4rICAgICAgICAgICAgc25wcyx3cl9vc3JfbG10ID0gXHUwMDNjMlx1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jXG5pbmRleCA0YWM5NzlkODc0ZDZlZC4uZWFiOGMxM2ZiZGNjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY1xuQEAgLTI4LDExICsyOCwxNSBAQFxuIFxuIC8qXG4gICogVFgvUlggQ2xvY2sgRGVsYXkgQml0IE1hc2tzOlxuLSAqIC0gVFggRGVsYXk6IGJpdHMgWzE0OjhdIOKAlCBUWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxuLSAqIC0gUlggRGVsYXk6IGJpdHMgWzMwOjI0XSDigJQgUlhfQ0xLIGRlbGF5ICh1bml0OiAwLjAybnMgcGVyIGJpdClcbisgKiAtIFRYIERlbGF5OiBiaXRzIFsxNDo4XSAtIFRYX0NMSyBkZWxheSAodW5pdDogMC4wMm5zIHBlciBiaXQpXG4rICogLSBUWCBJbnZlcnQgOiBiaXQgIFsxNV1cbisgKiAtIFJYIERlbGF5OiBiaXRzIFszMDoyNF0gLSBSWF9DTEsgZGVsYXkgKHVuaXQ6IDAuMDJucyBwZXIgYml0KVxuKyAqIC0gUlggSW52ZXJ0IDogYml0ICBbMzFdXG4gICovXG4gI2RlZmluZSBFSUM3NzAwX0VUSF9UWF9BREpfREVMQVlcdEdFTk1BU0soMTQsIDgpXG4gI2RlZmluZSBFSUM3NzAwX0VUSF9SWF9BREpfREVMQVlcdEdFTk1BU0soMzAsIDI0KVxuKyNkZWZpbmUgRUlDNzcwMF9FVEhfVFhfSU5WX0RFTEFZXHRCSVQoMTUpXG4rI2RlZmluZSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVlcdEJJVCgzMSlcbiBcbiAjZGVmaW5lIEVJQzc3MDBfTUFYX0RFTEFZX1NURVBTXHRcdDB4N0ZcbiAjZGVmaW5lIEVJQzc3MDBfREVMQVlfU1RFUF9QU1x0XHQyMFxuQEAgLTQzLDcgKzQ3LDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZWljNzcwMF9jbGtfbmFtZXNbXSA9IHtcbiBcdFwidHhcIiwgXCJheGlcIiwgXCJjZmdcIixcbiB9O1xuIFxuK3N0cnVjdCBlaWM3NzAwX2R3bWFjX2RhdGEge1xuK1x0Ym9vbCByZ21paV9yeF9jbGtfaW52ZXJ0O1xuK1x0Ym9vbCBoYXNfaW50ZXJuYWxfdHhfZGVsYXk7XG4rXHR1MzIgdHhfY2xrX2luaGVyZW50X3NrZXdfcHM7XG4rfTtcbitcbiBzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiB7XG4rXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuIFx0c3RydWN0IHJlZ21hcCAqZWljNzcwMF9oc3BfcmVnbWFwO1xuIFx0dTMyIGV0aF9heGlfbHBfY3RybF9vZmZzZXQ7XG5AQCAtNTQsNiArNjUsNyBAQCBzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiB7XG4gXHR1MzIgZXRoX2Nsa19kbHlfcGFyYW07XG4gXHRib29sIGhhc190eGRfb2Zmc2V0O1xuIFx0Ym9vbCBoYXNfcnhkX29mZnNldDtcbitcdGJvb2wgZXRoX3J4X2Nsa19pbnY7XG4gfTtcbiBcbiBzdGF0aWMgaW50IGVpYzc3MDBfY2xrc19jb25maWcodm9pZCAqcHJpdiwgYm9vbCBlbmFibGVkKVxuQEAgLTk3LDkgKzEwOSw2IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbiBcdGlmIChkd2MtXHUwMDNlaGFzX3J4ZF9vZmZzZXQpXG4gXHRcdHJlZ21hcF93cml0ZShkd2MtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwLCBkd2MtXHUwMDNlZXRoX3J4ZF9vZmZzZXQsIDApO1xuIFxuLVx0cmVnbWFwX3dyaXRlKGR3Yy1cdTAwM2VlaWM3NzAwX2hzcF9yZWdtYXAsIGR3Yy1cdTAwM2VldGhfY2xrX29mZnNldCxcbi1cdFx0ICAgICBkd2MtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEyNiw4ICsxMzUsMzggQEAgc3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKlxuKyAqIGV0aDEgcmVxdWlyZXMgUlggY2xvY2sgaW52ZXJzaW9uIGF0IDEwMDBNYnBzIGR1ZSB0byBzaWxpY29uLWluaGVyZW50XG4rICogUlggc2FtcGxpbmcgc2tldyBhdCBNQUMgaW5wdXQuXG4rICpcbisgKiBUaGUgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGluIGZpeF9tYWNfc3BlZWQoKSBiZWNhdXNlIHRoZSByZXF1aXJlZFxuKyAqIHNhbXBsaW5nIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIG5lZ290aWF0ZWQgbGluayBzcGVlZC5cbisgKi9cbitzdGF0aWMgdm9pZCBlaWM3NzAwX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuK1x0XHRcdFx0ICAgIGludCBzcGVlZCwgdW5zaWduZWQgaW50IG1vZGUpXG4re1xuK1x0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3YyA9IChzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqKXByaXY7XG4rXHR1MzIgZGx5X3BhcmFtID0gZHdjLVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtO1xuK1xuK1x0c3dpdGNoIChzcGVlZCkge1xuK1x0Y2FzZSBTUEVFRF8xMDAwOlxuK1x0XHRpZiAoZHdjLVx1MDAzZWV0aF9yeF9jbGtfaW52KVxuK1x0XHRcdGRseV9wYXJhbSB8PSBFSUM3NzAwX0VUSF9SWF9JTlZfREVMQVk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDA6XG4rXHRjYXNlIFNQRUVEXzEwOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdGRldl93YXJuKGR3Yy1cdTAwM2VkZXYsIFwidW5zdXBwb3J0ZWQgc3BlZWQgJXVcXG5cIiwgc3BlZWQpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRyZWdtYXBfd3JpdGUoZHdjLVx1MDAzZWVpYzc3MDBfaHNwX3JlZ21hcCwgZHdjLVx1MDAzZWV0aF9jbGtfb2Zmc2V0LCBkbHlfcGFyYW0pO1xuK31cbitcbiBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiB7XG4rXHRjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhICpkYXRhO1xuIFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbiBcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG4gXHRzdHJ1Y3QgZWljNzcwMF9xb3NfcHJpdiAqZHdjX3ByaXY7XG5AQCAtMTQ4LDYgKzE4NywzMCBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmICghZHdjX3ByaXYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuK1x0ZHdjX3ByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4rXG4rXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbitcdGlmICghZGF0YSlcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4rXHRcdFx0XHQgICAgIC1FSU5WQUwsIFwibm8gbWF0Y2ggZGF0YSBmb3VuZFxcblwiKTtcbitcbitcdGR3Y19wcml2LVx1MDAzZWV0aF9yeF9jbGtfaW52ID0gZGF0YS1cdTAwM2VyZ21paV9yeF9jbGtfaW52ZXJ0O1xuK1x0LypcbitcdCAqIFRoZSBNQUMgc2lsaWNvbiB1bmNvbmRpdGlvbmFsbHkgYWRkcyB+MiBucyBUWCBkZWxheTsgcHJldmVudFxuK1x0ICogdGhlIFBIWSBmcm9tIGFsc28gYWRkaW5nIFRYIGRlbGF5IHRvIGF2b2lkIGRvdWJsaW5nIGl0LlxuK1x0ICpcbitcdCAqIERUIHNwZWNpZmllcyByZ21paS1pZCAoVFggZnJvbSBNQUMgc2lsaWNvbiwgUlggZnJvbSBQSFkpO1xuK1x0ICogb3ZlcnJpZGUgdG8gcmdtaWktcnhpZCBzbyB0aGUgUEhZIG9ubHkgYWRkcyBpdHMgUlggZGVsYXkuXG4rXHQgKi9cbitcdGlmIChkYXRhLVx1MDAzZWhhc19pbnRlcm5hbF90eF9kZWxheSkge1xuK1x0XHRwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID1cbitcdFx0XHRcdCBwaHlfZml4X3BoeV9tb2RlX2Zvcl9tYWNfZGVsYXlzKHBsYXRfZGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4rXHRcdFx0XHRcdFx0XHRcdCB0cnVlLCBmYWxzZSk7XG4rXHRcdGlmIChwbGF0X2RhdC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSlcbitcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbitcdFx0XHRcdFwicGh5IGludGVyZmFjZSBtb2RlIGlzIE5BXFxuXCIpO1xuK1x0fVxuK1xuIFx0LyogUmVhZCByeC1pbnRlcm5hbC1kZWxheS1wcyBhbmQgdXBkYXRlIHJ4X2NsayBkZWxheSAqL1xuIFx0aWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LVx1MDAzZWRldi5vZl9ub2RlLFxuIFx0XHRcdFx0ICBcInJ4LWludGVybmFsLWRlbGF5LXBzXCIsIFx1MDAyNmRlbGF5X3BzKSkge1xuQEAgLTE2NSwxMiArMjI4LDE1IEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSBcdTAwMjY9IH5FSUM3NzAwX0VUSF9SWF9BREpfREVMQVk7XG4gXHRcdGR3Y19wcml2LVx1MDAzZWV0aF9jbGtfZGx5X3BhcmFtIHw9XG4gXHRcdFx0XHQgRklFTERfUFJFUChFSUM3NzAwX0VUSF9SWF9BREpfREVMQVksIHZhbCk7XG4tXHR9IGVsc2Uge1xuLVx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbi1cdFx0XHRcIm1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgcngtaW50ZXJuYWwtZGVsYXktcHNcXG5cIik7XG4gXHR9XG4gXG4tXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5ICovXG4rXHQvKiBSZWFkIHR4LWludGVybmFsLWRlbGF5LXBzIGFuZCB1cGRhdGUgdHhfY2xrIGRlbGF5LlxuK1x0ICpcbitcdCAqIEZvciBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbiwgdGhlIERUIHByb3BlcnR5IGRlc2NyaWJlc1xuK1x0ICogdGhlIGVmZmVjdGl2ZSBUWCBkZWxheSBhdCB0aGUgTUFDIG91dHB1dCwgaW5jbHVkaW5nIHRoZSBpbmhlcmVudFxuK1x0ICogc2lsaWNvbiBkZWxheS4gU3VidHJhY3QgdGhlIGZpeGVkIGNvbXBvbmVudCB0byBvYnRhaW4gdGhlXG4rXHQgKiBwcm9ncmFtbWFibGUgZGVsYXkgdmFsdWUuXG4rXHQgKi9cbiBcdGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi1cdTAwM2VkZXYub2Zfbm9kZSxcbiBcdFx0XHRcdCAgXCJ0eC1pbnRlcm5hbC1kZWxheS1wc1wiLCBcdTAwMjZkZWxheV9wcykpIHtcbiBcdFx0aWYgKGRlbGF5X3BzICUgRUlDNzcwMF9ERUxBWV9TVEVQX1BTKVxuQEAgLTE3OCwxOCArMjQ0LDIyIEBAIHN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XCJ0eCBkZWxheSBtdXN0IGJlIG11bHRpcGxlIG9mICVkcHNcXG5cIixcbiBcdFx0XHRcdEVJQzc3MDBfREVMQVlfU1RFUF9QUyk7XG4gXG4rXHRcdGlmIChkZWxheV9wcyBcdTAwM2MgZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcylcbitcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbitcdFx0XHRcdFwidHggZGVsYXkgJXVwcyBiZWxvdyBpbmhlcmVudCBza2V3ICV1cHNcXG5cIixcbitcdFx0XHRcdGRlbGF5X3BzLCBkYXRhLVx1MDAzZXR4X2Nsa19pbmhlcmVudF9za2V3X3BzKTtcbitcbitcdFx0ZGVsYXlfcHMgLT0gZGF0YS1cdTAwM2V0eF9jbGtfaW5oZXJlbnRfc2tld19wcztcbitcbiBcdFx0aWYgKGRlbGF5X3BzIFx1MDAzZSBFSUM3NzAwX01BWF9ERUxBWV9QUylcbiBcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgLUVJTlZBTCxcbi1cdFx0XHRcdFwidHggZGVsYXkgb3V0IG9mIHJhbmdlXFxuXCIpO1xuK1x0XHRcdFx0XCJ0eCBkZWxheSBvdXQgb2YgcHJvZ3JhbW1hYmxlIHJhbmdlXFxuXCIpO1xuIFxuIFx0XHR2YWwgPSBkZWxheV9wcyAvIEVJQzc3MDBfREVMQVlfU1RFUF9QUztcbiBcbiBcdFx0ZHdjX3ByaXYtXHUwMDNlZXRoX2Nsa19kbHlfcGFyYW0gXHUwMDI2PSB+RUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZO1xuIFx0XHRkd2NfcHJpdi1cdTAwM2VldGhfY2xrX2RseV9wYXJhbSB8PVxuIFx0XHRcdFx0IEZJRUxEX1BSRVAoRUlDNzcwMF9FVEhfVFhfQURKX0RFTEFZLCB2YWwpO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIC1FSU5WQUwsXG4tXHRcdFx0XCJtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IHR4LWludGVybmFsLWRlbGF5LXBzXFxuXCIpO1xuIFx0fVxuIFxuIFx0ZHdjX3ByaXYtXHUwMDNlZWljNzcwMF9oc3BfcmVnbWFwID1cbkBAIC0yNjAsMTIgKzMzMCwzMSBAQCBzdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdHBsYXRfZGF0LVx1MDAzZWV4aXQgPSBlaWM3NzAwX2R3bWFjX2V4aXQ7XG4gXHRwbGF0X2RhdC1cdTAwM2VzdXNwZW5kID0gZWljNzcwMF9kd21hY19zdXNwZW5kO1xuIFx0cGxhdF9kYXQtXHUwMDNlcmVzdW1lID0gZWljNzcwMF9kd21hY19yZXN1bWU7XG4rXHRwbGF0X2RhdC1cdTAwM2VmaXhfbWFjX3NwZWVkID0gZWljNzcwMF9kd21hY19maXhfc3BlZWQ7XG4gXG4gXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGVpYzc3MDBfZHdtYWNfZGF0YSBlaWM3NzAwX2R3bWFjX2RhdGEgPSB7XG4rXHQucmdtaWlfcnhfY2xrX2ludmVydCA9IGZhbHNlLFxuK1x0Lmhhc19pbnRlcm5hbF90eF9kZWxheSA9IGZhbHNlLFxuK1x0LnR4X2Nsa19pbmhlcmVudF9za2V3X3BzID0gMCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWljNzcwMF9kd21hY19kYXRhIGVpYzc3MDBfZHdtYWNfZGF0YV9jbGtfaW52ZXJzaW9uID0ge1xuK1x0LnJnbWlpX3J4X2Nsa19pbnZlcnQgPSB0cnVlLFxuK1x0Lmhhc19pbnRlcm5hbF90eF9kZWxheSA9IHRydWUsXG4rXHQudHhfY2xrX2luaGVyZW50X3NrZXdfcHMgPSAyMDAwLFxuK307XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZWljNzcwMF9kd21hY19tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoXCIgfSxcbitcdHtcdC5jb21wYXRpYmxlID0gXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcIixcbitcdFx0LmRhdGEgPSBcdTAwMjZlaWM3NzAwX2R3bWFjX2RhdGEsXG4rXHR9LFxuK1x0e1xuK1x0XHQuY29tcGF0aWJsZSA9IFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cIixcbitcdFx0LmRhdGEgPSBcdTAwMjZlaWM3NzAwX2R3bWFjX2RhdGFfY2xrX2ludmVyc2lvbixcbitcdH0sXG4gXHR7IH1cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTQ6MjI6NDguNzU5NDA0MzU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5Nzc2MDM0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyB0b3VjaGluZyBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuY2AuICBCYXNpY2FsbHksIGl0IGFkZHMgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcsIGBlc3dpbixlaWM3NzAwLXFvcy1ldGgtY2xrLWludmVyc2lvbmAsIGFuZCBzb21lIGNsb2NrIGludmVyc2lvbi9kZWxheSBsb2dpYyB3aXRoaW4gYGVpYzc3MDBfZHdtYWNfcHJvYmVgIGFuZCBgZWljNzcwMF9kd21hY19maXhfc3BlZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuVGhpcyBkcml2ZXIsIGBkd21hYy1laWM3NzAwLmNgLCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBFc3dpbiBFSUM3NzAwIFNvQy4gUGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0YXJnZXRpbmcgc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSB0aGlzLCBhcmUgKnR5cGljYWxseSogbm90IHJlYWNoYWJsZSBpbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIEkgbWVhbiwgdW5sZXNzIHRoZXJlJ3Mgc29tZSBkZWRpY2F0ZWQgZW11bGF0aW9uIGZvciB0aGF0ICpleGFjdCogaGFyZHdhcmUuICBBbiBlbXVsYXRvciBmb3IgdGhlIEVzd2luIEVJQzc3MDA/IEhpZ2hseSB1bmxpa2VseS5cblxuQWxyaWdodCwgbGV0J3Mgc2VlIGlmIHdlIGNhbiBmb3JjZSB0aGUgcHJvYmUuIFRoZSBkcml2ZXIgbWF0Y2hlcyBvbiBgXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcImAgYW5kIHRoZSBuZXcgYFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cImAuIENhbiB3ZSBpbmplY3QgYSBtYXRjaGluZyBkZXZpY2Ugbm9kZSBzb21laG93LCBtYXliZSB0aHJvdWdoIGEgZGV2aWNlIHRyZWUgb3ZlcmxheT8gU3l6a2FsbGVyIGhhcyBzb21lIHBsYXRmb3JtIGRldmljZSBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLCBidXQgaXQncyB1c3VhbGx5IGVpdGhlciB0aHJvdWdoIHByZWRlZmluZWQgZGVzY3JpcHRpb25zLCBwc2V1ZG8tZGV2aWNlcywgb3IgbWF5YmUgc29tZXRoaW5nIGxpa2UgYHN5el9nZW5ldGxpbmtgLiBBbmQgSSByZW1lbWJlciwgbm8sIGl0J3Mgbm90IGFyYml0cmFyeSBEVCBub2RlcyB1bmxlc3MgaXQncyBhIERULWJhc2VkIGZ1enplciBhbmQgdGhpcyBpc24ndCBvbmUuXG5cbkJ1dCwgaGFuZyBvbiwgU3l6a2FsbGVyICpjYW4qIGZ1enogcGxhdGZvcm0gZHJpdmVycyBpZiBpdCAqY2FuKiBpbnN0YW50aWF0ZSB0aGVtLiAgSG93ZXZlciwgdGhpcyBraW5kIG9mIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlciAodGhlIGBzdG1tYWNgIHBsYXRmb3JtIGRyaXZlciBoZXJlKSBpcyAqdW5saWtlbHkqIHRvIGJlIHJlYWNoYWJsZSB1bmxlc3MgdGhlIGFjdHVhbCBoYXJkd2FyZSBpcyBwcmVzZW50IG9yLCBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGVtdWxhdGVkLlxuXG5TbywgbGV0J3MgY29uZmlybSB0aGlzIGlzIGluZGVlZCBoYXJkd2FyZS1zcGVjaWZpYy4gWWVwLCBgZHdtYWMtZWljNzcwMC5jYCBpcyBleHBsaWNpdGx5IGZvciB0aGUgRXN3aW4gRUlDNzcwMC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/ICBJIHJlY2FsbCB0aGUgcnVsZSBvZiB0aHVtYjogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uXCIuIEFuZCB0aGF0J3Mgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgU29DLiBJdCdzICpoaWdobHkqIGltcHJvYmFibGUgdGhhdCBpdCdzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgd2l0aG91dCBzb21lIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5BbHJpZ2h0LCBsZXQncyBkb3VibGUtY2hlY2sganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFRoaXMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgdXNpbmcgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZWljNzcwMF9kd21hY19kcml2ZXIpYC4gIEl0ICpuZWVkcyogYSBkZXZpY2UgdHJlZSBub2RlIHdpdGggdGhhdCBgXCJlc3dpbixlaWM3NzAwLXFvcy1ldGhcImAgb3IgYFwiZXN3aW4sZWljNzcwMC1xb3MtZXRoLWNsay1pbnZlcnNpb25cImAgY29tcGF0aWJsZSBzdHJpbmcuIEluIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFybTY0IFFFTVUgdmlydCBtYWNoaW5lLCB0aGF0IG5vZGUgKndvbid0KiBiZSB0aGVyZS4gIFRoZXJlZm9yZSwgdGhlIGBlaWM3NzAwX2R3bWFjX3Byb2JlYCBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiAgVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgUmVhc29uaW5nYCB3aWxsIGJlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCJcblxuSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjaywgbGV0J3MgbWFrZSBzdXJlIHRoZXJlIGlzbid0IHNvbWUgZ2VuZXJpYyBjb2RlIG1peGVkIGluLiBOb3BlLCBqdXN0IHRoZSBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lc3dpbixlaWM3NzAwLWV0aC55YW1sYCBhbmQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmNgIGZpbGVzLiAgQm90aCBhcmUgc3BlY2lmaWMgdG8gdGhlIEVzd2luIEVJQzc3MDAuXG5cbkknbGwgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTA3LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTQ6MjM6MDMuNzM3MDExNjg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciAoRXN3aW4gRUlDNzcwMCBTb0MpIHdoaWNoIHJlcXVpcmVzIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBUaGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow7bpsq[1] Phase: Running StartedAt: 2026-07-07 14:23:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bpsq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-07 14:23:16 +0000 UTC FinishedAt: 2026-07-07 14:23:47 +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,}