Name: series-workflowsbkg6 Phase: Failed StartedAt: 2026-07-11 23:10:54 +0000 UTC FinishedAt: 2026-07-12 00:03:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsbkg6[0] Phase: Succeeded StartedAt: 2026-07-11 23:10:54 +0000 UTC FinishedAt: 2026-07-12 00:02:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsbkg6[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 23:10:54 +0000 UTC FinishedAt: 2026-07-12 00:02:51 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyIChoaXAwNF9ldGguYyksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSAoSGlzaWxpY29uIFAwNCBTb0MpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBmcm9tIHVzZXItc3BhY2UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjN2MyNzUzMGY5ZGE2YzE4NThlN2U1M2E2Zjc2MTkxYzIyNzBmMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDowMTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcbmluZGV4IDE4Mzc2YmNjNzE4YTIwLi40YmQxOTIwOTQwYjczNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiBcbiAjZGVmaW5lIFNDX1BQRV9SRVNFVF9EUkVRXHRcdDB4MDI2Q1xuIFxuQEAgLTIzMiw2ICYjNDM7MjMzLDggQEAgc3RydWN0IGhpcDA0X3ByaXYge1xuIFx0aW50IHR4X2NvYWxlc2NlX2ZyYW1lcztcbiBcdGludCB0eF9jb2FsZXNjZV91c2VjcztcbiBcdHN0cnVjdCBocnRpbWVyIHR4X2NvYWxlc2NlX3RpbWVyO1xuJiM0MztcdGJvb2wgY2xvc2luZztcbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbG9jazsgLyogU2VyaWFsaXplcyBNQUMgb3Blbi9zdG9wIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiAqL1xuIFxuIFx0dW5zaWduZWQgY2hhciAqcnhfYnVmW1JYX0RFU0NfTlVNXTtcbiBcdGRtYV9hZGRyX3QgcnhfcGh5c1tSWF9ERVNDX05VTV07XG5AQCAtNDk3LDYgJiM0Mzs1MDAsMTIgQEAgc3RhdGljIHZvaWQgaGlwMDRfc3RhcnRfdHhfdGltZXIoc3RydWN0IGhpcDA0X3ByaXYgKnByaXYpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBucyA9IHByaXYtXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjtcbiBcbiYjNDM7XHQvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLlxuJiM0MztcdCAqIEJvdGggYXJtaW5nIHNpdGVzIChUeCBhbmQgTkFQSSBSeCBwb2xsKSBnbyB0aHJvdWdoIGhlcmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2cHJpdi1cdTAwM2VjbG9zaW5nKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHQvKiBhbGxvdyB0aW1lciB0byBmaXJlIGFmdGVyIGhhbGYgdGhlIHRpbWUgYXQgdGhlIGVhcmxpZXN0ICovXG4gXHRocnRpbWVyX3N0YXJ0X3JhbmdlX25zKFx1MDAyNnByaXYtXHUwMDNldHhfY29hbGVzY2VfdGltZXIsIG5zX3RvX2t0aW1lKG5zKSxcbiBcdFx0XHQgICAgICAgbnMsIEhSVElNRVJfTU9ERV9SRUwpO1xuQEAgLTY0OSwxMiAmIzQzOzY1OCwxNSBAQCBzdGF0aWMgaW50IGhpcDA0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRwcml2LVx1MDAzZXJlZ19pbnRlbiB8PSBSQ1ZfSU5UO1xuIFx0XHR3cml0ZWxfcmVsYXhlZChwcml2LVx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cdTAwM2ViYXNlICYjNDM7IFBQRV9JTlRFTik7XG4gXHR9XG4mIzQzO1x0LyogQXJtIHRoZSBjb2FsZXNjZSB0aW1lciBCRUZPUkUgbmFwaV9jb21wbGV0ZV9kb25lKCk6IG5hcGlfZGlzYWJsZSgpXG4mIzQzO1x0ICogaW4gaGlwMDRfbWFjX3N0b3AoKSByZXR1cm5zIG9uY2UgU0NIRUQgaXMgY2xlYXJlZCBoZXJlLCBub3Qgd2hlblxuJiM0MztcdCAqIHRoZSBwb2xsIGZ1bmN0aW9uIHJldHVybnMsIHNvIGFybWluZyBhZnRlcndhcmRzIGNhbiBzbGlwIHBhc3QgdGhlXG4mIzQzO1x0ICogc3RvcCBwYXRoJiMzOTtzIGhydGltZXJfY2FuY2VsKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHR4X3JlbWFpbmluZylcbiYjNDM7XHRcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xuIFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4KTtcbiBkb25lOlxuLVx0Lyogc3RhcnQgYSBuZXcgdGltZXIgaWYgbmVjZXNzYXJ5ICovXG4tXHRpZiAocnggXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgdHhfcmVtYWluaW5nKVxuLVx0XHRoaXAwNF9zdGFydF90eF90aW1lcihwcml2KTtcbi1cbiBcdHJldHVybiByeDtcbiB9XG4gXG5AQCAtNzIwLDcgJiM0Mzs3MzIsNyBAQCBzdGF0aWMgdm9pZCBoaXAwNF9hZGp1c3RfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7c3RhdGljIGludCBfX2hpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbkBAIC03NDMsNiAmIzQzOzc1NSwxMyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0XHRoaXAwNF9zZXRfcmVjdl9kZXNjKHByaXYsIHBoeXMpO1xuIFx0fVxuIFxuJiM0MztcdC8qIFJYIG1hcHBpbmdzIGFyZSBlc3RhYmxpc2hlZDsgY2xlYXIgdGhlIGNsb3NpbmcgZmxhZyBiZWZvcmVcbiYjNDM7XHQgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlXG4mIzQzO1x0ICogaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKTsgc3RhdGVfbG9jayBzZXJpYWxpemVzIHRoaXMgYWdhaW5zdFxuJiM0MztcdCAqIG1hY19zdG9wKCkmIzM5O3Mgc3RvcmUtcmVsZWFzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZwcml2LVx1MDAzZWNsb3NpbmcsIGZhbHNlKTtcbiYjNDM7XG4gXHRpZiAocHJpdi1cdTAwM2VwaHkpXG4gXHRcdHBoeV9zdGFydChwcml2LVx1MDAzZXBoeSk7XG4gXG5AQCAtNzU0LDEzICYjNDM7NzczLDQyIEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7c3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBfX2hpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBTdG9wIG5ldyB0aW1lciBhcm1zIGJlZm9yZSBkcmFpbmluZzogc2V0IHRoZSBjbG9zaW5nIGZsYWcgKGNoZWNrZWRcbiYjNDM7XHQgKiBhdCB0aGUgc2luZ2xlIGFybWluZyBzaXRlKSwgd2FpdCBmb3IgdGhlIE5BUEkgcG9sbCBhbmQgYW55IGluLWZsaWdodFxuJiM0MztcdCAqIFRYIHRvIGZpbmlzaCwgdGhlbiBjYW5jZWwgdGhlIHRpbWVyLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogbmV0aWZfdHhfZGlzYWJsZSgpIChub3QgbmV0aWZfc3RvcF9xdWV1ZSgpKSBpcyByZXF1aXJlZCBiZWNhdXNlIHRoaXNcbiYjNDM7XHQgKiBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBmcm9tIGhpcDA0X3R4X3RpbWVvdXRfdGFzaygpLCBub3RcbiYjNDM7XHQgKiBvbmx5IHZpYSAubmRvX3N0b3Agd2hlcmUgdGhlIGNvcmUgaGFzIGFscmVhZHkgZGVhY3RpdmF0ZWQgVFg7XG4mIzQzO1x0ICogbmV0aWZfdHhfZGlzYWJsZSgpIHdhaXRzIGZvciBhbiBpbi1mbGlnaHQgaGlwMDRfbWFjX3N0YXJ0X3htaXQoKSxcbiYjNDM7XHQgKiB3aGljaCBhcm1zIHRoZSB0aW1lciwgdG8gZmluaXNoLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogQmVjYXVzZSBoaXAwNF9yeF9wb2xsKCkgYXJtcyB0aGUgdGltZXIgYmVmb3JlIG5hcGlfY29tcGxldGVfZG9uZSgpLFxuJiM0MztcdCAqIG5hcGlfZGlzYWJsZSgpIHJldHVybmluZyBtZWFucyB0aGF0IGFybSBoYXMgaGFwcGVuZWQsIHNvIHRoZVxuJiM0MztcdCAqIGhydGltZXJfY2FuY2VsKCkgYmVsb3cgY2Fubm90IG1pc3MgaXQuICBUaGUgc3RvcmUtcmVsZWFzZSBwYWlyc1xuJiM0MztcdCAqIHdpdGggdGhlIGxvYWQgaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZwcml2LVx1MDAzZWNsb3NpbmcsIHRydWUpO1xuJiM0MztcbiBcdG5hcGlfZGlzYWJsZShcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuLVx0bmV0aWZfc3RvcF9xdWV1ZShuZGV2KTtcbiYjNDM7XHRuZXRpZl90eF9kaXNhYmxlKG5kZXYpO1xuJiM0MztcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNldHhfY29hbGVzY2VfdGltZXIpO1xuIFx0aGlwMDRfbWFjX2Rpc2FibGUobmRldik7XG4gXHRoaXAwNF90eF9yZWNsYWltKG5kZXYsIHRydWUpO1xuIFx0aGlwMDRfcmVzZXRfcHBlKHByaXYpO1xuQEAgLTc3OSw2ICYjNDM7ODI3LDE2IEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0X19oaXAwNF9tYWNfc3RvcChuZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc5MSw4ICYjNDM7ODQ5LDIzIEBAIHN0YXRpYyB2b2lkIGhpcDA0X3R4X3RpbWVvdXRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjtcbiBcbiBcdHByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7XG4tXHRoaXAwNF9tYWNfc3RvcChwcml2LVx1MDAzZW5kZXYpO1xuLVx0aGlwMDRfbWFjX29wZW4ocHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogU2VyaWFsaXplIHRoZSByZXN0YXJ0IHdpdGggLm5kb19vcGVuLy5uZG9fc3RvcCwgd2hpY2ggdGFrZSB0aGVcbiYjNDM7XHQgKiBzYW1lIGxvY2suICBJZiBhIGNsb3NlIGhhcyBjb21wbGV0ZWQgb3IgaXMgaW4gcHJvZ3Jlc3MgdGhlXG4mIzQzO1x0ICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJiMzOTtzXG4mIzQzO1x0ICogcnVubmluZy1zdGF0ZSBjbGVhciwgLm5kb19zdG9wIHN0aWxsIHJ1bnMgdW5kZXIgc3RhdGVfbG9ja1xuJiM0MztcdCAqIGFmdGVyd2FyZHMgYW5kIHN0b3BzIHRoZSBkZXZpY2UsIHNvIHRoaXMgd29ya2VyIGNhbm5vdCBsZWF2ZSB0aGVcbiYjNDM7XHQgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhwcml2LVx1MDAzZW5kZXYpKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdF9faGlwMDRfbWFjX3N0b3AocHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XHRpZiAoX19oaXAwNF9tYWNfb3Blbihwcml2LVx1MDAzZW5kZXYpKVxuJiM0MztcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZW5kZXYsIFwmIzM0O3Jlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztvdXQ6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5AQCAtOTgzLDYgJiM0MzsxMDU2LDcgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdH1cbiBcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzaywgaGlwMDRfdHhfdGltZW91dF90YXNrKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZoaXAwNF9uZXRkZXZfb3BzO1xuIFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmhpcDA0X2V0aHRvb2xfb3BzO1xuQEAgLTEwMjYsMTMgJiM0MzsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIElSUSBpcyBkZXZtLW1hbmFnZWQgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSBmcmVlZCBvbmx5IGFmdGVyXG4mIzQzO1x0ICogdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgRnJlZSBpdCBub3csIGFmdGVyIHVucmVnaXN0ZXJfbmV0ZGV2KCkgaGFzXG4mIzQzO1x0ICogcnVuIC5uZG9fc3RvcCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIG1hc2sgaXRzIGludGVycnVwdCBzb3VyY2UsIGJ1dFxuJiM0MztcdCAqIGJlZm9yZSB0aGUgbWFudWFsIGZyZWVfbmV0ZGV2KCkgYmVsb3csIHNvIHRoYXQgaGlwMDRfbWFjX2ludGVycnVwdCgpXG4mIzQzO1x0ICogKGRldl9pZCA9PSBuZGV2KSBjYW5ub3QgZmlyZSBhZ2FpbnN0IGZyZWVkIG1lbW9yeS4gIGZyZWVfaXJxKCkgYWxzb1xuJiM0MztcdCAqIGRyYWlucyBhbnkgaW4tZmxpZ2h0IGhhbmRsZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGV2bV9mcmVlX2lycShkLCBuZGV2LVx1MDAzZWlycSwgbmRldik7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XG4mIzQzO1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4mIzQzO1xuIFx0aWYgKHByaXYtXHUwMDNlcGh5KVxuIFx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeSk7XG4gXG4gXHRoaXAwNF9mcmVlX3JpbmcobmRldiwgZCk7XG4tXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBcdG9mX25vZGVfcHV0KHByaXYtXHUwMDNlcGh5X25vZGUpO1xuLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIgKGhpcDA0X2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIGhhcmR3YXJlIChIaXNpbGljb24gUDA0IFNvQykuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYzdjMjc1MzBmOWRhNmMxODU4ZTdlNTNhNmY3NjE5MWMyMjcwZjIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MDE6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMKaW5kZXggMTgzNzZiY2M3MThhMjAuLjRiZDE5MjA5NDBiNzM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKIAogI2RlZmluZSBTQ19QUEVfUkVTRVRfRFJFUQkJMHgwMjZDCiAKQEAgLTIzMiw2ICYjNDM7MjMzLDggQEAgc3RydWN0IGhpcDA0X3ByaXYgewogCWludCB0eF9jb2FsZXNjZV9mcmFtZXM7CiAJaW50IHR4X2NvYWxlc2NlX3VzZWNzOwogCXN0cnVjdCBocnRpbWVyIHR4X2NvYWxlc2NlX3RpbWVyOwomIzQzOwlib29sIGNsb3Npbmc7CiYjNDM7CXN0cnVjdCBtdXRleCBzdGF0ZV9sb2NrOyAvKiBTZXJpYWxpemVzIE1BQyBvcGVuL3N0b3AgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuICovCiAKIAl1bnNpZ25lZCBjaGFyICpyeF9idWZbUlhfREVTQ19OVU1dOwogCWRtYV9hZGRyX3QgcnhfcGh5c1tSWF9ERVNDX05VTV07CkBAIC00OTcsNiAmIzQzOzUwMCwxMiBAQCBzdGF0aWMgdm9pZCBoaXAwNF9zdGFydF90eF90aW1lcihzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdikKIHsKIAl1bnNpZ25lZCBsb25nIG5zID0gcHJpdi0mZ3Q7dHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjsKIAomIzQzOwkvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLgomIzQzOwkgKiBCb3RoIGFybWluZyBzaXRlcyAoVHggYW5kIE5BUEkgUnggcG9sbCkgZ28gdGhyb3VnaCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtwcml2LSZndDtjbG9zaW5nKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKiBhbGxvdyB0aW1lciB0byBmaXJlIGFmdGVyIGhhbGYgdGhlIHRpbWUgYXQgdGhlIGVhcmxpZXN0ICovCiAJaHJ0aW1lcl9zdGFydF9yYW5nZV9ucygmYW1wO3ByaXYtJmd0O3R4X2NvYWxlc2NlX3RpbWVyLCBuc190b19rdGltZShucyksCiAJCQkgICAgICAgbnMsIEhSVElNRVJfTU9ERV9SRUwpOwpAQCAtNjQ5LDEyICYjNDM7NjU4LDE1IEBAIHN0YXRpYyBpbnQgaGlwMDRfcnhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJCXByaXYtJmd0O3JlZ19pbnRlbiB8PSBSQ1ZfSU5UOwogCQl3cml0ZWxfcmVsYXhlZChwcml2LSZndDtyZWdfaW50ZW4sIHByaXYtJmd0O2Jhc2UgJiM0MzsgUFBFX0lOVEVOKTsKIAl9CiYjNDM7CS8qIEFybSB0aGUgY29hbGVzY2UgdGltZXIgQkVGT1JFIG5hcGlfY29tcGxldGVfZG9uZSgpOiBuYXBpX2Rpc2FibGUoKQomIzQzOwkgKiBpbiBoaXAwNF9tYWNfc3RvcCgpIHJldHVybnMgb25jZSBTQ0hFRCBpcyBjbGVhcmVkIGhlcmUsIG5vdCB3aGVuCiYjNDM7CSAqIHRoZSBwb2xsIGZ1bmN0aW9uIHJldHVybnMsIHNvIGFybWluZyBhZnRlcndhcmRzIGNhbiBzbGlwIHBhc3QgdGhlCiYjNDM7CSAqIHN0b3AgcGF0aCYjMzk7cyBocnRpbWVyX2NhbmNlbCgpLgomIzQzOwkgKi8KJiM0MzsJaWYgKHR4X3JlbWFpbmluZykKJiM0MzsJCWhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpOwogCW5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeCk7CiBkb25lOgotCS8qIHN0YXJ0IGEgbmV3IHRpbWVyIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChyeCAmbHQ7IGJ1ZGdldCAmYW1wOyZhbXA7IHR4X3JlbWFpbmluZykKLQkJaGlwMDRfc3RhcnRfdHhfdGltZXIocHJpdik7Ci0KIAlyZXR1cm4gcng7CiB9CiAKQEAgLTcyMCw3ICYjNDM7NzMyLDcgQEAgc3RhdGljIHZvaWQgaGlwMDRfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJfQogfQogCi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQomIzQzO3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIHsKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCWludCBpOwpAQCAtNzQzLDYgJiM0Mzs3NTUsMTMgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAkJaGlwMDRfc2V0X3JlY3ZfZGVzYyhwcml2LCBwaHlzKTsKIAl9CiAKJiM0MzsJLyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZQomIzQzOwkgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlCiYjNDM7CSAqIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCk7IHN0YXRlX2xvY2sgc2VyaWFsaXplcyB0aGlzIGFnYWluc3QKJiM0MzsJICogbWFjX3N0b3AoKSYjMzk7cyBzdG9yZS1yZWxlYXNlLgomIzQzOwkgKi8KJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtwcml2LSZndDtjbG9zaW5nLCBmYWxzZSk7CiYjNDM7CiAJaWYgKHByaXYtJmd0O3BoeSkKIAkJcGh5X3N0YXJ0KHByaXYtJmd0O3BoeSk7CiAKQEAgLTc1NCwxMyAmIzQzOzc3Myw0MiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGhpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQomIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CXJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IF9faGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAlpbnQgaTsKIAomIzQzOwkvKiBTdG9wIG5ldyB0aW1lciBhcm1zIGJlZm9yZSBkcmFpbmluZzogc2V0IHRoZSBjbG9zaW5nIGZsYWcgKGNoZWNrZWQKJiM0MzsJICogYXQgdGhlIHNpbmdsZSBhcm1pbmcgc2l0ZSksIHdhaXQgZm9yIHRoZSBOQVBJIHBvbGwgYW5kIGFueSBpbi1mbGlnaHQKJiM0MzsJICogVFggdG8gZmluaXNoLCB0aGVuIGNhbmNlbCB0aGUgdGltZXIuCiYjNDM7CSAqCiYjNDM7CSAqIG5ldGlmX3R4X2Rpc2FibGUoKSAobm90IG5ldGlmX3N0b3BfcXVldWUoKSkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGlzCiYjNDM7CSAqIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGRpcmVjdGx5IGZyb20gaGlwMDRfdHhfdGltZW91dF90YXNrKCksIG5vdAomIzQzOwkgKiBvbmx5IHZpYSAubmRvX3N0b3Agd2hlcmUgdGhlIGNvcmUgaGFzIGFscmVhZHkgZGVhY3RpdmF0ZWQgVFg7CiYjNDM7CSAqIG5ldGlmX3R4X2Rpc2FibGUoKSB3YWl0cyBmb3IgYW4gaW4tZmxpZ2h0IGhpcDA0X21hY19zdGFydF94bWl0KCksCiYjNDM7CSAqIHdoaWNoIGFybXMgdGhlIHRpbWVyLCB0byBmaW5pc2guCiYjNDM7CSAqCiYjNDM7CSAqIEJlY2F1c2UgaGlwMDRfcnhfcG9sbCgpIGFybXMgdGhlIHRpbWVyIGJlZm9yZSBuYXBpX2NvbXBsZXRlX2RvbmUoKSwKJiM0MzsJICogbmFwaV9kaXNhYmxlKCkgcmV0dXJuaW5nIG1lYW5zIHRoYXQgYXJtIGhhcyBoYXBwZW5lZCwgc28gdGhlCiYjNDM7CSAqIGhydGltZXJfY2FuY2VsKCkgYmVsb3cgY2Fubm90IG1pc3MgaXQuICBUaGUgc3RvcmUtcmVsZWFzZSBwYWlycwomIzQzOwkgKiB3aXRoIHRoZSBsb2FkIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCkuCiYjNDM7CSAqLwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO3ByaXYtJmd0O2Nsb3NpbmcsIHRydWUpOwomIzQzOwogCW5hcGlfZGlzYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwotCW5ldGlmX3N0b3BfcXVldWUobmRldik7CiYjNDM7CW5ldGlmX3R4X2Rpc2FibGUobmRldik7CiYjNDM7CWhydGltZXJfY2FuY2VsKCZhbXA7cHJpdi0mZ3Q7dHhfY29hbGVzY2VfdGltZXIpOwogCWhpcDA0X21hY19kaXNhYmxlKG5kZXYpOwogCWhpcDA0X3R4X3JlY2xhaW0obmRldiwgdHJ1ZSk7CiAJaGlwMDRfcmVzZXRfcHBlKHByaXYpOwpAQCAtNzc5LDYgJiM0Mzs4MjcsMTYgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CV9faGlwMDRfbWFjX3N0b3AobmRldik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSkKIHsKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtNzkxLDggJiM0Mzs4NDksMjMgQEAgc3RhdGljIHZvaWQgaGlwMDRfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjsKIAogCXByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7Ci0JaGlwMDRfbWFjX3N0b3AocHJpdi0mZ3Q7bmRldik7Ci0JaGlwMDRfbWFjX29wZW4ocHJpdi0mZ3Q7bmRldik7CiYjNDM7CiYjNDM7CS8qIFNlcmlhbGl6ZSB0aGUgcmVzdGFydCB3aXRoIC5uZG9fb3Blbi8ubmRvX3N0b3AsIHdoaWNoIHRha2UgdGhlCiYjNDM7CSAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGUKJiM0MzsJICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJiMzOTtzCiYjNDM7CSAqIHJ1bm5pbmctc3RhdGUgY2xlYXIsIC5uZG9fc3RvcCBzdGlsbCBydW5zIHVuZGVyIHN0YXRlX2xvY2sKJiM0MzsJICogYWZ0ZXJ3YXJkcyBhbmQgc3RvcHMgdGhlIGRldmljZSwgc28gdGhpcyB3b3JrZXIgY2Fubm90IGxlYXZlIHRoZQomIzQzOwkgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uCiYjNDM7CSAqLwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CWlmICghbmV0aWZfcnVubmluZyhwcml2LSZndDtuZGV2KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlfX2hpcDA0X21hY19zdG9wKHByaXYtJmd0O25kZXYpOwomIzQzOwlpZiAoX19oaXAwNF9tYWNfb3Blbihwcml2LSZndDtuZGV2KSkKJiM0MzsJCW5ldGRldl9lcnIocHJpdi0mZ3Q7bmRldiwgJiMzNDtyZXN0YXJ0IGFmdGVyIHR4IHRpbWVvdXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7b3V0OgomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtzdGF0ZV9sb2NrKTsKIH0KIAogc3RhdGljIGludCBoaXAwNF9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKQEAgLTk4Myw2ICYjNDM7MTA1Niw3IEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJfQogCiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7dHhfdGltZW91dF90YXNrLCBoaXAwNF90eF90aW1lb3V0X3Rhc2spOwomIzQzOwltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiAKIAluZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDtoaXAwNF9uZXRkZXZfb3BzOwogCW5kZXYtJmd0O2V0aHRvb2xfb3BzID0gJmFtcDtoaXAwNF9ldGh0b29sX29wczsKQEAgLTEwMjYsMTMgJiM0MzsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiAJc3RydWN0IGRldmljZSAqZCA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpOwomIzQzOwomIzQzOwkvKiBUaGUgSVJRIGlzIGRldm0tbWFuYWdlZCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIGZyZWVkIG9ubHkgYWZ0ZXIKJiM0MzsJICogdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgRnJlZSBpdCBub3csIGFmdGVyIHVucmVnaXN0ZXJfbmV0ZGV2KCkgaGFzCiYjNDM7CSAqIHJ1biAubmRvX3N0b3AgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCBtYXNrIGl0cyBpbnRlcnJ1cHQgc291cmNlLCBidXQKJiM0MzsJICogYmVmb3JlIHRoZSBtYW51YWwgZnJlZV9uZXRkZXYoKSBiZWxvdywgc28gdGhhdCBoaXAwNF9tYWNfaW50ZXJydXB0KCkKJiM0MzsJICogKGRldl9pZCA9PSBuZGV2KSBjYW5ub3QgZmlyZSBhZ2FpbnN0IGZyZWVkIG1lbW9yeS4gIGZyZWVfaXJxKCkgYWxzbwomIzQzOwkgKiBkcmFpbnMgYW55IGluLWZsaWdodCBoYW5kbGVyLgomIzQzOwkgKi8KJiM0MzsJZGV2bV9mcmVlX2lycShkLCBuZGV2LSZndDtpcnEsIG5kZXYpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cHJpdi0mZ3Q7dHhfdGltZW91dF90YXNrKTsKJiM0MzsJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDt0eF9jb2FsZXNjZV90aW1lcik7CiYjNDM7CiAJaWYgKHByaXYtJmd0O3BoeSkKIAkJcGh5X2Rpc2Nvbm5lY3QocHJpdi0mZ3Q7cGh5KTsKIAogCWhpcDA0X2ZyZWVfcmluZyhuZGV2LCBkKTsKLQl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIAlvZl9ub2RlX3B1dChwcml2LSZndDtwaHlfbm9kZSk7Ci0JY2FuY2VsX3dvcmtfc3luYygmYW1wO3ByaXYtJmd0O3R4X3RpbWVvdXRfdGFzayk7CiAJZnJlZV9uZXRkZXYobmRldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY2AuIEl0JiMzOTtzIGZpeGluZyBzb21lIHJhY2UgY29uZGl0aW9ucyByZWxhdGVkIHRvIHRoZSB0cmFuc21pdCBjb2FsZXNjZSB0aW1lciwgTUFDIG9wZW4vc3RvcCwgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuIFRoYXQmIzM5O3MgZ29vZCwgZnVuY3Rpb25hbCBmaXhlcyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzdGF0ZV9sb2NrYCBtdXRleCwgYSBgY2xvc2luZ2AgZmxhZywgYW5kIHVzZXMgbWVtb3J5IGJhcnJpZXJzIHdpdGggYHNtcF9sb2FkX2FjcXVpcmVgIGFuZCBgc21wX3N0b3JlX3JlbGVhc2VgLiBTdGFuZGFyZCBzdHVmZiBmb3IgY29uY3VycmVuY3kgZml4ZXMsIGJ1dCB3b3J0aCBhIGNsb3NlciBsb29rLiBUaGV5JiMzOTt2ZSBhbHNvIGNoYW5nZWQgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYGhpcDA0X3JlbW92ZWAgdG8gZGVhbCB3aXRoIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIG9uIGBuZGV2YCBpbiB0aGUgSVJRIGhhbmRsZXIuIERlZmluaXRlbHkgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGFibGUsIGlmIHRyaWdnZXJlZCBjb3JyZWN0bHkuCgpUaGUgbWFpbiBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyBpdCYjMzk7cyBhIG5ldHdvcmsgZHJpdmVyIGFuZCBpdCAqaXMqIGNoYW5naW5nIGZ1bmN0aW9uYWxpdHksIHRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBCdXQsIGl0JiMzOTtzIGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSDigJMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldC4gVGhlIGJpZyBodXJkbGUgaXMgcmVhY2hhYmlsaXR5LiBDYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGVtdWxhdGlvbiBhdmFpbGFibGU/IE9yIGFyZSB3ZSBjb21wbGV0ZWx5IHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmU/IFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIFNvQ3MgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enosIGJ1dCBub3QgaW1wb3NzaWJsZS4KCldhaXQgYSBtaW51dGUsIHN5emthbGxlciAqY2FuKiBoYW5kbGUgcGxhdGZvcm0gZHJpdmVycywgcmlnaHQ/IElmIGl0IGNhbiBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlLCBsaWtlIHRocm91Z2ggYHN5el9kZXZwdHNgIG9yIGlmIHRoZSBkcml2ZXIgZ2V0cyBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdCBpbiBhIFFFTVUgbWFjaGluZSwgbGlrZSB0aGUgdmlydCBtYWNoaW5lIG9yIHNvbWUgQVJNIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBvciBpZiBpdCYjMzk7cyBnZW5lcmFsbHkgY29tcGlsZWQgYW5kIHByb2JlYWJsZSBvbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBMb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBTbyB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlYXJjaCBmb3IgZWl0aGVyIGBoaXAwNF9tYWNfcHJvYmVgIG9yIGBoaXAwNF9ldGhgIGluIHRoZSBzb3VyY2UsIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgZGV2aWNlIGluc3RhbnRpYXRpb24gbG9va3MgbGlrZS4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBraWNrIHRoaXMgZHJpdmVyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpcDA0X21hY19wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9OTQ5PXN0YXRpYyB2b2lkIGhpcDA0X2ZyZWVfcmluZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGRldmljZSAqZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jOjk2NjpzdGF0aWMgaW50IGhpcDA0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jPTExMzE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaGlwMDRfbWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMyOlx0LnByb2JlXHQ9IGhpcDA0X21hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMzLVx0LnJlbW92ZSA9IGhpcDA0X3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKktjb25maWcgSW5zcGVjdGlvbiBUaW1lKioKClJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBkcml2ZXIuIFRoZSBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCB3aGVuIGl0IGNvbWVzIHRvIGNvbnRyb2xsaW5nIGl0cyBidWlsZCBhbmQgYmVoYXZpb3IuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgaXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGhlbHAgdGV4dCwgYW5kIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBzeW1ib2xzIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8gdmFyaW91cyBmZWF0dXJlcy4gVGhpcyBpcyB3aGVyZSBJIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb21waWxlZC4gS25vd2luZyB0aGUgS2NvbmZpZyBkZXRhaWxzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIHdpdGggb3RoZXIgZHJpdmVycyBvciBoYXJkd2FyZSBpcyBhYnNvbHV0ZWx5IGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIGltcGFjdCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIGJlIG1ha2luZyBub3RlIG9mIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBjb25mbGljdHMgcmlnaHQgYXdheS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhJUDA0X0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0yOD1jb25maWcgSElTSV9GRU1BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6NDA6Y29uZmlnIEhJUDA0X0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctNDEtXHR0cmlzdGF0ZSBcJiMzNDtISVNJTElDT04gUDA0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGFsd2F5cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSB3ZWIgb2YgaW50ZXJjb25uZWN0aW9ucyBhdCBwbGF5IGhlcmUuIEZvcmdldCB0aGUgc3VyZmFjZSBsZXZlbCBmb3IgYSBtb21lbnQ7IEkgbmVlZCB0byBkaWcgZGVlcC4gSSB3YW50IHRvIGlkZW50aWZ5ICpldmVyeSogZGVwZW5kZW5jeSwgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQuIFRoYXQgbWVhbnMgY29uc2lkZXJpbmcgbm90IGp1c3QgdGhlIGRpcmVjdCBsaW5rcywgdGhlIG9idmlvdXMgcmVsYXRpb25zaGlwcywgYnV0IGFsc28gdGhlIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgcG90ZW50aWFsIHNpZGUtY2hhbm5lbCBpbmZsdWVuY2VzLCBhbmQgYW55IGFzc3VtcHRpb25zIHRoYXQgbWF5IGJlIGJha2VkIGluLiBBcmUgdGhlc2UgZGVwZW5kZW5jaWVzIHdlbGwtZG9jdW1lbnRlZD8gQXJlIHRoZXkgdmVyc2lvbi1sb2NrZWQgYXBwcm9wcmlhdGVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSwgYW5kIHdoYXQgYXJlIHRoZSBtaXRpZ2F0aW9ucyBpbiBwbGFjZSwgb3IgKm5vdCogaW4gcGxhY2U/IFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZHJhd2luZyBhIHByZXR0eSBkZXBlbmRlbmN5IGdyYXBoOyBpdCYjMzk7cyBhYm91dCBhbnRpY2lwYXRpbmcgdGhlIGJyZWFraW5nIHBvaW50cywgdGhlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGFyZWFzIHdoZXJlIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIGEgY2F0YXN0cm9waGljIGNhc2NhZGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHdlYWtlc3QgbGlua3MsIHRoZSBjb21wb25lbnRzIHRoYXQgYXJlIG9wZXJhdGluZyB3aXRob3V0IHN1ZmZpY2llbnQgb3ZlcnNpZ2h0IG9yIHJvYnVzdCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgZWFjaCBwb3RlbnRpYWwgZmFpbHVyZS4gSSYjMzk7bSB0cnlpbmcgdG8gcGljdHVyZSB0aGUgcmlwcGxlIGVmZmVjdCBhbmQgdGhlIG1pdGlnYXRpb24gc3RyYXRlZ2llcyB0aGF0IHdpbGwgYmUgcmVxdWlyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXNlIGRlcGVuZGVuY2llcyBleGlzdCwgd2hhdCB0aGV5IGNvbnRyaWJ1dGUsIGFuZCBpZiB0aGV5JiMzOTtyZSBhY3R1YWxseSAqbmVjZXNzYXJ5Ki4gT2Z0ZW4sIG9wdGltaXphdGlvbiBiZWdpbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdFx0ICBUaGUgRkVNQUMgcmVjZWl2ZXMgYW5kIHRyYW5zbWl0cyBkYXRhIG92ZXIgRXRoZXJuZXRcbiAgMzY6XHRcdCAgcG9ydHMgYXQgMTAvMTAwIE1icHMgaW4gZnVsbC1kdXBsZXggb3IgaGFsZi1kdXBsZXggbW9kZS5cbiAgMzc6XHRcdCAgVGhlIEZFTUFDIGV4Y2hhbmdlcyBkYXRhIHdpdGggdGhlIENQVSwgYW5kIHN1cHBvcnRzXG4gIDM4Olx0XHQgIHRoZSBlbmVyZ3kgZWZmaWNpZW50IEV0aGVybmV0IChFRUUpLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBISVAwNF9FVEhcbiAgNDE6XHRcdHRyaXN0YXRlIFwmIzM0O0hJU0lMSUNPTiBQMDQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cdCMgRm9yIE1GRF9TWVNDT05cbiAgNDM6XHRcdHNlbGVjdCBNQVJWRUxMX1BIWVxuICA0NDpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgNDU6XHRcdHNlbGVjdCBITlNfTURJT1xuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggaGlzaWxpY29uIHAwNCBTb0MgYW5kXG4gIDQ4Olx0XHQgIHdhbnQgdG8gdXNlIHRoZSBpbnRlcm5hbCBldGhlcm5ldCB0aGVuIHlvdSBzaG91bGQgYW5zd2VyIFkgdG8gdGhpcy5cbiAgNDk6XHRcbiAgNTA6XHRjb25maWcgSEkxM1gxX0dNQUNcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7SGlzaWxpY29uIEhJMTNYMSBOZXR3b3JrIERldmljZSBTdXBwb3J0XCYjMzQ7XG4gIDUyOlx0XHRkZXBlbmRzIG9uIEhJUDA0X0VUSFxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggaGlzaWxpY29uIGhpMTN4MV9nYW1jXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIuIEZpcnN0LCBpdCBoaW5nZXMgb24gYEhBU19JT01FTWAsIHdoaWNoIHRlbGxzIG1lIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBldmVuIHJlYWNoIGl0LiBDYW4gc3l6a2FsbGVyIGVmZmVjdGl2ZWx5IGZ1enogcGxhdGZvcm0gZHJpdmVycz8gSSBrbm93IGl0IGNhbiB1c2UgcHNldWRvLXN5c2NhbGxzIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZXMsIG9yIGl0IGNhbiBwb2tlIGFyb3VuZCBpbiBgL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlc2AgaWYgdGhlcmUmIzM5O3MgYSB1c2FibGUgaW50ZXJmYWNlLCBvciBpZiB0aGUgZGV2aWNlIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGV2aWNlIHRyZWUuCgpXYWl0LCBidXQgaXQmIzM5O3Mgbm90IGxpa2Ugc3l6a2FsbGVyIGp1c3QgbWFnaWNhbGx5IGluc3RhbnRpYXRlcyBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgZGVkaWNhdGVkIGRlc2NyaXB0aW9uIGZvciBpdCwgb3IgaXTigJlzIGJha2VkIGludG8gdGhlIHN0YW5kYXJkIFFFTVUgbWFjaGluZSwgcmlnaHQ/IEl0IGRvZXNuJiMzOTt0IHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X2RldnB0c2Agb3IgcmVsYXRlZCBzeXNjYWxscy4gU3l6a2FsbGVyIGxldmVyYWdlcyBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgb3RoZXIgc2ltaWxhciBhcHByb2FjaGVzLCBidXQgbm90IGEgZ2VuZXJpYyBtZXRob2QgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgd2l0aG91dCBhIGRldmljZSB0cmVlIGVudHJ5IG9yIHNwZWNpZmljIHBzZXVkby1zeXNjYWxsLgoKU3RpbGwsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgKmlmKiBpdCYjMzk7cyByZWFjaGFibGUuIFNvLCBpcyBpdCByZWFjaGFibGU/IElmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4gYW5kIHRoZSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgd2UgaGF2ZSBhIHRhcmdldC4gQnV0IGhvdyB0aGUgaGVjayAqaXMqIHRoZSBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0ZXJlZD8KCk5vcm1hbGx5LCBmb3IgZHJpdmVyIGZpeGVzIHRoYXQgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIEkmIzM5O2QganVzdCBmbGFnIGBXb3J0aEZ1enppbmc6IHRydWVgIGFuZCBwcm92aWRlIHRoZSByZWxldmFudCBjb25maWdzLgoKQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWU6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuJiMzNDsKClRoZSBrZXkgcXVlc3Rpb24gaXM6IElzIGBoaXAwNF9ldGhgIHJlYWNoYWJsZSBpbiBRRU1VPyBEb2VzIFFFTVUgZW11bGF0ZSBIaXNpbGljb24gUDA0IEV0aGVybmV0PyBNeSBndXQgc2F5cyBubywgdW5sZXNzIGl0JiMzOTtzIHBhcnQgb2YgYSB2ZXJ5IHNwZWNpZmljIG1hY2hpbmUgdHlwZS4gSSBiZXR0ZXIgY2hlY2sgdG8gc2VlIGlmIFFFTVUgZXZlbiBoYXMgYGhpcDA0X2V0aGAgc3VwcG9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlwMDQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU9Nj1kdGItJChDT05GSUdfQVJDSF9ISVAwNCkgJiM0Mzs9IFxcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU6NzpcdGhpcDA0LWQwMS5kdGJcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9NYWtlZmlsZS04LWR0Yi0kKENPTkZJR19BUkNIX0hJU0kpICYjNDM7PSBcXFxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTgtXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czo5OiNpbmNsdWRlIFwmIzM0O2hpcDA0LmR0c2lcJiMzNDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTEwLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHM9MTE9LyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTUtXHRtb2RlbCA9IFwmIzM0O0hpc2lsaWNvbiBEMDEgRGV2ZWxvcG1lbnQgQm9hcmRcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czoxNjpcdGNvbXBhdGlibGUgPSBcJiMzNDtoaXNpbGljb24saGlwMDQtZDAxXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTctXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjA9XHRib290d3JhcHBlciB7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2hpc2lsaWNvbixoaXAwNC1ib290d3JhcHBlclwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpLTIyLVx0XHRib290LW1ldGhvZCA9IFx1MDAzYzB4MTBjMDAwMDAgMHgxMDAwMFx1MDAzZSwgXHUwMDNjMHhlMDAwMDEwMCAweDEwMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjA0PVx0XHRnaWM6IGludGVycnVwdC1jb250cm9sbGVyQGMwMTAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMDU6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2hpc2lsaWNvbixoaXAwNC1pbnRjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjA2LVx0XHRcdCNpbnRlcnJ1cHQtY2VsbHMgPSBcdTAwM2MzXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIyMD1cdFx0ZmFicmljOiBmYWJyaWMge1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k6MjIxOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtoaXNpbGljb24saGlwMDQtZmFicmljXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjIyLVx0XHRcdHJlZyA9IFx1MDAzYzB4MzAyYTAwMCAweDEwMDBcdTAwM2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MTMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGV2ZW4gKmdldCogdG8gdGhpcz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIElmIHRoZXJlIGlzbiYjMzk7dCBhIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCB0byBpbnN0YW50aWF0ZSBpdCwgYW5kIGl0JiMzOTtzIG5vdCBhIFBDSSBvciBVU0IgZGV2aWNlIHRoYXQgd2UgY2FuIGVtdWxhdGUsIHRoZW4gd2UmIzM5O3JlIHByZXR0eSBtdWNoIHN0dWNrIHVubGVzcyB3ZSYjMzk7cmUgYm9vdGluZyB0aGUgZXhhY3QgbWFjaGluZSB0eXBlIHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yLiBEb2VzIHN5emthbGxlciBldmVuIHN1cHBvcnQgdGhlICYjMzQ7aGlwMDQmIzM0OyBtYWNoaW5lIHR5cGUsIHNwZWNpZmljYWxseT8gTm8sIGl0IHVzdWFsbHkgZ29lcyBmb3IgdGhlIGNvbW1vbiB2aXJ0dWFsaXplZCBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBoaXAwNGAgaXMgYSBIaXNpbGljb24gU29DLgoKSSBzdGFydCBydW5uaW5nIHRocm91Z2ggdGhlIHBvc3NpYmlsaXRpZXMuIERvZXMgYHN5el9kZXZwdHNgIGhlbHAgaGVyZT8gTm8uIElzIHRoZXJlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYD8gTm9wZSwgbm90aGluZyBsaWtlIHRoYXQgZXhpc3RzLiBDYW4gd2UgbGV2ZXJhZ2UgYHN5el9pbml0X25ldF9zb2NrZXRgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBObywgYmVjYXVzZSB0aGF0IGRvZXNuJiMzOTt0IGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLiBNYXliZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBjb3VsZCBiZSBhbiBvcHRpb24sIGJ1dC4uLndhaXQsIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHN1cHBvcnQgdGhvc2UgZm9yIGZ1enppbmcgcGxhdGZvcm0gZHJpdmVycy4KClRoZSBwcm9tcHQgaW4gdGhlIHRhc2sgaXMgY2xlYXI6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggY29udGFpbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMmIzM0Oy4gT2theSwgc28gaXMgYGhpcDA0X2V0aGAgdW5yZWFjaGFibGU/IEFic29sdXRlbHkuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHNwZWNpZmljIHRvIGEgSGlzaWxpY29uIFNvQy4gVW5sZXNzIFFFTVUgZW11bGF0ZXMgdGhpcyBzcGVjaWZpYyBTb0MsIGFuZCBzeXprYWxsZXIgaXMgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQgdG8gdXNlIHRoYXQgZW11bGF0aW9uLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCBpdC4KCkxldCYjMzk7cyBjaGVjayBpZiBRRU1VIGV2ZW4gc3VwcG9ydHMgdGhpcyBgaGlwMDRgIG1hY2hpbmUuIE5vcGUsIG5vdGhpbmcuIFNvLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSwgb3Igc28gSSB0aG91Z2h0LiBCdXQgd2hhdCBpZiB0aGVyZSYjMzk7cyBzb21lICpvdGhlciogd2F5IHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWluZCBteXNlbGYgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzIGFyZSBib3VuZCB0byBwbGF0Zm9ybSBkZXZpY2VzLiBUaG9zZSBkZXZpY2VzIGFyZSBjcmVhdGVkIGJ5IHBsYXRmb3JtIGNvZGUsIGxpa2UgRGV2aWNlIFRyZWVzIG9yIGJvYXJkIGZpbGVzLgoKU28sIGluIHRoZSB1c3VhbCBzeXprYWxsZXIgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBCdXQuLi4gd2FpdCBhIG1pbnV0ZSEgRGlkbiYjMzk7dCBzeXprYWxsZXIgYWN0dWFsbHkgKmZpbmQqIGEgYnVnIGluIHRoaXMgZHJpdmVyPyBUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7LiBJZiBzeXotY2x1c3RlciBmb3VuZCBhIGJ1ZywgaG93IGRpZCBpdCByZWFjaCBpdD8gTm93LCB0aGF0JiMzOTtzIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbi4gTWF5YmUgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgd2F5IHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgdGhhdCBJIGhhdmVuJiMzOTt0IGNvbWUgYWNyb3NzLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgZm9yIGFueSBgc3l6X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGxhdGZvcm0gZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIEFuYWx5c2lzKioKCk9rYXksIHNvIHN5emthbGxlciBmbGFnZ2VkIHNvbWV0aGluZywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBmaXJzdCB0aG91Z2h0IGlzOiBkaWQgc3l6a2FsbGVyIGRpc2NvdmVyIGl0IHRocm91Z2ggc3RhdGljIGFuYWx5c2lzLCBvciBpcyBpdCBhIHBhdGNoIGJlaW5nIHRlc3RlZCBieSBzeXotY2x1c3Rlcj8gVGhlICYjMzQ7YXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBtZXNzYWdlIHN1Z2dlc3RzIHRoZSBsYXR0ZXIgLSBhIHBhdGNoIHRlc3RpbmcgcmVxdWVzdC4gU3l6Ym90IHRlc3RzIHBhdGNoZXMsIGV2ZW4gaWYgaXQgY2FuJiMzOTt0IGFjdGl2ZWx5IGZ1enogdGhlbSwgYnV0IGl0IHdvbiYjMzk7dCBmaW5kIGJ1Z3MgaW4gKnVucmVhY2hhYmxlKiBjb2RlLgoKSWYgaXQgKmlzKiB1bnJlYWNoYWJsZSwgdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIG5lZWQgdG8gY29uZmlybS4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgdW5yZWFjaGFibGUsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGaXJzdCwgbGV0IG1lIGNoZWNrIGZvciBhbnkgZGV2aWNlIGluc3RhbnRpYXRpb24gbWV0aG9kcy4gQ2FuIEkgY3JlYXRlIHRoaXMgZGV2aWNlIHRocm91Z2ggYSBgL3N5c2AgaW50ZXJmYWNlPyBObywgZ2VuZXJhbGx5IG5vdCB3aXRoIHBsYXRmb3JtIGRldmljZXMuIE9rYXksIHdoYXQgYWJvdXQgYSBtb2R1bGU/IElzIHRoZXJlIGEgYGhpcDA0X2V0aGAgbW9kdWxlPyBZZXMsIGBDT05GSUdfSElQMDRfRVRIPW1gLiBJZiBpdCYjMzk7cyBsb2FkZWQsIGBoaXAwNF9tYWNfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBhY3R1YWwgZGV2aWNlICpleGlzdHMqLiBDYW4gSSwgYXMgYSB1c2VyLCBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBpdHNlbGY/IE5vLCBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBpcyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBObyBsZWdhY3kgcHJvYmluZz8gTm8gc3lzZnMgbWFnaWM/IEkgY2FuIGJpbmQvdW5iaW5kLCBidXQgSSBuZWVkIHRoZSBkZXZpY2UgdG8gZXhpc3QgaW4gdGhlIGZpcnN0IHBsYWNlLgoKRXNzZW50aWFsbHksIGl0IGxvb2tzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBMZXQgbWUgcmUtcmVhZCB0aGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb246ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4KClRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgKGBoaXAwNF9ldGhgKSBmb3Igc3BlY2lmaWMgSGlzaWxpY29uIFAwNCBTb0MgaGFyZHdhcmUuIFFFTVUgKmRlZmluaXRlbHkqIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdC4gSXQmIzM5O3Mgbm90IHRoZSBgdmlydGAgbWFjaGluZSwgYW5kIGl0JiMzOTtzIG5vdCBldmVuIGEgJiMzNDtyYXNwaSYjMzQ7LCAmIzM0O2lteCYjMzQ7LCBldGMgbWFjaGluZS4gVGhlcmUmIzM5O3Mgbm8gaGlzaWxpY29uIGVtdWxhdGlvbi4gSG9sZCBvbi4uLiBpcyB0aGVyZSBhIGNoYW5jZSBzeXprYWxsZXIgaXMgdXNpbmcgc29tZSBwc2V1ZG8gZGV2aWNlIGZvciB0aGlzPyBObywgSSBkb24mIzM5O3QgdGhpbmsgc28uIEl0JiMzOTtzIHVucmVhY2hhYmxlLgoKT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJpbGl0eS4gV2hhdCBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2U/IExldCBtZSBjaGVjayBgaGlwMDRfbWFjX2RyaXZlcmAuCgpZdXAsIGNvbmZpcm1lZC4gVGhpcyBpcyBhIGRlYWQgZW5kLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlwMDRfbWFjX2RyaXZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEyOT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBoaXAwNF9tYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6MTEzMTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaXAwNF9tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzItXHQucHJvYmVcdD0gaGlwMDRfbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTM4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6MTEzOTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGhpcDA0X21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzY2CgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDMzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIsIGBoaXAwNF9ldGguY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBgcGxhdGZvcm1fZHJpdmVyYCwgd2hpY2ggaXMgaW1wb3J0YW50LiBJdCBtZWFucyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBiaW5kIHRvIGEgc3BlY2lmaWMgYHBsYXRmb3JtX2RldmljZWAuIEFuZCBwbGF0Zm9ybSBkZXZpY2VzLCBhcyB5b3Uga25vdywgYXJlIHR5cGljYWxseSBicm91Z2h0IGludG8gZXhpc3RlbmNlIGR1cmluZyBrZXJuZWwgYm9vdCwgZWl0aGVyIHRocm91Z2ggdGhlIERldmljZSBUcmVlIChEVCksIEFDUEksIG9yIHNvbWV0aW1lcyBtYW51YWxseSB0aHJvdWdoIG90aGVyIGtlcm5lbCBjb2RlLgoKVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIHN0YW5kYXJkIGJvb3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGB2aXJ0YCBtYWNoaW5lIChvciBhbnl0aGluZyBzaW1pbGFyKSwgcmVsaWVzIG9uIGEgc3BlY2lmaWMgRGV2aWNlIFRyZWUgb3IgQUNQSS4gVGhlIGBoaXNpbGljb24saGlwMDQtbWFjYCBkZXZpY2UsIHdoaWNoIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8sIGlzICpub3QqIHByZXNlbnQgaW4gdGhhdCBkZWZhdWx0IERULiBUaGVyZWZvcmUsIHRoZSBrZXJuZWwgd29uJiMzOTt0IGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBgcGxhdGZvcm1fZGV2aWNlYCBkdXJpbmcgYm9vdC4KCk5vdywgYmVjYXVzZSB0aGF0IGBwbGF0Zm9ybV9kZXZpY2VgIGlzIG1pc3NpbmcsIHRoZSBjcnVjaWFsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIgaXMgbmV2ZXIgY2FsbGVkLiBBbmQgd2l0aG91dCB0aGF0IGBwcm9iZWAgZnVuY3Rpb24gZXhlY3V0aW5nLCB0aGUgbmV0d29yayBkZXZpY2UgKGBuZXRfZGV2aWNlYCkgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhlIHBhdGNoZWQgY29kZSwgbGlrZSBgaGlwMDRfbWFjX29wZW5gLCBgaGlwMDRfbWFjX3N0b3BgLCBvciBgaGlwMDRfcnhfcG9sbGAsIHdpbGwgZXZlciBiZSByZWFjaGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJpbmQtdGltZSBpc3N1ZS4KClNvLCB0aGUgY29uY2x1c2lvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSBwYXRocyB3aXRoaW4gdGhlIEhJUDA0IGRyaXZlciB0aGF0IGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBoaW5nZXMgb24gaGFyZHdhcmUgdGhhdCBzaW1wbHkgaXNuJiMzOTt0IGVtdWxhdGVkIG9yIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJdCYjMzk7cyBhbHNvIG5vdCBwb3NzaWJsZSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGZvcmNlIGl0IGludG8gZXhpc3RlbmNlLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBvbmx5IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNgLCBzbyB0aGVyZSBhcmUgbm8gb3RoZXIgYWZmZWN0ZWQgZmlsZXMuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSYjMzk7bGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmluYWxpemUgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyIChoaXAwNF9ldGguYyksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSAoSGlzaWxpY29uIFAwNCBTb0MpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBmcm9tIHVzZXItc3BhY2UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjE3NTE0Nzk2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIxOTk2MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjE3NTE1NTM4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzNTg1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2M3YzI3NTMwZjlkYTZjMTg1OGU3ZTUzYTZmNzYxOTFjMjI3MGYyMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDowMTozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcXG5pbmRleCAxODM3NmJjYzcxOGEyMC4uNGJkMTkyMDk0MGI3MzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTQ19QUEVfUkVTRVRfRFJFUVxcdFxcdDB4MDI2Q1xcbiBcXG5AQCAtMjMyLDYgKzIzMyw4IEBAIHN0cnVjdCBoaXAwNF9wcml2IHtcXG4gXFx0aW50IHR4X2NvYWxlc2NlX2ZyYW1lcztcXG4gXFx0aW50IHR4X2NvYWxlc2NlX3VzZWNzO1xcbiBcXHRzdHJ1Y3QgaHJ0aW1lciB0eF9jb2FsZXNjZV90aW1lcjtcXG4rXFx0Ym9vbCBjbG9zaW5nO1xcbitcXHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbG9jazsgLyogU2VyaWFsaXplcyBNQUMgb3Blbi9zdG9wIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiAqL1xcbiBcXG4gXFx0dW5zaWduZWQgY2hhciAqcnhfYnVmW1JYX0RFU0NfTlVNXTtcXG4gXFx0ZG1hX2FkZHJfdCByeF9waHlzW1JYX0RFU0NfTlVNXTtcXG5AQCAtNDk3LDYgKzUwMCwxMiBAQCBzdGF0aWMgdm9pZCBoaXAwNF9zdGFydF90eF90aW1lcihzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIG5zID0gcHJpdi1cXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjtcXG4gXFxuK1xcdC8qIERvIG5vdCAocmUtKWFybSB0aGUgVHggY29hbGVzY2UgdGltZXIgb25jZSB0ZWFyZG93biBoYXMgYmVndW4uXFxuK1xcdCAqIEJvdGggYXJtaW5nIHNpdGVzIChUeCBhbmQgTkFQSSBSeCBwb2xsKSBnbyB0aHJvdWdoIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2cHJpdi1cXHUwMDNlY2xvc2luZykpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdC8qIGFsbG93IHRpbWVyIHRvIGZpcmUgYWZ0ZXIgaGFsZiB0aGUgdGltZSBhdCB0aGUgZWFybGllc3QgKi9cXG4gXFx0aHJ0aW1lcl9zdGFydF9yYW5nZV9ucyhcXHUwMDI2cHJpdi1cXHUwMDNldHhfY29hbGVzY2VfdGltZXIsIG5zX3RvX2t0aW1lKG5zKSxcXG4gXFx0XFx0XFx0ICAgICAgIG5zLCBIUlRJTUVSX01PREVfUkVMKTtcXG5AQCAtNjQ5LDEyICs2NTgsMTUgQEAgc3RhdGljIGludCBoaXAwNF9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcmVnX2ludGVuIHw9IFJDVl9JTlQ7XFxuIFxcdFxcdHdyaXRlbF9yZWxheGVkKHByaXYtXFx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cXHUwMDNlYmFzZSArIFBQRV9JTlRFTik7XFxuIFxcdH1cXG4rXFx0LyogQXJtIHRoZSBjb2FsZXNjZSB0aW1lciBCRUZPUkUgbmFwaV9jb21wbGV0ZV9kb25lKCk6IG5hcGlfZGlzYWJsZSgpXFxuK1xcdCAqIGluIGhpcDA0X21hY19zdG9wKCkgcmV0dXJucyBvbmNlIFNDSEVEIGlzIGNsZWFyZWQgaGVyZSwgbm90IHdoZW5cXG4rXFx0ICogdGhlIHBvbGwgZnVuY3Rpb24gcmV0dXJucywgc28gYXJtaW5nIGFmdGVyd2FyZHMgY2FuIHNsaXAgcGFzdCB0aGVcXG4rXFx0ICogc3RvcCBwYXRoJ3MgaHJ0aW1lcl9jYW5jZWwoKS5cXG4rXFx0ICovXFxuK1xcdGlmICh0eF9yZW1haW5pbmcpXFxuK1xcdFxcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xcbiBcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcngpO1xcbiBkb25lOlxcbi1cXHQvKiBzdGFydCBhIG5ldyB0aW1lciBpZiBuZWNlc3NhcnkgKi9cXG4tXFx0aWYgKHJ4IFxcdTAwM2MgYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHR4X3JlbWFpbmluZylcXG4tXFx0XFx0aGlwMDRfc3RhcnRfdHhfdGltZXIocHJpdik7XFxuLVxcbiBcXHRyZXR1cm4gcng7XFxuIH1cXG4gXFxuQEAgLTcyMCw3ICs3MzIsNyBAQCBzdGF0aWMgdm9pZCBoaXAwNF9hZGp1c3RfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbitzdGF0aWMgaW50IF9faGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuIHtcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0aW50IGk7XFxuQEAgLTc0Myw2ICs3NTUsMTMgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0XFx0aGlwMDRfc2V0X3JlY3ZfZGVzYyhwcml2LCBwaHlzKTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZVxcbitcXHQgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlXFxuK1xcdCAqIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCk7IHN0YXRlX2xvY2sgc2VyaWFsaXplcyB0aGlzIGFnYWluc3RcXG4rXFx0ICogbWFjX3N0b3AoKSdzIHN0b3JlLXJlbGVhc2UuXFxuK1xcdCAqL1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2cHJpdi1cXHUwMDNlY2xvc2luZywgZmFsc2UpO1xcbitcXG4gXFx0aWYgKHByaXYtXFx1MDAzZXBoeSlcXG4gXFx0XFx0cGh5X3N0YXJ0KHByaXYtXFx1MDAzZXBoeSk7XFxuIFxcbkBAIC03NTQsMTMgKzc3Myw0MiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4rc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4re1xcbitcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIFN0b3AgbmV3IHRpbWVyIGFybXMgYmVmb3JlIGRyYWluaW5nOiBzZXQgdGhlIGNsb3NpbmcgZmxhZyAoY2hlY2tlZFxcbitcXHQgKiBhdCB0aGUgc2luZ2xlIGFybWluZyBzaXRlKSwgd2FpdCBmb3IgdGhlIE5BUEkgcG9sbCBhbmQgYW55IGluLWZsaWdodFxcbitcXHQgKiBUWCB0byBmaW5pc2gsIHRoZW4gY2FuY2VsIHRoZSB0aW1lci5cXG4rXFx0ICpcXG4rXFx0ICogbmV0aWZfdHhfZGlzYWJsZSgpIChub3QgbmV0aWZfc3RvcF9xdWV1ZSgpKSBpcyByZXF1aXJlZCBiZWNhdXNlIHRoaXNcXG4rXFx0ICogZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBoaXAwNF90eF90aW1lb3V0X3Rhc2soKSwgbm90XFxuK1xcdCAqIG9ubHkgdmlhIC5uZG9fc3RvcCB3aGVyZSB0aGUgY29yZSBoYXMgYWxyZWFkeSBkZWFjdGl2YXRlZCBUWDtcXG4rXFx0ICogbmV0aWZfdHhfZGlzYWJsZSgpIHdhaXRzIGZvciBhbiBpbi1mbGlnaHQgaGlwMDRfbWFjX3N0YXJ0X3htaXQoKSxcXG4rXFx0ICogd2hpY2ggYXJtcyB0aGUgdGltZXIsIHRvIGZpbmlzaC5cXG4rXFx0ICpcXG4rXFx0ICogQmVjYXVzZSBoaXAwNF9yeF9wb2xsKCkgYXJtcyB0aGUgdGltZXIgYmVmb3JlIG5hcGlfY29tcGxldGVfZG9uZSgpLFxcbitcXHQgKiBuYXBpX2Rpc2FibGUoKSByZXR1cm5pbmcgbWVhbnMgdGhhdCBhcm0gaGFzIGhhcHBlbmVkLCBzbyB0aGVcXG4rXFx0ICogaHJ0aW1lcl9jYW5jZWwoKSBiZWxvdyBjYW5ub3QgbWlzcyBpdC4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzXFxuK1xcdCAqIHdpdGggdGhlIGxvYWQgaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKS5cXG4rXFx0ICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZwcml2LVxcdTAwM2VjbG9zaW5nLCB0cnVlKTtcXG4rXFxuIFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuLVxcdG5ldGlmX3N0b3BfcXVldWUobmRldik7XFxuK1xcdG5ldGlmX3R4X2Rpc2FibGUobmRldik7XFxuK1xcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XFxuIFxcdGhpcDA0X21hY19kaXNhYmxlKG5kZXYpO1xcbiBcXHRoaXAwNF90eF9yZWNsYWltKG5kZXYsIHRydWUpO1xcbiBcXHRoaXAwNF9yZXNldF9wcGUocHJpdik7XFxuQEAgLTc3OSw2ICs4MjcsMTYgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuK3tcXG4rXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRfX2hpcDA0X21hY19zdG9wKG5kZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgaGlwMDRfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNzkxLDggKzg0OSwyMyBAQCBzdGF0aWMgdm9pZCBoaXAwNF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjtcXG4gXFxuIFxcdHByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7XFxuLVxcdGhpcDA0X21hY19zdG9wKHByaXYtXFx1MDAzZW5kZXYpO1xcbi1cXHRoaXAwNF9tYWNfb3Blbihwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFxuK1xcdC8qIFNlcmlhbGl6ZSB0aGUgcmVzdGFydCB3aXRoIC5uZG9fb3Blbi8ubmRvX3N0b3AsIHdoaWNoIHRha2UgdGhlXFxuK1xcdCAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGVcXG4rXFx0ICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJ3NcXG4rXFx0ICogcnVubmluZy1zdGF0ZSBjbGVhciwgLm5kb19zdG9wIHN0aWxsIHJ1bnMgdW5kZXIgc3RhdGVfbG9ja1xcbitcXHQgKiBhZnRlcndhcmRzIGFuZCBzdG9wcyB0aGUgZGV2aWNlLCBzbyB0aGlzIHdvcmtlciBjYW5ub3QgbGVhdmUgdGhlXFxuK1xcdCAqIE1BQyByZS1lbmFibGVkIGFnYWluc3QgYSB0ZWFyZG93bi5cXG4rXFx0ICovXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRpZiAoIW5ldGlmX3J1bm5pbmcocHJpdi1cXHUwMDNlbmRldikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0X19oaXAwNF9tYWNfc3RvcChwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFx0aWYgKF9faGlwMDRfbWFjX29wZW4ocHJpdi1cXHUwMDNlbmRldikpXFxuK1xcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlbmRldiwgXFxcInJlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXFxcblxcXCIpO1xcbitvdXQ6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuQEAgLTk4Myw2ICsxMDU2LDcgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0fVxcbiBcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2V0eF90aW1lb3V0X3Rhc2ssIGhpcDA0X3R4X3RpbWVvdXRfdGFzayk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXG4gXFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZoaXAwNF9uZXRkZXZfb3BzO1xcbiBcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZoaXAwNF9ldGh0b29sX29wcztcXG5AQCAtMTAyNiwxMyArMTEwMCwyNCBAQCBzdGF0aWMgdm9pZCBoaXAwNF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0c3RydWN0IGRldmljZSAqZCA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIFxcbitcXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4rXFxuK1xcdC8qIFRoZSBJUlEgaXMgZGV2bS1tYW5hZ2VkIGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgZnJlZWQgb25seSBhZnRlclxcbitcXHQgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBGcmVlIGl0IG5vdywgYWZ0ZXIgdW5yZWdpc3Rlcl9uZXRkZXYoKSBoYXNcXG4rXFx0ICogcnVuIC5uZG9fc3RvcCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIG1hc2sgaXRzIGludGVycnVwdCBzb3VyY2UsIGJ1dFxcbitcXHQgKiBiZWZvcmUgdGhlIG1hbnVhbCBmcmVlX25ldGRldigpIGJlbG93LCBzbyB0aGF0IGhpcDA0X21hY19pbnRlcnJ1cHQoKVxcbitcXHQgKiAoZGV2X2lkID09IG5kZXYpIGNhbm5vdCBmaXJlIGFnYWluc3QgZnJlZWQgbWVtb3J5LiAgZnJlZV9pcnEoKSBhbHNvXFxuK1xcdCAqIGRyYWlucyBhbnkgaW4tZmxpZ2h0IGhhbmRsZXIuXFxuK1xcdCAqL1xcbitcXHRkZXZtX2ZyZWVfaXJxKGQsIG5kZXYtXFx1MDAzZWlycSwgbmRldik7XFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XFxuK1xcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XFxuK1xcbiBcXHRpZiAocHJpdi1cXHUwMDNlcGh5KVxcbiBcXHRcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHkpO1xcbiBcXG4gXFx0aGlwMDRfZnJlZV9yaW5nKG5kZXYsIGQpO1xcbi1cXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0b2Zfbm9kZV9wdXQocHJpdi1cXHUwMDNlcGh5X25vZGUpO1xcbi1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NDAuOTMwNzk1ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDY2MzM3NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2M3YzI3NTMwZjlkYTZjMTg1OGU3ZTUzYTZmNzYxOTFjMjI3MGYyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjAxOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXG5pbmRleCAxODM3NmJjYzcxOGEyMC4uNGJkMTkyMDk0MGI3MzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY1xuQEAgLTE1LDYgKzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuIFxuICNkZWZpbmUgU0NfUFBFX1JFU0VUX0RSRVFcdFx0MHgwMjZDXG4gXG5AQCAtMjMyLDYgKzIzMyw4IEBAIHN0cnVjdCBoaXAwNF9wcml2IHtcbiBcdGludCB0eF9jb2FsZXNjZV9mcmFtZXM7XG4gXHRpbnQgdHhfY29hbGVzY2VfdXNlY3M7XG4gXHRzdHJ1Y3QgaHJ0aW1lciB0eF9jb2FsZXNjZV90aW1lcjtcbitcdGJvb2wgY2xvc2luZztcbitcdHN0cnVjdCBtdXRleCBzdGF0ZV9sb2NrOyAvKiBTZXJpYWxpemVzIE1BQyBvcGVuL3N0b3AgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuICovXG4gXG4gXHR1bnNpZ25lZCBjaGFyICpyeF9idWZbUlhfREVTQ19OVU1dO1xuIFx0ZG1hX2FkZHJfdCByeF9waHlzW1JYX0RFU0NfTlVNXTtcbkBAIC00OTcsNiArNTAwLDEyIEBAIHN0YXRpYyB2b2lkIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHN0cnVjdCBoaXAwNF9wcml2ICpwcml2KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbnMgPSBwcml2LVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzICogTlNFQ19QRVJfVVNFQyAvIDI7XG4gXG4rXHQvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLlxuK1x0ICogQm90aCBhcm1pbmcgc2l0ZXMgKFR4IGFuZCBOQVBJIFJ4IHBvbGwpIGdvIHRocm91Z2ggaGVyZS5cbitcdCAqL1xuK1x0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2cHJpdi1cdTAwM2VjbG9zaW5nKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LyogYWxsb3cgdGltZXIgdG8gZmlyZSBhZnRlciBoYWxmIHRoZSB0aW1lIGF0IHRoZSBlYXJsaWVzdCAqL1xuIFx0aHJ0aW1lcl9zdGFydF9yYW5nZV9ucyhcdTAwMjZwcml2LVx1MDAzZXR4X2NvYWxlc2NlX3RpbWVyLCBuc190b19rdGltZShucyksXG4gXHRcdFx0ICAgICAgIG5zLCBIUlRJTUVSX01PREVfUkVMKTtcbkBAIC02NDksMTIgKzY1OCwxNSBAQCBzdGF0aWMgaW50IGhpcDA0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRwcml2LVx1MDAzZXJlZ19pbnRlbiB8PSBSQ1ZfSU5UO1xuIFx0XHR3cml0ZWxfcmVsYXhlZChwcml2LVx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cdTAwM2ViYXNlICsgUFBFX0lOVEVOKTtcbiBcdH1cbitcdC8qIEFybSB0aGUgY29hbGVzY2UgdGltZXIgQkVGT1JFIG5hcGlfY29tcGxldGVfZG9uZSgpOiBuYXBpX2Rpc2FibGUoKVxuK1x0ICogaW4gaGlwMDRfbWFjX3N0b3AoKSByZXR1cm5zIG9uY2UgU0NIRUQgaXMgY2xlYXJlZCBoZXJlLCBub3Qgd2hlblxuK1x0ICogdGhlIHBvbGwgZnVuY3Rpb24gcmV0dXJucywgc28gYXJtaW5nIGFmdGVyd2FyZHMgY2FuIHNsaXAgcGFzdCB0aGVcbitcdCAqIHN0b3AgcGF0aCdzIGhydGltZXJfY2FuY2VsKCkuXG4rXHQgKi9cbitcdGlmICh0eF9yZW1haW5pbmcpXG4rXHRcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xuIFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4KTtcbiBkb25lOlxuLVx0Lyogc3RhcnQgYSBuZXcgdGltZXIgaWYgbmVjZXNzYXJ5ICovXG4tXHRpZiAocnggXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgdHhfcmVtYWluaW5nKVxuLVx0XHRoaXAwNF9zdGFydF90eF90aW1lcihwcml2KTtcbi1cbiBcdHJldHVybiByeDtcbiB9XG4gXG5AQCAtNzIwLDcgKzczMiw3IEBAIHN0YXRpYyB2b2lkIGhpcDA0X2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuK3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFx0aW50IGk7XG5AQCAtNzQzLDYgKzc1NSwxMyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0XHRoaXAwNF9zZXRfcmVjdl9kZXNjKHByaXYsIHBoeXMpO1xuIFx0fVxuIFxuK1x0LyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZVxuK1x0ICogcmUtZW5hYmxpbmcgdHJhZmZpYy4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzIHdpdGggdGhlIGxvYWQtYWNxdWlyZVxuK1x0ICogaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKTsgc3RhdGVfbG9jayBzZXJpYWxpemVzIHRoaXMgYWdhaW5zdFxuK1x0ICogbWFjX3N0b3AoKSdzIHN0b3JlLXJlbGVhc2UuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnByaXYtXHUwMDNlY2xvc2luZywgZmFsc2UpO1xuK1xuIFx0aWYgKHByaXYtXHUwMDNlcGh5KVxuIFx0XHRwaHlfc3RhcnQocHJpdi1cdTAwM2VwaHkpO1xuIFxuQEAgLTc1NCwxMyArNzczLDQyIEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbitzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuK3tcbitcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuK1x0cmV0ID0gX19oaXAwNF9tYWNfb3BlbihuZGV2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBfX2hpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbiBcbitcdC8qIFN0b3AgbmV3IHRpbWVyIGFybXMgYmVmb3JlIGRyYWluaW5nOiBzZXQgdGhlIGNsb3NpbmcgZmxhZyAoY2hlY2tlZFxuK1x0ICogYXQgdGhlIHNpbmdsZSBhcm1pbmcgc2l0ZSksIHdhaXQgZm9yIHRoZSBOQVBJIHBvbGwgYW5kIGFueSBpbi1mbGlnaHRcbitcdCAqIFRYIHRvIGZpbmlzaCwgdGhlbiBjYW5jZWwgdGhlIHRpbWVyLlxuK1x0ICpcbitcdCAqIG5ldGlmX3R4X2Rpc2FibGUoKSAobm90IG5ldGlmX3N0b3BfcXVldWUoKSkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGlzXG4rXHQgKiBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBmcm9tIGhpcDA0X3R4X3RpbWVvdXRfdGFzaygpLCBub3RcbitcdCAqIG9ubHkgdmlhIC5uZG9fc3RvcCB3aGVyZSB0aGUgY29yZSBoYXMgYWxyZWFkeSBkZWFjdGl2YXRlZCBUWDtcbitcdCAqIG5ldGlmX3R4X2Rpc2FibGUoKSB3YWl0cyBmb3IgYW4gaW4tZmxpZ2h0IGhpcDA0X21hY19zdGFydF94bWl0KCksXG4rXHQgKiB3aGljaCBhcm1zIHRoZSB0aW1lciwgdG8gZmluaXNoLlxuK1x0ICpcbitcdCAqIEJlY2F1c2UgaGlwMDRfcnhfcG9sbCgpIGFybXMgdGhlIHRpbWVyIGJlZm9yZSBuYXBpX2NvbXBsZXRlX2RvbmUoKSxcbitcdCAqIG5hcGlfZGlzYWJsZSgpIHJldHVybmluZyBtZWFucyB0aGF0IGFybSBoYXMgaGFwcGVuZWQsIHNvIHRoZVxuK1x0ICogaHJ0aW1lcl9jYW5jZWwoKSBiZWxvdyBjYW5ub3QgbWlzcyBpdC4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzXG4rXHQgKiB3aXRoIHRoZSBsb2FkIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnByaXYtXHUwMDNlY2xvc2luZywgdHJ1ZSk7XG4rXG4gXHRuYXBpX2Rpc2FibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbi1cdG5ldGlmX3N0b3BfcXVldWUobmRldik7XG4rXHRuZXRpZl90eF9kaXNhYmxlKG5kZXYpO1xuK1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4gXHRoaXAwNF9tYWNfZGlzYWJsZShuZGV2KTtcbiBcdGhpcDA0X3R4X3JlY2xhaW0obmRldiwgdHJ1ZSk7XG4gXHRoaXAwNF9yZXNldF9wcGUocHJpdik7XG5AQCAtNzc5LDYgKzgyNywxNiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdF9faGlwMDRfbWFjX3N0b3AobmRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc5MSw4ICs4NDksMjMgQEAgc3RhdGljIHZvaWQgaGlwMDRfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2O1xuIFxuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaGlwMDRfcHJpdiwgdHhfdGltZW91dF90YXNrKTtcbi1cdGhpcDA0X21hY19zdG9wKHByaXYtXHUwMDNlbmRldik7XG4tXHRoaXAwNF9tYWNfb3Blbihwcml2LVx1MDAzZW5kZXYpO1xuK1xuK1x0LyogU2VyaWFsaXplIHRoZSByZXN0YXJ0IHdpdGggLm5kb19vcGVuLy5uZG9fc3RvcCwgd2hpY2ggdGFrZSB0aGVcbitcdCAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGVcbitcdCAqIG5ldGlmX3J1bm5pbmcoKSBjaGVjayBiYWlsczsgaWYgdGhhdCBjaGVjayByYWNlcyB0aGUgY29yZSdzXG4rXHQgKiBydW5uaW5nLXN0YXRlIGNsZWFyLCAubmRvX3N0b3Agc3RpbGwgcnVucyB1bmRlciBzdGF0ZV9sb2NrXG4rXHQgKiBhZnRlcndhcmRzIGFuZCBzdG9wcyB0aGUgZGV2aWNlLCBzbyB0aGlzIHdvcmtlciBjYW5ub3QgbGVhdmUgdGhlXG4rXHQgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uXG4rXHQgKi9cbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdGlmICghbmV0aWZfcnVubmluZyhwcml2LVx1MDAzZW5kZXYpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdF9faGlwMDRfbWFjX3N0b3AocHJpdi1cdTAwM2VuZGV2KTtcbitcdGlmIChfX2hpcDA0X21hY19vcGVuKHByaXYtXHUwMDNlbmRldikpXG4rXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VuZGV2LCBcInJlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXG5cIik7XG4rb3V0OlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5AQCAtOTgzLDYgKzEwNTYsNyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0fVxuIFxuIFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNldHhfdGltZW91dF90YXNrLCBoaXAwNF90eF90aW1lb3V0X3Rhc2spO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2aGlwMDRfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZoaXAwNF9ldGh0b29sX29wcztcbkBAIC0xMDI2LDEzICsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcbitcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuK1xuK1x0LyogVGhlIElSUSBpcyBkZXZtLW1hbmFnZWQgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSBmcmVlZCBvbmx5IGFmdGVyXG4rXHQgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBGcmVlIGl0IG5vdywgYWZ0ZXIgdW5yZWdpc3Rlcl9uZXRkZXYoKSBoYXNcbitcdCAqIHJ1biAubmRvX3N0b3AgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCBtYXNrIGl0cyBpbnRlcnJ1cHQgc291cmNlLCBidXRcbitcdCAqIGJlZm9yZSB0aGUgbWFudWFsIGZyZWVfbmV0ZGV2KCkgYmVsb3csIHNvIHRoYXQgaGlwMDRfbWFjX2ludGVycnVwdCgpXG4rXHQgKiAoZGV2X2lkID09IG5kZXYpIGNhbm5vdCBmaXJlIGFnYWluc3QgZnJlZWQgbWVtb3J5LiAgZnJlZV9pcnEoKSBhbHNvXG4rXHQgKiBkcmFpbnMgYW55IGluLWZsaWdodCBoYW5kbGVyLlxuK1x0ICovXG4rXHRkZXZtX2ZyZWVfaXJxKGQsIG5kZXYtXHUwMDNlaXJxLCBuZGV2KTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xuK1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4rXG4gXHRpZiAocHJpdi1cdTAwM2VwaHkpXG4gXHRcdHBoeV9kaXNjb25uZWN0KHByaXYtXHUwMDNlcGh5KTtcbiBcbiBcdGhpcDA0X2ZyZWVfcmluZyhuZGV2LCBkKTtcbi1cdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0b2Zfbm9kZV9wdXQocHJpdi1cdTAwM2VwaHlfbm9kZSk7XG4tXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnByaXYtXHUwMDNldHhfdGltZW91dF90YXNrKTtcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjkzMDc5ODU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU4NzY1MDE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jYC4gSXQncyBmaXhpbmcgc29tZSByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgY29hbGVzY2UgdGltZXIsIE1BQyBvcGVuL3N0b3AsIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiBUaGF0J3MgZ29vZCwgZnVuY3Rpb25hbCBmaXhlcyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzdGF0ZV9sb2NrYCBtdXRleCwgYSBgY2xvc2luZ2AgZmxhZywgYW5kIHVzZXMgbWVtb3J5IGJhcnJpZXJzIHdpdGggYHNtcF9sb2FkX2FjcXVpcmVgIGFuZCBgc21wX3N0b3JlX3JlbGVhc2VgLiBTdGFuZGFyZCBzdHVmZiBmb3IgY29uY3VycmVuY3kgZml4ZXMsIGJ1dCB3b3J0aCBhIGNsb3NlciBsb29rLiBUaGV5J3ZlIGFsc28gY2hhbmdlZCB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgaGlwMDRfcmVtb3ZlYCB0byBkZWFsIHdpdGggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgb24gYG5kZXZgIGluIHRoZSBJUlEgaGFuZGxlci4gRGVmaW5pdGVseSBzb3VuZHMgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBleHBsb2l0YWJsZSwgaWYgdHJpZ2dlcmVkIGNvcnJlY3RseS5cblxuVGhlIG1haW4gcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gQ29uc2lkZXJpbmcgaXQncyBhIG5ldHdvcmsgZHJpdmVyIGFuZCBpdCAqaXMqIGNoYW5naW5nIGZ1bmN0aW9uYWxpdHksIHRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBCdXQsIGl0J3MgYSB2ZXJ5IHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlIOKAkyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0LiBUaGUgYmlnIGh1cmRsZSBpcyByZWFjaGFiaWxpdHkuIENhbiB3ZSBhY3R1YWxseSBoaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyB0aGVyZSBhbnkgZW11bGF0aW9uIGF2YWlsYWJsZT8gT3IgYXJlIHdlIGNvbXBsZXRlbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgU29DcyBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiwgYnV0IG5vdCBpbXBvc3NpYmxlLlxuXG5XYWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmNhbiogaGFuZGxlIHBsYXRmb3JtIGRyaXZlcnMsIHJpZ2h0PyBJZiBpdCBjYW4gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSwgbGlrZSB0aHJvdWdoIGBzeXpfZGV2cHRzYCBvciBpZiB0aGUgZHJpdmVyIGdldHMgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQgaW4gYSBRRU1VIG1hY2hpbmUsIGxpa2UgdGhlIHZpcnQgbWFjaGluZSBvciBzb21lIEFSTSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBvciBpZiBpdCdzIGdlbmVyYWxseSBjb21waWxlZCBhbmQgcHJvYmVhYmxlIG9uIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIExvb2tzIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gU28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWFyY2ggZm9yIGVpdGhlciBgaGlwMDRfbWFjX3Byb2JlYCBvciBgaGlwMDRfZXRoYCBpbiB0aGUgc291cmNlLCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRldmljZSBpbnN0YW50aWF0aW9uIGxvb2tzIGxpa2UuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBraWNrIHRoaXMgZHJpdmVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NDcuNTE4NDUxMzgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIyOTEwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRfbWFjX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYz05NDk9c3RhdGljIHZvaWQgaGlwMDRfZnJlZV9yaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgZGV2aWNlICpkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6OTY2OnN0YXRpYyBpbnQgaGlwMDRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEzMT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaXAwNF9tYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMyOlxcdC5wcm9iZVxcdD0gaGlwMDRfbWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMzLVxcdC5yZW1vdmUgPSBoaXAwNF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjUyLjE3MDc0ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNjg3MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIFRpbWUqKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQgd2hlbiBpdCBjb21lcyB0byBjb250cm9sbGluZyBpdHMgYnVpbGQgYW5kIGJlaGF2aW9yLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgaXQuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgaGVscCB0ZXh0LCBhbmQgb2YgY291cnNlLCB0aGUgYWN0dWFsIHN5bWJvbHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB2YXJpb3VzIGZlYXR1cmVzLiBUaGlzIGlzIHdoZXJlIEkgZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEtub3dpbmcgdGhlIEtjb25maWcgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyB3aXRoIG90aGVyIGRyaXZlcnMgb3IgaGFyZHdhcmUgaXMgYWJzb2x1dGVseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIGJlIG1ha2luZyBub3RlIG9mIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBjb25mbGljdHMgcmlnaHQgYXdheS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NTUuMTA3NjIxMTQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDY3MDgzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhJUDA0X0VUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0yOD1jb25maWcgSElTSV9GRU1BQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6NDA6Y29uZmlnIEhJUDA0X0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTQxLVxcdHRyaXN0YXRlIFxcXCJISVNJTElDT04gUDA0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAyOjAwLjkxNDMzNzA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzIyMzY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgYWx3YXlzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHdlYiBvZiBpbnRlcmNvbm5lY3Rpb25zIGF0IHBsYXkgaGVyZS4gRm9yZ2V0IHRoZSBzdXJmYWNlIGxldmVsIGZvciBhIG1vbWVudDsgSSBuZWVkIHRvIGRpZyBkZWVwLiBJIHdhbnQgdG8gaWRlbnRpZnkgKmV2ZXJ5KiBkZXBlbmRlbmN5LCBib3RoIGV4cGxpY2l0IGFuZCBpbXBsaWNpdC4gVGhhdCBtZWFucyBjb25zaWRlcmluZyBub3QganVzdCB0aGUgZGlyZWN0IGxpbmtzLCB0aGUgb2J2aW91cyByZWxhdGlvbnNoaXBzLCBidXQgYWxzbyB0aGUgY2FzY2FkaW5nIGVmZmVjdHMsIHRoZSBwb3RlbnRpYWwgc2lkZS1jaGFubmVsIGluZmx1ZW5jZXMsIGFuZCBhbnkgYXNzdW1wdGlvbnMgdGhhdCBtYXkgYmUgYmFrZWQgaW4uIEFyZSB0aGVzZSBkZXBlbmRlbmNpZXMgd2VsbC1kb2N1bWVudGVkPyBBcmUgdGhleSB2ZXJzaW9uLWxvY2tlZCBhcHByb3ByaWF0ZWx5PyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgd2hhdCBhcmUgdGhlIG1pdGlnYXRpb25zIGluIHBsYWNlLCBvciAqbm90KiBpbiBwbGFjZT8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGRyYXdpbmcgYSBwcmV0dHkgZGVwZW5kZW5jeSBncmFwaDsgaXQncyBhYm91dCBhbnRpY2lwYXRpbmcgdGhlIGJyZWFraW5nIHBvaW50cywgdGhlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGFyZWFzIHdoZXJlIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIGEgY2F0YXN0cm9waGljIGNhc2NhZGUuIEknbSBsb29raW5nIGZvciB0aGUgd2Vha2VzdCBsaW5rcywgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgb3BlcmF0aW5nIHdpdGhvdXQgc3VmZmljaWVudCBvdmVyc2lnaHQgb3Igcm9idXN0IGVycm9yIGhhbmRsaW5nLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRvd25zdHJlYW0gaW1wYWN0IG9mIGVhY2ggcG90ZW50aWFsIGZhaWx1cmUuIEknbSB0cnlpbmcgdG8gcGljdHVyZSB0aGUgcmlwcGxlIGVmZmVjdCBhbmQgdGhlIG1pdGlnYXRpb24gc3RyYXRlZ2llcyB0aGF0IHdpbGwgYmUgcmVxdWlyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXNlIGRlcGVuZGVuY2llcyBleGlzdCwgd2hhdCB0aGV5IGNvbnRyaWJ1dGUsIGFuZCBpZiB0aGV5J3JlIGFjdHVhbGx5ICpuZWNlc3NhcnkqLiBPZnRlbiwgb3B0aW1pemF0aW9uIGJlZ2lucyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjowNC41NTc1NjQ1MzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzU6XFx0XFx0ICBUaGUgRkVNQUMgcmVjZWl2ZXMgYW5kIHRyYW5zbWl0cyBkYXRhIG92ZXIgRXRoZXJuZXRcXG4gIDM2OlxcdFxcdCAgcG9ydHMgYXQgMTAvMTAwIE1icHMgaW4gZnVsbC1kdXBsZXggb3IgaGFsZi1kdXBsZXggbW9kZS5cXG4gIDM3OlxcdFxcdCAgVGhlIEZFTUFDIGV4Y2hhbmdlcyBkYXRhIHdpdGggdGhlIENQVSwgYW5kIHN1cHBvcnRzXFxuICAzODpcXHRcXHQgIHRoZSBlbmVyZ3kgZWZmaWNpZW50IEV0aGVybmV0IChFRUUpLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgSElQMDRfRVRIXFxuICA0MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSElTSUxJQ09OIFAwNCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXHQjIEZvciBNRkRfU1lTQ09OXFxuICA0MzpcXHRcXHRzZWxlY3QgTUFSVkVMTF9QSFlcXG4gIDQ0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA0NTpcXHRcXHRzZWxlY3QgSE5TX01ESU9cXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIGhpc2lsaWNvbiBwMDQgU29DIGFuZFxcbiAgNDg6XFx0XFx0ICB3YW50IHRvIHVzZSB0aGUgaW50ZXJuYWwgZXRoZXJuZXQgdGhlbiB5b3Ugc2hvdWxkIGFuc3dlciBZIHRvIHRoaXMuXFxuICA0OTpcXHRcXG4gIDUwOlxcdGNvbmZpZyBISTEzWDFfR01BQ1xcbiAgNTE6XFx0XFx0Ym9vbCBcXFwiSGlzaWxpY29uIEhJMTNYMSBOZXR3b3JrIERldmljZSBTdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0ZGVwZW5kcyBvbiBISVAwNF9FVEhcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIGhpc2lsaWNvbiBoaTEzeDFfZ2FtY1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjowNC41NTc4Mjk4NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE4ODczOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIuIEZpcnN0LCBpdCBoaW5nZXMgb24gYEhBU19JT01FTWAsIHdoaWNoIHRlbGxzIG1lIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGV2ZW4gcmVhY2ggaXQuIENhbiBzeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiBwbGF0Zm9ybSBkcml2ZXJzPyBJIGtub3cgaXQgY2FuIHVzZSBwc2V1ZG8tc3lzY2FsbHMgdG8gcmVnaXN0ZXIgcGxhdGZvcm0gZGV2aWNlcywgb3IgaXQgY2FuIHBva2UgYXJvdW5kIGluIGAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzYCBpZiB0aGVyZSdzIGEgdXNhYmxlIGludGVyZmFjZSwgb3IgaWYgdGhlIGRldmljZSBpcyBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlLlxuXG5XYWl0LCBidXQgaXQncyBub3QgbGlrZSBzeXprYWxsZXIganVzdCBtYWdpY2FsbHkgaW5zdGFudGlhdGVzIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyBpdCBoYXMgYSBkZWRpY2F0ZWQgZGVzY3JpcHRpb24gZm9yIGl0LCBvciBpdOKAmXMgYmFrZWQgaW50byB0aGUgc3RhbmRhcmQgUUVNVSBtYWNoaW5lLCByaWdodD8gSXQgZG9lc24ndCB1c2Ugc29tZXRoaW5nIGxpa2UgYHN5el9kZXZwdHNgIG9yIHJlbGF0ZWQgc3lzY2FsbHMuIFN5emthbGxlciBsZXZlcmFnZXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgYW5kIG90aGVyIHNpbWlsYXIgYXBwcm9hY2hlcywgYnV0IG5vdCBhIGdlbmVyaWMgbWV0aG9kIHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSBlbnRyeSBvciBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbC5cblxuU3RpbGwsIGl0J3Mgd29ydGggZnV6emluZyAqaWYqIGl0J3MgcmVhY2hhYmxlLiBTbywgaXMgaXQgcmVhY2hhYmxlPyBJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluIGFuZCB0aGUgcGxhdGZvcm0gZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIHdlIGhhdmUgYSB0YXJnZXQuIEJ1dCBob3cgdGhlIGhlY2sgKmlzKiB0aGUgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdGVyZWQ/XG5cbk5vcm1hbGx5LCBmb3IgZHJpdmVyIGZpeGVzIHRoYXQgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIEknZCBqdXN0IGZsYWcgYFdvcnRoRnV6emluZzogdHJ1ZWAgYW5kIHByb3ZpZGUgdGhlIHJlbGV2YW50IGNvbmZpZ3MuXG5cbkJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlwiXG5cblRoZSBrZXkgcXVlc3Rpb24gaXM6IElzIGBoaXAwNF9ldGhgIHJlYWNoYWJsZSBpbiBRRU1VPyBEb2VzIFFFTVUgZW11bGF0ZSBIaXNpbGljb24gUDA0IEV0aGVybmV0PyBNeSBndXQgc2F5cyBubywgdW5sZXNzIGl0J3MgcGFydCBvZiBhIHZlcnkgc3BlY2lmaWMgbWFjaGluZSB0eXBlLiBJIGJldHRlciBjaGVjayB0byBzZWUgaWYgUUVNVSBldmVuIGhhcyBgaGlwMDRfZXRoYCBzdXBwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDI6MTEuMjc2NzA2MTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTIwMjIyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL01ha2VmaWxlPTY9ZHRiLSQoQ09ORklHX0FSQ0hfSElQMDQpICs9IFxcXFxcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU6NzpcXHRoaXAwNC1kMDEuZHRiXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL01ha2VmaWxlLTgtZHRiLSQoQ09ORklHX0FSQ0hfSElTSSkgKz0gXFxcXFxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtOC1cXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czo5OiNpbmNsdWRlIFxcXCJoaXAwNC5kdHNpXFxcIlxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTEwLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzPTExPS8ge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTUtXFx0bW9kZWwgPSBcXFwiSGlzaWxpY29uIEQwMSBEZXZlbG9wbWVudCBCb2FyZFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHM6MTY6XFx0Y29tcGF0aWJsZSA9IFxcXCJoaXNpbGljb24saGlwMDQtZDAxXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0cy0xNy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIwPVxcdGJvb3R3cmFwcGVyIHtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMTpcXHRcXHRjb21wYXRpYmxlID0gXFxcImhpc2lsaWNvbixoaXAwNC1ib290d3JhcHBlclxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjItXFx0XFx0Ym9vdC1tZXRob2QgPSBcXHUwMDNjMHgxMGMwMDAwMCAweDEwMDAwXFx1MDAzZSwgXFx1MDAzYzB4ZTAwMDAxMDAgMHgxMDAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIwND1cXHRcXHRnaWM6IGludGVycnVwdC1jb250cm9sbGVyQGMwMTAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k6MjA1OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiaGlzaWxpY29uLGhpcDA0LWludGNcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpLTIwNi1cXHRcXHRcXHQjaW50ZXJydXB0LWNlbGxzID0gXFx1MDAzYzNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjIwPVxcdFxcdGZhYnJpYzogZmFicmljIHtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMjE6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJoaXNpbGljb24saGlwMDQtZmFicmljXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaS0yMjItXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4MzAyYTAwMCAweDEwMDBcXHUwMDNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoxMi4wMjg3ODc4MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2NTk4Nzc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGV2ZW4gKmdldCogdG8gdGhpcz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIElmIHRoZXJlIGlzbid0IGEgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIHRvIGluc3RhbnRpYXRlIGl0LCBhbmQgaXQncyBub3QgYSBQQ0kgb3IgVVNCIGRldmljZSB0aGF0IHdlIGNhbiBlbXVsYXRlLCB0aGVuIHdlJ3JlIHByZXR0eSBtdWNoIHN0dWNrIHVubGVzcyB3ZSdyZSBib290aW5nIHRoZSBleGFjdCBtYWNoaW5lIHR5cGUgdGhlIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IuIERvZXMgc3l6a2FsbGVyIGV2ZW4gc3VwcG9ydCB0aGUgXCJoaXAwNFwiIG1hY2hpbmUgdHlwZSwgc3BlY2lmaWNhbGx5PyBObywgaXQgdXN1YWxseSBnb2VzIGZvciB0aGUgY29tbW9uIHZpcnR1YWxpemVkIG9wdGlvbnMuIEl0IGxvb2tzIGxpa2UgYGhpcDA0YCBpcyBhIEhpc2lsaWNvbiBTb0MuXG5cbkkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBEb2VzIGBzeXpfZGV2cHRzYCBoZWxwIGhlcmU/IE5vLiBJcyB0aGVyZSBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGA/IE5vcGUsIG5vdGhpbmcgbGlrZSB0aGF0IGV4aXN0cy4gQ2FuIHdlIGxldmVyYWdlIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIGJlY2F1c2UgdGhhdCBkb2Vzbid0IGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLiBNYXliZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBjb3VsZCBiZSBhbiBvcHRpb24sIGJ1dC4uLndhaXQsIEknbSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgZG9lc24ndCBzdXBwb3J0IHRob3NlIGZvciBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMuXG5cblRoZSBwcm9tcHQgaW4gdGhlIHRhc2sgaXMgY2xlYXI6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggY29udGFpbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIi4gT2theSwgc28gaXMgYGhpcDA0X2V0aGAgdW5yZWFjaGFibGU/IEFic29sdXRlbHkuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWMgdG8gYSBIaXNpbGljb24gU29DLiBVbmxlc3MgUUVNVSBlbXVsYXRlcyB0aGlzIHNwZWNpZmljIFNvQywgYW5kIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgY29uZmlndXJlZCB0byB1c2UgdGhhdCBlbXVsYXRpb24sIHdlJ3JlIG5vdCBnb2luZyB0byBoaXQgaXQuXG5cbkxldCdzIGNoZWNrIGlmIFFFTVUgZXZlbiBzdXBwb3J0cyB0aGlzIGBoaXAwNGAgbWFjaGluZS4gTm9wZSwgbm90aGluZy4gU28sIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBvciBzbyBJIHRob3VnaHQuIEJ1dCB3aGF0IGlmIHRoZXJlJ3Mgc29tZSAqb3RoZXIqIHdheSB0byBpbnN0YW50aWF0ZSBpdD8gSSByZW1pbmQgbXlzZWxmIHRoYXQgcGxhdGZvcm0gZHJpdmVycyBhcmUgYm91bmQgdG8gcGxhdGZvcm0gZGV2aWNlcy4gVGhvc2UgZGV2aWNlcyBhcmUgY3JlYXRlZCBieSBwbGF0Zm9ybSBjb2RlLCBsaWtlIERldmljZSBUcmVlcyBvciBib2FyZCBmaWxlcy5cblxuU28sIGluIHRoZSB1c3VhbCBzeXprYWxsZXIgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBCdXQuLi4gd2FpdCBhIG1pbnV0ZSEgRGlkbid0IHN5emthbGxlciBhY3R1YWxseSAqZmluZCogYSBidWcgaW4gdGhpcyBkcml2ZXI/IFRoZSBjb21taXQgbWVzc2FnZSBzYXlzIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiLiBJZiBzeXotY2x1c3RlciBmb3VuZCBhIGJ1ZywgaG93IGRpZCBpdCByZWFjaCBpdD8gTm93LCB0aGF0J3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBNYXliZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSB3YXkgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB0aGF0IEkgaGF2ZW4ndCBjb21lIGFjcm9zcy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgZm9yIGFueSBgc3l6X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGxhdGZvcm0gZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkxMywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyMC41OTQ3NzgzMjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzk3Nzk5MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyMS4yMTg3NjY1MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA3OTg0OTA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBmaXJzdCB0aG91Z2h0IGlzOiBkaWQgc3l6a2FsbGVyIGRpc2NvdmVyIGl0IHRocm91Z2ggc3RhdGljIGFuYWx5c2lzLCBvciBpcyBpdCBhIHBhdGNoIGJlaW5nIHRlc3RlZCBieSBzeXotY2x1c3Rlcj8gVGhlIFwiYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBtZXNzYWdlIHN1Z2dlc3RzIHRoZSBsYXR0ZXIgLSBhIHBhdGNoIHRlc3RpbmcgcmVxdWVzdC4gU3l6Ym90IHRlc3RzIHBhdGNoZXMsIGV2ZW4gaWYgaXQgY2FuJ3QgYWN0aXZlbHkgZnV6eiB0aGVtLCBidXQgaXQgd29uJ3QgZmluZCBidWdzIGluICp1bnJlYWNoYWJsZSogY29kZS5cblxuSWYgaXQgKmlzKiB1bnJlYWNoYWJsZSwgdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIG5lZWQgdG8gY29uZmlybS4gTXkgZ3V0IHNheXMgaXQncyB1bnJlYWNoYWJsZSwgYnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuRmlyc3QsIGxldCBtZSBjaGVjayBmb3IgYW55IGRldmljZSBpbnN0YW50aWF0aW9uIG1ldGhvZHMuIENhbiBJIGNyZWF0ZSB0aGlzIGRldmljZSB0aHJvdWdoIGEgYC9zeXNgIGludGVyZmFjZT8gTm8sIGdlbmVyYWxseSBub3Qgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzLiBPa2F5LCB3aGF0IGFib3V0IGEgbW9kdWxlPyBJcyB0aGVyZSBhIGBoaXAwNF9ldGhgIG1vZHVsZT8gWWVzLCBgQ09ORklHX0hJUDA0X0VUSD1tYC4gSWYgaXQncyBsb2FkZWQsIGBoaXAwNF9tYWNfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBhY3R1YWwgZGV2aWNlICpleGlzdHMqLiBDYW4gSSwgYXMgYSB1c2VyLCBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBpdHNlbGY/IE5vLCBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBpcyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBObyBsZWdhY3kgcHJvYmluZz8gTm8gc3lzZnMgbWFnaWM/IEkgY2FuIGJpbmQvdW5iaW5kLCBidXQgSSBuZWVkIHRoZSBkZXZpY2UgdG8gZXhpc3QgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5Fc3NlbnRpYWxseSwgaXQgbG9va3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIExldCBtZSByZS1yZWFkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLlxuXG5UaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIChgaGlwMDRfZXRoYCkgZm9yIHNwZWNpZmljIEhpc2lsaWNvbiBQMDQgU29DIGhhcmR3YXJlLiBRRU1VICpkZWZpbml0ZWx5KiBkb2Vzbid0IGVtdWxhdGUgdGhhdC4gSXQncyBub3QgdGhlIGB2aXJ0YCBtYWNoaW5lLCBhbmQgaXQncyBub3QgZXZlbiBhIFwicmFzcGlcIiwgXCJpbXhcIiwgZXRjIG1hY2hpbmUuIFRoZXJlJ3Mgbm8gaGlzaWxpY29uIGVtdWxhdGlvbi4gSG9sZCBvbi4uLiBpcyB0aGVyZSBhIGNoYW5jZSBzeXprYWxsZXIgaXMgdXNpbmcgc29tZSBwc2V1ZG8gZGV2aWNlIGZvciB0aGlzPyBObywgSSBkb24ndCB0aGluayBzby4gSXQncyB1bnJlYWNoYWJsZS5cblxuT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJpbGl0eS4gV2hhdCBpZiBpdCdzIGEgUENJIGRldmljZT8gTGV0IG1lIGNoZWNrIGBoaXAwNF9tYWNfZHJpdmVyYC5cblxuWXVwLCBjb25maXJtZWQuIFRoaXMgaXMgYSBkZWFkIGVuZC4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyOS4yOTg2MTk0NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTYwNTE1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRfbWFjX2RyaXZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEyOT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBoaXAwNF9tYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGhpcDA0X21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzItXFx0LnByb2JlXFx0PSBoaXAwNF9tYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTEzOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTM5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaGlwMDRfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExNDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAyOjMzLjM1NDY3NzA1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQyNDA4MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyLCBgaGlwMDRfZXRoLmNgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIHdoaWNoIGlzIGltcG9ydGFudC4gSXQgbWVhbnMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gYmluZCB0byBhIHNwZWNpZmljIGBwbGF0Zm9ybV9kZXZpY2VgLiBBbmQgcGxhdGZvcm0gZGV2aWNlcywgYXMgeW91IGtub3csIGFyZSB0eXBpY2FsbHkgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSBkdXJpbmcga2VybmVsIGJvb3QsIGVpdGhlciB0aHJvdWdoIHRoZSBEZXZpY2UgVHJlZSAoRFQpLCBBQ1BJLCBvciBzb21ldGltZXMgbWFudWFsbHkgdGhyb3VnaCBvdGhlciBrZXJuZWwgY29kZS5cblxuVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIHN0YW5kYXJkIGJvb3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGB2aXJ0YCBtYWNoaW5lIChvciBhbnl0aGluZyBzaW1pbGFyKSwgcmVsaWVzIG9uIGEgc3BlY2lmaWMgRGV2aWNlIFRyZWUgb3IgQUNQSS4gVGhlIGBoaXNpbGljb24saGlwMDQtbWFjYCBkZXZpY2UsIHdoaWNoIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8sIGlzICpub3QqIHByZXNlbnQgaW4gdGhhdCBkZWZhdWx0IERULiBUaGVyZWZvcmUsIHRoZSBrZXJuZWwgd29uJ3QgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIGBwbGF0Zm9ybV9kZXZpY2VgIGR1cmluZyBib290LlxuXG5Ob3csIGJlY2F1c2UgdGhhdCBgcGxhdGZvcm1fZGV2aWNlYCBpcyBtaXNzaW5nLCB0aGUgY3J1Y2lhbCBgcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBgcHJvYmVgIGZ1bmN0aW9uIGV4ZWN1dGluZywgdGhlIG5ldHdvcmsgZGV2aWNlIChgbmV0X2RldmljZWApIGlzbid0IHJlZ2lzdGVyZWQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhlIHBhdGNoZWQgY29kZSwgbGlrZSBgaGlwMDRfbWFjX29wZW5gLCBgaGlwMDRfbWFjX3N0b3BgLCBvciBgaGlwMDRfcnhfcG9sbGAsIHdpbGwgZXZlciBiZSByZWFjaGVkLiBJdCdzIGEgZnVuZGFtZW50YWwgYmluZC10aW1lIGlzc3VlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgcGF0aHMgd2l0aGluIHRoZSBISVAwNCBkcml2ZXIgdGhhdCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgaGluZ2VzIG9uIGhhcmR3YXJlIHRoYXQgc2ltcGx5IGlzbid0IGVtdWxhdGVkIG9yIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJdCdzIGFsc28gbm90IHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLCBzbyB0aGVyZSdzIG5vIHdheSB0byBmb3JjZSBpdCBpbnRvIGV4aXN0ZW5jZS5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoIG9ubHkgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY2AsIHNvIHRoZXJlIGFyZSBubyBvdGhlciBhZmZlY3RlZCBmaWxlcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSdsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM2NiwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDI6MzkuOTk3MDg4MDk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIgKGhpcDA0X2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIGhhcmR3YXJlIChIaXNpbGljb24gUDA0IFNvQykuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsbkg6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 23:10:54 +0000 UTC FinishedAt: 2026-07-12 00:02:41 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyIChoaXAwNF9ldGguYyksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSAoSGlzaWxpY29uIFAwNCBTb0MpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBmcm9tIHVzZXItc3BhY2UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjN2MyNzUzMGY5ZGE2YzE4NThlN2U1M2E2Zjc2MTkxYzIyNzBmMjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDowMTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcbmluZGV4IDE4Mzc2YmNjNzE4YTIwLi40YmQxOTIwOTQwYjczNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiBcbiAjZGVmaW5lIFNDX1BQRV9SRVNFVF9EUkVRXHRcdDB4MDI2Q1xuIFxuQEAgLTIzMiw2ICYjNDM7MjMzLDggQEAgc3RydWN0IGhpcDA0X3ByaXYge1xuIFx0aW50IHR4X2NvYWxlc2NlX2ZyYW1lcztcbiBcdGludCB0eF9jb2FsZXNjZV91c2VjcztcbiBcdHN0cnVjdCBocnRpbWVyIHR4X2NvYWxlc2NlX3RpbWVyO1xuJiM0MztcdGJvb2wgY2xvc2luZztcbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbG9jazsgLyogU2VyaWFsaXplcyBNQUMgb3Blbi9zdG9wIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiAqL1xuIFxuIFx0dW5zaWduZWQgY2hhciAqcnhfYnVmW1JYX0RFU0NfTlVNXTtcbiBcdGRtYV9hZGRyX3QgcnhfcGh5c1tSWF9ERVNDX05VTV07XG5AQCAtNDk3LDYgJiM0Mzs1MDAsMTIgQEAgc3RhdGljIHZvaWQgaGlwMDRfc3RhcnRfdHhfdGltZXIoc3RydWN0IGhpcDA0X3ByaXYgKnByaXYpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBucyA9IHByaXYtXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjtcbiBcbiYjNDM7XHQvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLlxuJiM0MztcdCAqIEJvdGggYXJtaW5nIHNpdGVzIChUeCBhbmQgTkFQSSBSeCBwb2xsKSBnbyB0aHJvdWdoIGhlcmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2cHJpdi1cdTAwM2VjbG9zaW5nKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHQvKiBhbGxvdyB0aW1lciB0byBmaXJlIGFmdGVyIGhhbGYgdGhlIHRpbWUgYXQgdGhlIGVhcmxpZXN0ICovXG4gXHRocnRpbWVyX3N0YXJ0X3JhbmdlX25zKFx1MDAyNnByaXYtXHUwMDNldHhfY29hbGVzY2VfdGltZXIsIG5zX3RvX2t0aW1lKG5zKSxcbiBcdFx0XHQgICAgICAgbnMsIEhSVElNRVJfTU9ERV9SRUwpO1xuQEAgLTY0OSwxMiAmIzQzOzY1OCwxNSBAQCBzdGF0aWMgaW50IGhpcDA0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRwcml2LVx1MDAzZXJlZ19pbnRlbiB8PSBSQ1ZfSU5UO1xuIFx0XHR3cml0ZWxfcmVsYXhlZChwcml2LVx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cdTAwM2ViYXNlICYjNDM7IFBQRV9JTlRFTik7XG4gXHR9XG4mIzQzO1x0LyogQXJtIHRoZSBjb2FsZXNjZSB0aW1lciBCRUZPUkUgbmFwaV9jb21wbGV0ZV9kb25lKCk6IG5hcGlfZGlzYWJsZSgpXG4mIzQzO1x0ICogaW4gaGlwMDRfbWFjX3N0b3AoKSByZXR1cm5zIG9uY2UgU0NIRUQgaXMgY2xlYXJlZCBoZXJlLCBub3Qgd2hlblxuJiM0MztcdCAqIHRoZSBwb2xsIGZ1bmN0aW9uIHJldHVybnMsIHNvIGFybWluZyBhZnRlcndhcmRzIGNhbiBzbGlwIHBhc3QgdGhlXG4mIzQzO1x0ICogc3RvcCBwYXRoJiMzOTtzIGhydGltZXJfY2FuY2VsKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHR4X3JlbWFpbmluZylcbiYjNDM7XHRcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xuIFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4KTtcbiBkb25lOlxuLVx0Lyogc3RhcnQgYSBuZXcgdGltZXIgaWYgbmVjZXNzYXJ5ICovXG4tXHRpZiAocnggXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgdHhfcmVtYWluaW5nKVxuLVx0XHRoaXAwNF9zdGFydF90eF90aW1lcihwcml2KTtcbi1cbiBcdHJldHVybiByeDtcbiB9XG4gXG5AQCAtNzIwLDcgJiM0Mzs3MzIsNyBAQCBzdGF0aWMgdm9pZCBoaXAwNF9hZGp1c3RfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7c3RhdGljIGludCBfX2hpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbkBAIC03NDMsNiAmIzQzOzc1NSwxMyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0XHRoaXAwNF9zZXRfcmVjdl9kZXNjKHByaXYsIHBoeXMpO1xuIFx0fVxuIFxuJiM0MztcdC8qIFJYIG1hcHBpbmdzIGFyZSBlc3RhYmxpc2hlZDsgY2xlYXIgdGhlIGNsb3NpbmcgZmxhZyBiZWZvcmVcbiYjNDM7XHQgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlXG4mIzQzO1x0ICogaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKTsgc3RhdGVfbG9jayBzZXJpYWxpemVzIHRoaXMgYWdhaW5zdFxuJiM0MztcdCAqIG1hY19zdG9wKCkmIzM5O3Mgc3RvcmUtcmVsZWFzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZwcml2LVx1MDAzZWNsb3NpbmcsIGZhbHNlKTtcbiYjNDM7XG4gXHRpZiAocHJpdi1cdTAwM2VwaHkpXG4gXHRcdHBoeV9zdGFydChwcml2LVx1MDAzZXBoeSk7XG4gXG5AQCAtNzU0LDEzICYjNDM7NzczLDQyIEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7c3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdHJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBfX2hpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBTdG9wIG5ldyB0aW1lciBhcm1zIGJlZm9yZSBkcmFpbmluZzogc2V0IHRoZSBjbG9zaW5nIGZsYWcgKGNoZWNrZWRcbiYjNDM7XHQgKiBhdCB0aGUgc2luZ2xlIGFybWluZyBzaXRlKSwgd2FpdCBmb3IgdGhlIE5BUEkgcG9sbCBhbmQgYW55IGluLWZsaWdodFxuJiM0MztcdCAqIFRYIHRvIGZpbmlzaCwgdGhlbiBjYW5jZWwgdGhlIHRpbWVyLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogbmV0aWZfdHhfZGlzYWJsZSgpIChub3QgbmV0aWZfc3RvcF9xdWV1ZSgpKSBpcyByZXF1aXJlZCBiZWNhdXNlIHRoaXNcbiYjNDM7XHQgKiBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBmcm9tIGhpcDA0X3R4X3RpbWVvdXRfdGFzaygpLCBub3RcbiYjNDM7XHQgKiBvbmx5IHZpYSAubmRvX3N0b3Agd2hlcmUgdGhlIGNvcmUgaGFzIGFscmVhZHkgZGVhY3RpdmF0ZWQgVFg7XG4mIzQzO1x0ICogbmV0aWZfdHhfZGlzYWJsZSgpIHdhaXRzIGZvciBhbiBpbi1mbGlnaHQgaGlwMDRfbWFjX3N0YXJ0X3htaXQoKSxcbiYjNDM7XHQgKiB3aGljaCBhcm1zIHRoZSB0aW1lciwgdG8gZmluaXNoLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogQmVjYXVzZSBoaXAwNF9yeF9wb2xsKCkgYXJtcyB0aGUgdGltZXIgYmVmb3JlIG5hcGlfY29tcGxldGVfZG9uZSgpLFxuJiM0MztcdCAqIG5hcGlfZGlzYWJsZSgpIHJldHVybmluZyBtZWFucyB0aGF0IGFybSBoYXMgaGFwcGVuZWQsIHNvIHRoZVxuJiM0MztcdCAqIGhydGltZXJfY2FuY2VsKCkgYmVsb3cgY2Fubm90IG1pc3MgaXQuICBUaGUgc3RvcmUtcmVsZWFzZSBwYWlyc1xuJiM0MztcdCAqIHdpdGggdGhlIGxvYWQgaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZwcml2LVx1MDAzZWNsb3NpbmcsIHRydWUpO1xuJiM0MztcbiBcdG5hcGlfZGlzYWJsZShcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuLVx0bmV0aWZfc3RvcF9xdWV1ZShuZGV2KTtcbiYjNDM7XHRuZXRpZl90eF9kaXNhYmxlKG5kZXYpO1xuJiM0MztcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNldHhfY29hbGVzY2VfdGltZXIpO1xuIFx0aGlwMDRfbWFjX2Rpc2FibGUobmRldik7XG4gXHRoaXAwNF90eF9yZWNsYWltKG5kZXYsIHRydWUpO1xuIFx0aGlwMDRfcmVzZXRfcHBlKHByaXYpO1xuQEAgLTc3OSw2ICYjNDM7ODI3LDE2IEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4mIzQzO1x0X19oaXAwNF9tYWNfc3RvcChuZGV2KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc5MSw4ICYjNDM7ODQ5LDIzIEBAIHN0YXRpYyB2b2lkIGhpcDA0X3R4X3RpbWVvdXRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjtcbiBcbiBcdHByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7XG4tXHRoaXAwNF9tYWNfc3RvcChwcml2LVx1MDAzZW5kZXYpO1xuLVx0aGlwMDRfbWFjX29wZW4ocHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogU2VyaWFsaXplIHRoZSByZXN0YXJ0IHdpdGggLm5kb19vcGVuLy5uZG9fc3RvcCwgd2hpY2ggdGFrZSB0aGVcbiYjNDM7XHQgKiBzYW1lIGxvY2suICBJZiBhIGNsb3NlIGhhcyBjb21wbGV0ZWQgb3IgaXMgaW4gcHJvZ3Jlc3MgdGhlXG4mIzQzO1x0ICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJiMzOTtzXG4mIzQzO1x0ICogcnVubmluZy1zdGF0ZSBjbGVhciwgLm5kb19zdG9wIHN0aWxsIHJ1bnMgdW5kZXIgc3RhdGVfbG9ja1xuJiM0MztcdCAqIGFmdGVyd2FyZHMgYW5kIHN0b3BzIHRoZSBkZXZpY2UsIHNvIHRoaXMgd29ya2VyIGNhbm5vdCBsZWF2ZSB0aGVcbiYjNDM7XHQgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuJiM0MztcdGlmICghbmV0aWZfcnVubmluZyhwcml2LVx1MDAzZW5kZXYpKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdF9faGlwMDRfbWFjX3N0b3AocHJpdi1cdTAwM2VuZGV2KTtcbiYjNDM7XHRpZiAoX19oaXAwNF9tYWNfb3Blbihwcml2LVx1MDAzZW5kZXYpKVxuJiM0MztcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZW5kZXYsIFwmIzM0O3Jlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztvdXQ6XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5AQCAtOTgzLDYgJiM0MzsxMDU2LDcgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdH1cbiBcbiBcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzaywgaGlwMDRfdHhfdGltZW91dF90YXNrKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gXG4gXHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZoaXAwNF9uZXRkZXZfb3BzO1xuIFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmhpcDA0X2V0aHRvb2xfb3BzO1xuQEAgLTEwMjYsMTMgJiM0MzsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIElSUSBpcyBkZXZtLW1hbmFnZWQgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSBmcmVlZCBvbmx5IGFmdGVyXG4mIzQzO1x0ICogdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgRnJlZSBpdCBub3csIGFmdGVyIHVucmVnaXN0ZXJfbmV0ZGV2KCkgaGFzXG4mIzQzO1x0ICogcnVuIC5uZG9fc3RvcCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIG1hc2sgaXRzIGludGVycnVwdCBzb3VyY2UsIGJ1dFxuJiM0MztcdCAqIGJlZm9yZSB0aGUgbWFudWFsIGZyZWVfbmV0ZGV2KCkgYmVsb3csIHNvIHRoYXQgaGlwMDRfbWFjX2ludGVycnVwdCgpXG4mIzQzO1x0ICogKGRldl9pZCA9PSBuZGV2KSBjYW5ub3QgZmlyZSBhZ2FpbnN0IGZyZWVkIG1lbW9yeS4gIGZyZWVfaXJxKCkgYWxzb1xuJiM0MztcdCAqIGRyYWlucyBhbnkgaW4tZmxpZ2h0IGhhbmRsZXIuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZGV2bV9mcmVlX2lycShkLCBuZGV2LVx1MDAzZWlycSwgbmRldik7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XG4mIzQzO1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4mIzQzO1xuIFx0aWYgKHByaXYtXHUwMDNlcGh5KVxuIFx0XHRwaHlfZGlzY29ubmVjdChwcml2LVx1MDAzZXBoeSk7XG4gXG4gXHRoaXAwNF9mcmVlX3JpbmcobmRldiwgZCk7XG4tXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBcdG9mX25vZGVfcHV0KHByaXYtXHUwMDNlcGh5X25vZGUpO1xuLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwcml2LVx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XG4gXHRmcmVlX25ldGRldihuZGV2KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIgKGhpcDA0X2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIGhhcmR3YXJlIChIaXNpbGljb24gUDA0IFNvQykuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYzdjMjc1MzBmOWRhNmMxODU4ZTdlNTNhNmY3NjE5MWMyMjcwZjIwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MDE6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMKaW5kZXggMTgzNzZiY2M3MThhMjAuLjRiZDE5MjA5NDBiNzM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jCkBAIC0xNSw2ICYjNDM7MTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21mZC9zeXNjb24uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yZWdtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKIAogI2RlZmluZSBTQ19QUEVfUkVTRVRfRFJFUQkJMHgwMjZDCiAKQEAgLTIzMiw2ICYjNDM7MjMzLDggQEAgc3RydWN0IGhpcDA0X3ByaXYgewogCWludCB0eF9jb2FsZXNjZV9mcmFtZXM7CiAJaW50IHR4X2NvYWxlc2NlX3VzZWNzOwogCXN0cnVjdCBocnRpbWVyIHR4X2NvYWxlc2NlX3RpbWVyOwomIzQzOwlib29sIGNsb3Npbmc7CiYjNDM7CXN0cnVjdCBtdXRleCBzdGF0ZV9sb2NrOyAvKiBTZXJpYWxpemVzIE1BQyBvcGVuL3N0b3AgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuICovCiAKIAl1bnNpZ25lZCBjaGFyICpyeF9idWZbUlhfREVTQ19OVU1dOwogCWRtYV9hZGRyX3QgcnhfcGh5c1tSWF9ERVNDX05VTV07CkBAIC00OTcsNiAmIzQzOzUwMCwxMiBAQCBzdGF0aWMgdm9pZCBoaXAwNF9zdGFydF90eF90aW1lcihzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdikKIHsKIAl1bnNpZ25lZCBsb25nIG5zID0gcHJpdi0mZ3Q7dHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjsKIAomIzQzOwkvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLgomIzQzOwkgKiBCb3RoIGFybWluZyBzaXRlcyAoVHggYW5kIE5BUEkgUnggcG9sbCkgZ28gdGhyb3VnaCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtwcml2LSZndDtjbG9zaW5nKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKiBhbGxvdyB0aW1lciB0byBmaXJlIGFmdGVyIGhhbGYgdGhlIHRpbWUgYXQgdGhlIGVhcmxpZXN0ICovCiAJaHJ0aW1lcl9zdGFydF9yYW5nZV9ucygmYW1wO3ByaXYtJmd0O3R4X2NvYWxlc2NlX3RpbWVyLCBuc190b19rdGltZShucyksCiAJCQkgICAgICAgbnMsIEhSVElNRVJfTU9ERV9SRUwpOwpAQCAtNjQ5LDEyICYjNDM7NjU4LDE1IEBAIHN0YXRpYyBpbnQgaGlwMDRfcnhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJCXByaXYtJmd0O3JlZ19pbnRlbiB8PSBSQ1ZfSU5UOwogCQl3cml0ZWxfcmVsYXhlZChwcml2LSZndDtyZWdfaW50ZW4sIHByaXYtJmd0O2Jhc2UgJiM0MzsgUFBFX0lOVEVOKTsKIAl9CiYjNDM7CS8qIEFybSB0aGUgY29hbGVzY2UgdGltZXIgQkVGT1JFIG5hcGlfY29tcGxldGVfZG9uZSgpOiBuYXBpX2Rpc2FibGUoKQomIzQzOwkgKiBpbiBoaXAwNF9tYWNfc3RvcCgpIHJldHVybnMgb25jZSBTQ0hFRCBpcyBjbGVhcmVkIGhlcmUsIG5vdCB3aGVuCiYjNDM7CSAqIHRoZSBwb2xsIGZ1bmN0aW9uIHJldHVybnMsIHNvIGFybWluZyBhZnRlcndhcmRzIGNhbiBzbGlwIHBhc3QgdGhlCiYjNDM7CSAqIHN0b3AgcGF0aCYjMzk7cyBocnRpbWVyX2NhbmNlbCgpLgomIzQzOwkgKi8KJiM0MzsJaWYgKHR4X3JlbWFpbmluZykKJiM0MzsJCWhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpOwogCW5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeCk7CiBkb25lOgotCS8qIHN0YXJ0IGEgbmV3IHRpbWVyIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChyeCAmbHQ7IGJ1ZGdldCAmYW1wOyZhbXA7IHR4X3JlbWFpbmluZykKLQkJaGlwMDRfc3RhcnRfdHhfdGltZXIocHJpdik7Ci0KIAlyZXR1cm4gcng7CiB9CiAKQEAgLTcyMCw3ICYjNDM7NzMyLDcgQEAgc3RhdGljIHZvaWQgaGlwMDRfYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJfQogfQogCi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQomIzQzO3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIHsKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwogCWludCBpOwpAQCAtNzQzLDYgJiM0Mzs3NTUsMTMgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAkJaGlwMDRfc2V0X3JlY3ZfZGVzYyhwcml2LCBwaHlzKTsKIAl9CiAKJiM0MzsJLyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZQomIzQzOwkgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlCiYjNDM7CSAqIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCk7IHN0YXRlX2xvY2sgc2VyaWFsaXplcyB0aGlzIGFnYWluc3QKJiM0MzsJICogbWFjX3N0b3AoKSYjMzk7cyBzdG9yZS1yZWxlYXNlLgomIzQzOwkgKi8KJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtwcml2LSZndDtjbG9zaW5nLCBmYWxzZSk7CiYjNDM7CiAJaWYgKHByaXYtJmd0O3BoeSkKIAkJcGh5X3N0YXJ0KHByaXYtJmd0O3BoeSk7CiAKQEAgLTc1NCwxMyAmIzQzOzc3Myw0MiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGhpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQomIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CXJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IF9faGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CiAJc3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAlpbnQgaTsKIAomIzQzOwkvKiBTdG9wIG5ldyB0aW1lciBhcm1zIGJlZm9yZSBkcmFpbmluZzogc2V0IHRoZSBjbG9zaW5nIGZsYWcgKGNoZWNrZWQKJiM0MzsJICogYXQgdGhlIHNpbmdsZSBhcm1pbmcgc2l0ZSksIHdhaXQgZm9yIHRoZSBOQVBJIHBvbGwgYW5kIGFueSBpbi1mbGlnaHQKJiM0MzsJICogVFggdG8gZmluaXNoLCB0aGVuIGNhbmNlbCB0aGUgdGltZXIuCiYjNDM7CSAqCiYjNDM7CSAqIG5ldGlmX3R4X2Rpc2FibGUoKSAobm90IG5ldGlmX3N0b3BfcXVldWUoKSkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGlzCiYjNDM7CSAqIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGRpcmVjdGx5IGZyb20gaGlwMDRfdHhfdGltZW91dF90YXNrKCksIG5vdAomIzQzOwkgKiBvbmx5IHZpYSAubmRvX3N0b3Agd2hlcmUgdGhlIGNvcmUgaGFzIGFscmVhZHkgZGVhY3RpdmF0ZWQgVFg7CiYjNDM7CSAqIG5ldGlmX3R4X2Rpc2FibGUoKSB3YWl0cyBmb3IgYW4gaW4tZmxpZ2h0IGhpcDA0X21hY19zdGFydF94bWl0KCksCiYjNDM7CSAqIHdoaWNoIGFybXMgdGhlIHRpbWVyLCB0byBmaW5pc2guCiYjNDM7CSAqCiYjNDM7CSAqIEJlY2F1c2UgaGlwMDRfcnhfcG9sbCgpIGFybXMgdGhlIHRpbWVyIGJlZm9yZSBuYXBpX2NvbXBsZXRlX2RvbmUoKSwKJiM0MzsJICogbmFwaV9kaXNhYmxlKCkgcmV0dXJuaW5nIG1lYW5zIHRoYXQgYXJtIGhhcyBoYXBwZW5lZCwgc28gdGhlCiYjNDM7CSAqIGhydGltZXJfY2FuY2VsKCkgYmVsb3cgY2Fubm90IG1pc3MgaXQuICBUaGUgc3RvcmUtcmVsZWFzZSBwYWlycwomIzQzOwkgKiB3aXRoIHRoZSBsb2FkIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCkuCiYjNDM7CSAqLwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO3ByaXYtJmd0O2Nsb3NpbmcsIHRydWUpOwomIzQzOwogCW5hcGlfZGlzYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwotCW5ldGlmX3N0b3BfcXVldWUobmRldik7CiYjNDM7CW5ldGlmX3R4X2Rpc2FibGUobmRldik7CiYjNDM7CWhydGltZXJfY2FuY2VsKCZhbXA7cHJpdi0mZ3Q7dHhfY29hbGVzY2VfdGltZXIpOwogCWhpcDA0X21hY19kaXNhYmxlKG5kZXYpOwogCWhpcDA0X3R4X3JlY2xhaW0obmRldiwgdHJ1ZSk7CiAJaGlwMDRfcmVzZXRfcHBlKHByaXYpOwpAQCAtNzc5LDYgJiM0Mzs4MjcsMTYgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CV9faGlwMDRfbWFjX3N0b3AobmRldik7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3ByaXYtJmd0O3N0YXRlX2xvY2spOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSkKIHsKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwpAQCAtNzkxLDggJiM0Mzs4NDksMjMgQEAgc3RhdGljIHZvaWQgaGlwMDRfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjsKIAogCXByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7Ci0JaGlwMDRfbWFjX3N0b3AocHJpdi0mZ3Q7bmRldik7Ci0JaGlwMDRfbWFjX29wZW4ocHJpdi0mZ3Q7bmRldik7CiYjNDM7CiYjNDM7CS8qIFNlcmlhbGl6ZSB0aGUgcmVzdGFydCB3aXRoIC5uZG9fb3Blbi8ubmRvX3N0b3AsIHdoaWNoIHRha2UgdGhlCiYjNDM7CSAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGUKJiM0MzsJICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJiMzOTtzCiYjNDM7CSAqIHJ1bm5pbmctc3RhdGUgY2xlYXIsIC5uZG9fc3RvcCBzdGlsbCBydW5zIHVuZGVyIHN0YXRlX2xvY2sKJiM0MzsJICogYWZ0ZXJ3YXJkcyBhbmQgc3RvcHMgdGhlIGRldmljZSwgc28gdGhpcyB3b3JrZXIgY2Fubm90IGxlYXZlIHRoZQomIzQzOwkgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uCiYjNDM7CSAqLwomIzQzOwltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiYjNDM7CWlmICghbmV0aWZfcnVubmluZyhwcml2LSZndDtuZGV2KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlfX2hpcDA0X21hY19zdG9wKHByaXYtJmd0O25kZXYpOwomIzQzOwlpZiAoX19oaXAwNF9tYWNfb3Blbihwcml2LSZndDtuZGV2KSkKJiM0MzsJCW5ldGRldl9lcnIocHJpdi0mZ3Q7bmRldiwgJiMzNDtyZXN0YXJ0IGFmdGVyIHR4IHRpbWVvdXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7b3V0OgomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtzdGF0ZV9sb2NrKTsKIH0KIAogc3RhdGljIGludCBoaXAwNF9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKQEAgLTk4Myw2ICYjNDM7MTA1Niw3IEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJfQogCiAJSU5JVF9XT1JLKCZhbXA7cHJpdi0mZ3Q7dHhfdGltZW91dF90YXNrLCBoaXAwNF90eF90aW1lb3V0X3Rhc2spOwomIzQzOwltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7c3RhdGVfbG9jayk7CiAKIAluZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDtoaXAwNF9uZXRkZXZfb3BzOwogCW5kZXYtJmd0O2V0aHRvb2xfb3BzID0gJmFtcDtoaXAwNF9ldGh0b29sX29wczsKQEAgLTEwMjYsMTMgJiM0MzsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiAJc3RydWN0IGRldmljZSAqZCA9ICZhbXA7cGRldi0mZ3Q7ZGV2OwogCiYjNDM7CXVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpOwomIzQzOwomIzQzOwkvKiBUaGUgSVJRIGlzIGRldm0tbWFuYWdlZCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIGZyZWVkIG9ubHkgYWZ0ZXIKJiM0MzsJICogdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgRnJlZSBpdCBub3csIGFmdGVyIHVucmVnaXN0ZXJfbmV0ZGV2KCkgaGFzCiYjNDM7CSAqIHJ1biAubmRvX3N0b3AgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCBtYXNrIGl0cyBpbnRlcnJ1cHQgc291cmNlLCBidXQKJiM0MzsJICogYmVmb3JlIHRoZSBtYW51YWwgZnJlZV9uZXRkZXYoKSBiZWxvdywgc28gdGhhdCBoaXAwNF9tYWNfaW50ZXJydXB0KCkKJiM0MzsJICogKGRldl9pZCA9PSBuZGV2KSBjYW5ub3QgZmlyZSBhZ2FpbnN0IGZyZWVkIG1lbW9yeS4gIGZyZWVfaXJxKCkgYWxzbwomIzQzOwkgKiBkcmFpbnMgYW55IGluLWZsaWdodCBoYW5kbGVyLgomIzQzOwkgKi8KJiM0MzsJZGV2bV9mcmVlX2lycShkLCBuZGV2LSZndDtpcnEsIG5kZXYpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cHJpdi0mZ3Q7dHhfdGltZW91dF90YXNrKTsKJiM0MzsJaHJ0aW1lcl9jYW5jZWwoJmFtcDtwcml2LSZndDt0eF9jb2FsZXNjZV90aW1lcik7CiYjNDM7CiAJaWYgKHByaXYtJmd0O3BoeSkKIAkJcGh5X2Rpc2Nvbm5lY3QocHJpdi0mZ3Q7cGh5KTsKIAogCWhpcDA0X2ZyZWVfcmluZyhuZGV2LCBkKTsKLQl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIAlvZl9ub2RlX3B1dChwcml2LSZndDtwaHlfbm9kZSk7Ci0JY2FuY2VsX3dvcmtfc3luYygmYW1wO3ByaXYtJmd0O3R4X3RpbWVvdXRfdGFzayk7CiAJZnJlZV9uZXRkZXYobmRldik7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY2AuIEl0JiMzOTtzIGZpeGluZyBzb21lIHJhY2UgY29uZGl0aW9ucyByZWxhdGVkIHRvIHRoZSB0cmFuc21pdCBjb2FsZXNjZSB0aW1lciwgTUFDIG9wZW4vc3RvcCwgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuIFRoYXQmIzM5O3MgZ29vZCwgZnVuY3Rpb25hbCBmaXhlcyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzdGF0ZV9sb2NrYCBtdXRleCwgYSBgY2xvc2luZ2AgZmxhZywgYW5kIHVzZXMgbWVtb3J5IGJhcnJpZXJzIHdpdGggYHNtcF9sb2FkX2FjcXVpcmVgIGFuZCBgc21wX3N0b3JlX3JlbGVhc2VgLiBTdGFuZGFyZCBzdHVmZiBmb3IgY29uY3VycmVuY3kgZml4ZXMsIGJ1dCB3b3J0aCBhIGNsb3NlciBsb29rLiBUaGV5JiMzOTt2ZSBhbHNvIGNoYW5nZWQgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaW4gYGhpcDA0X3JlbW92ZWAgdG8gZGVhbCB3aXRoIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIG9uIGBuZGV2YCBpbiB0aGUgSVJRIGhhbmRsZXIuIERlZmluaXRlbHkgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZXhwbG9pdGFibGUsIGlmIHRyaWdnZXJlZCBjb3JyZWN0bHkuCgpUaGUgbWFpbiBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBDb25zaWRlcmluZyBpdCYjMzk7cyBhIG5ldHdvcmsgZHJpdmVyIGFuZCBpdCAqaXMqIGNoYW5naW5nIGZ1bmN0aW9uYWxpdHksIHRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBCdXQsIGl0JiMzOTtzIGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSDigJMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldC4gVGhlIGJpZyBodXJkbGUgaXMgcmVhY2hhYmlsaXR5LiBDYW4gd2UgYWN0dWFsbHkgaGl0IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhlcmUgYW55IGVtdWxhdGlvbiBhdmFpbGFibGU/IE9yIGFyZSB3ZSBjb21wbGV0ZWx5IHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmU/IFBsYXRmb3JtIGRyaXZlcnMgZm9yIHNwZWNpZmljIFNvQ3MgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enosIGJ1dCBub3QgaW1wb3NzaWJsZS4KCldhaXQgYSBtaW51dGUsIHN5emthbGxlciAqY2FuKiBoYW5kbGUgcGxhdGZvcm0gZHJpdmVycywgcmlnaHQ/IElmIGl0IGNhbiBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlLCBsaWtlIHRocm91Z2ggYHN5el9kZXZwdHNgIG9yIGlmIHRoZSBkcml2ZXIgZ2V0cyBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdCBpbiBhIFFFTVUgbWFjaGluZSwgbGlrZSB0aGUgdmlydCBtYWNoaW5lIG9yIHNvbWUgQVJNIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBvciBpZiBpdCYjMzk7cyBnZW5lcmFsbHkgY29tcGlsZWQgYW5kIHByb2JlYWJsZSBvbiBjZXJ0YWluIGNvbmZpZ3VyYXRpb25zLiBMb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBTbyB0aGUgbmV4dCBzdGVwIGlzIHRvIHNlYXJjaCBmb3IgZWl0aGVyIGBoaXAwNF9tYWNfcHJvYmVgIG9yIGBoaXAwNF9ldGhgIGluIHRoZSBzb3VyY2UsIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgZGV2aWNlIGluc3RhbnRpYXRpb24gbG9va3MgbGlrZS4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBraWNrIHRoaXMgZHJpdmVyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hpcDA0X21hY19wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9OTQ5PXN0YXRpYyB2b2lkIGhpcDA0X2ZyZWVfcmluZyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGRldmljZSAqZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jOjk2NjpzdGF0aWMgaW50IGhpcDA0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jPTExMzE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaGlwMDRfbWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMyOlx0LnByb2JlXHQ9IGhpcDA0X21hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMzLVx0LnJlbW92ZSA9IGhpcDA0X3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzYyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKktjb25maWcgSW5zcGVjdGlvbiBUaW1lKioKClJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBkcml2ZXIuIFRoZSBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCB3aGVuIGl0IGNvbWVzIHRvIGNvbnRyb2xsaW5nIGl0cyBidWlsZCBhbmQgYmVoYXZpb3IuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgaXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgc2V0dGluZ3MsIGhlbHAgdGV4dCwgYW5kIG9mIGNvdXJzZSwgdGhlIGFjdHVhbCBzeW1ib2xzIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgdG8gdmFyaW91cyBmZWF0dXJlcy4gVGhpcyBpcyB3aGVyZSBJIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb21waWxlZC4gS25vd2luZyB0aGUgS2NvbmZpZyBkZXRhaWxzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIHdpdGggb3RoZXIgZHJpdmVycyBvciBoYXJkd2FyZSBpcyBhYnNvbHV0ZWx5IGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIGltcGFjdCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIGJlIG1ha2luZyBub3RlIG9mIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBjb25mbGljdHMgcmlnaHQgYXdheS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhJUDA0X0VUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0yOD1jb25maWcgSElTSV9GRU1BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6NDA6Y29uZmlnIEhJUDA0X0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctNDEtXHR0cmlzdGF0ZSBcJiMzNDtISVNJTElDT04gUDA0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGFsd2F5cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSB3ZWIgb2YgaW50ZXJjb25uZWN0aW9ucyBhdCBwbGF5IGhlcmUuIEZvcmdldCB0aGUgc3VyZmFjZSBsZXZlbCBmb3IgYSBtb21lbnQ7IEkgbmVlZCB0byBkaWcgZGVlcC4gSSB3YW50IHRvIGlkZW50aWZ5ICpldmVyeSogZGVwZW5kZW5jeSwgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQuIFRoYXQgbWVhbnMgY29uc2lkZXJpbmcgbm90IGp1c3QgdGhlIGRpcmVjdCBsaW5rcywgdGhlIG9idmlvdXMgcmVsYXRpb25zaGlwcywgYnV0IGFsc28gdGhlIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgcG90ZW50aWFsIHNpZGUtY2hhbm5lbCBpbmZsdWVuY2VzLCBhbmQgYW55IGFzc3VtcHRpb25zIHRoYXQgbWF5IGJlIGJha2VkIGluLiBBcmUgdGhlc2UgZGVwZW5kZW5jaWVzIHdlbGwtZG9jdW1lbnRlZD8gQXJlIHRoZXkgdmVyc2lvbi1sb2NrZWQgYXBwcm9wcmlhdGVseT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSwgYW5kIHdoYXQgYXJlIHRoZSBtaXRpZ2F0aW9ucyBpbiBwbGFjZSwgb3IgKm5vdCogaW4gcGxhY2U/IFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZHJhd2luZyBhIHByZXR0eSBkZXBlbmRlbmN5IGdyYXBoOyBpdCYjMzk7cyBhYm91dCBhbnRpY2lwYXRpbmcgdGhlIGJyZWFraW5nIHBvaW50cywgdGhlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGFyZWFzIHdoZXJlIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIGEgY2F0YXN0cm9waGljIGNhc2NhZGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHdlYWtlc3QgbGlua3MsIHRoZSBjb21wb25lbnRzIHRoYXQgYXJlIG9wZXJhdGluZyB3aXRob3V0IHN1ZmZpY2llbnQgb3ZlcnNpZ2h0IG9yIHJvYnVzdCBlcnJvciBoYW5kbGluZy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZG93bnN0cmVhbSBpbXBhY3Qgb2YgZWFjaCBwb3RlbnRpYWwgZmFpbHVyZS4gSSYjMzk7bSB0cnlpbmcgdG8gcGljdHVyZSB0aGUgcmlwcGxlIGVmZmVjdCBhbmQgdGhlIG1pdGlnYXRpb24gc3RyYXRlZ2llcyB0aGF0IHdpbGwgYmUgcmVxdWlyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXNlIGRlcGVuZGVuY2llcyBleGlzdCwgd2hhdCB0aGV5IGNvbnRyaWJ1dGUsIGFuZCBpZiB0aGV5JiMzOTtyZSBhY3R1YWxseSAqbmVjZXNzYXJ5Ki4gT2Z0ZW4sIG9wdGltaXphdGlvbiBiZWdpbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdFx0ICBUaGUgRkVNQUMgcmVjZWl2ZXMgYW5kIHRyYW5zbWl0cyBkYXRhIG92ZXIgRXRoZXJuZXRcbiAgMzY6XHRcdCAgcG9ydHMgYXQgMTAvMTAwIE1icHMgaW4gZnVsbC1kdXBsZXggb3IgaGFsZi1kdXBsZXggbW9kZS5cbiAgMzc6XHRcdCAgVGhlIEZFTUFDIGV4Y2hhbmdlcyBkYXRhIHdpdGggdGhlIENQVSwgYW5kIHN1cHBvcnRzXG4gIDM4Olx0XHQgIHRoZSBlbmVyZ3kgZWZmaWNpZW50IEV0aGVybmV0IChFRUUpLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBISVAwNF9FVEhcbiAgNDE6XHRcdHRyaXN0YXRlIFwmIzM0O0hJU0lMSUNPTiBQMDQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cdCMgRm9yIE1GRF9TWVNDT05cbiAgNDM6XHRcdHNlbGVjdCBNQVJWRUxMX1BIWVxuICA0NDpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgNDU6XHRcdHNlbGVjdCBITlNfTURJT1xuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggaGlzaWxpY29uIHAwNCBTb0MgYW5kXG4gIDQ4Olx0XHQgIHdhbnQgdG8gdXNlIHRoZSBpbnRlcm5hbCBldGhlcm5ldCB0aGVuIHlvdSBzaG91bGQgYW5zd2VyIFkgdG8gdGhpcy5cbiAgNDk6XHRcbiAgNTA6XHRjb25maWcgSEkxM1gxX0dNQUNcbiAgNTE6XHRcdGJvb2wgXCYjMzQ7SGlzaWxpY29uIEhJMTNYMSBOZXR3b3JrIERldmljZSBTdXBwb3J0XCYjMzQ7XG4gIDUyOlx0XHRkZXBlbmRzIG9uIEhJUDA0X0VUSFxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBJZiB5b3Ugd2lzaCB0byBjb21waWxlIGEga2VybmVsIGZvciBhIGhhcmR3YXJlIHdpdGggaGlzaWxpY29uIGhpMTN4MV9nYW1jXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIuIEZpcnN0LCBpdCBoaW5nZXMgb24gYEhBU19JT01FTWAsIHdoaWNoIHRlbGxzIG1lIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBldmVuIHJlYWNoIGl0LiBDYW4gc3l6a2FsbGVyIGVmZmVjdGl2ZWx5IGZ1enogcGxhdGZvcm0gZHJpdmVycz8gSSBrbm93IGl0IGNhbiB1c2UgcHNldWRvLXN5c2NhbGxzIHRvIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZXMsIG9yIGl0IGNhbiBwb2tlIGFyb3VuZCBpbiBgL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlc2AgaWYgdGhlcmUmIzM5O3MgYSB1c2FibGUgaW50ZXJmYWNlLCBvciBpZiB0aGUgZGV2aWNlIGlzIGRlc2NyaWJlZCBpbiB0aGUgZGV2aWNlIHRyZWUuCgpXYWl0LCBidXQgaXQmIzM5O3Mgbm90IGxpa2Ugc3l6a2FsbGVyIGp1c3QgbWFnaWNhbGx5IGluc3RhbnRpYXRlcyBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgZGVkaWNhdGVkIGRlc2NyaXB0aW9uIGZvciBpdCwgb3IgaXTigJlzIGJha2VkIGludG8gdGhlIHN0YW5kYXJkIFFFTVUgbWFjaGluZSwgcmlnaHQ/IEl0IGRvZXNuJiMzOTt0IHVzZSBzb21ldGhpbmcgbGlrZSBgc3l6X2RldnB0c2Agb3IgcmVsYXRlZCBzeXNjYWxscy4gU3l6a2FsbGVyIGxldmVyYWdlcyBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgb3RoZXIgc2ltaWxhciBhcHByb2FjaGVzLCBidXQgbm90IGEgZ2VuZXJpYyBtZXRob2QgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgd2l0aG91dCBhIGRldmljZSB0cmVlIGVudHJ5IG9yIHNwZWNpZmljIHBzZXVkby1zeXNjYWxsLgoKU3RpbGwsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgKmlmKiBpdCYjMzk7cyByZWFjaGFibGUuIFNvLCBpcyBpdCByZWFjaGFibGU/IElmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4gYW5kIHRoZSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgd2UgaGF2ZSBhIHRhcmdldC4gQnV0IGhvdyB0aGUgaGVjayAqaXMqIHRoZSBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0ZXJlZD8KCk5vcm1hbGx5LCBmb3IgZHJpdmVyIGZpeGVzIHRoYXQgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIEkmIzM5O2QganVzdCBmbGFnIGBXb3J0aEZ1enppbmc6IHRydWVgIGFuZCBwcm92aWRlIHRoZSByZWxldmFudCBjb25maWdzLgoKQnV0IGhvbGQgb24sIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHRlbGxpbmcgbWU6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuJiMzNDsKClRoZSBrZXkgcXVlc3Rpb24gaXM6IElzIGBoaXAwNF9ldGhgIHJlYWNoYWJsZSBpbiBRRU1VPyBEb2VzIFFFTVUgZW11bGF0ZSBIaXNpbGljb24gUDA0IEV0aGVybmV0PyBNeSBndXQgc2F5cyBubywgdW5sZXNzIGl0JiMzOTtzIHBhcnQgb2YgYSB2ZXJ5IHNwZWNpZmljIG1hY2hpbmUgdHlwZS4gSSBiZXR0ZXIgY2hlY2sgdG8gc2VlIGlmIFFFTVUgZXZlbiBoYXMgYGhpcDA0X2V0aGAgc3VwcG9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlwMDQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU9Nj1kdGItJChDT05GSUdfQVJDSF9ISVAwNCkgJiM0Mzs9IFxcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU6NzpcdGhpcDA0LWQwMS5kdGJcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9NYWtlZmlsZS04LWR0Yi0kKENPTkZJR19BUkNIX0hJU0kpICYjNDM7PSBcXFxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTgtXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czo5OiNpbmNsdWRlIFwmIzM0O2hpcDA0LmR0c2lcJiMzNDtcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTEwLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHM9MTE9LyB7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTUtXHRtb2RlbCA9IFwmIzM0O0hpc2lsaWNvbiBEMDEgRGV2ZWxvcG1lbnQgQm9hcmRcJiMzNDs7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czoxNjpcdGNvbXBhdGlibGUgPSBcJiMzNDtoaXNpbGljb24saGlwMDQtZDAxXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTctXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjA9XHRib290d3JhcHBlciB7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMTpcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2hpc2lsaWNvbixoaXAwNC1ib290d3JhcHBlclwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpLTIyLVx0XHRib290LW1ldGhvZCA9IFx1MDAzYzB4MTBjMDAwMDAgMHgxMDAwMFx1MDAzZSwgXHUwMDNjMHhlMDAwMDEwMCAweDEwMDBcdTAwM2U7XG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjA0PVx0XHRnaWM6IGludGVycnVwdC1jb250cm9sbGVyQGMwMTAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMDU6XHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2hpc2lsaWNvbixoaXAwNC1pbnRjXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjA2LVx0XHRcdCNpbnRlcnJ1cHQtY2VsbHMgPSBcdTAwM2MzXHUwMDNlO1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIyMD1cdFx0ZmFicmljOiBmYWJyaWMge1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k6MjIxOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtoaXNpbGljb24saGlwMDQtZmFicmljXCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjIyLVx0XHRcdHJlZyA9IFx1MDAzYzB4MzAyYTAwMCAweDEwMDBcdTAwM2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MTMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGV2ZW4gKmdldCogdG8gdGhpcz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIElmIHRoZXJlIGlzbiYjMzk7dCBhIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCB0byBpbnN0YW50aWF0ZSBpdCwgYW5kIGl0JiMzOTtzIG5vdCBhIFBDSSBvciBVU0IgZGV2aWNlIHRoYXQgd2UgY2FuIGVtdWxhdGUsIHRoZW4gd2UmIzM5O3JlIHByZXR0eSBtdWNoIHN0dWNrIHVubGVzcyB3ZSYjMzk7cmUgYm9vdGluZyB0aGUgZXhhY3QgbWFjaGluZSB0eXBlIHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yLiBEb2VzIHN5emthbGxlciBldmVuIHN1cHBvcnQgdGhlICYjMzQ7aGlwMDQmIzM0OyBtYWNoaW5lIHR5cGUsIHNwZWNpZmljYWxseT8gTm8sIGl0IHVzdWFsbHkgZ29lcyBmb3IgdGhlIGNvbW1vbiB2aXJ0dWFsaXplZCBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBoaXAwNGAgaXMgYSBIaXNpbGljb24gU29DLgoKSSBzdGFydCBydW5uaW5nIHRocm91Z2ggdGhlIHBvc3NpYmlsaXRpZXMuIERvZXMgYHN5el9kZXZwdHNgIGhlbHAgaGVyZT8gTm8uIElzIHRoZXJlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYD8gTm9wZSwgbm90aGluZyBsaWtlIHRoYXQgZXhpc3RzLiBDYW4gd2UgbGV2ZXJhZ2UgYHN5el9pbml0X25ldF9zb2NrZXRgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBObywgYmVjYXVzZSB0aGF0IGRvZXNuJiMzOTt0IGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLiBNYXliZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBjb3VsZCBiZSBhbiBvcHRpb24sIGJ1dC4uLndhaXQsIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHN1cHBvcnQgdGhvc2UgZm9yIGZ1enppbmcgcGxhdGZvcm0gZHJpdmVycy4KClRoZSBwcm9tcHQgaW4gdGhlIHRhc2sgaXMgY2xlYXI6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggY29udGFpbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMmIzM0Oy4gT2theSwgc28gaXMgYGhpcDA0X2V0aGAgdW5yZWFjaGFibGU/IEFic29sdXRlbHkuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHNwZWNpZmljIHRvIGEgSGlzaWxpY29uIFNvQy4gVW5sZXNzIFFFTVUgZW11bGF0ZXMgdGhpcyBzcGVjaWZpYyBTb0MsIGFuZCBzeXprYWxsZXIgaXMgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQgdG8gdXNlIHRoYXQgZW11bGF0aW9uLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCBpdC4KCkxldCYjMzk7cyBjaGVjayBpZiBRRU1VIGV2ZW4gc3VwcG9ydHMgdGhpcyBgaGlwMDRgIG1hY2hpbmUuIE5vcGUsIG5vdGhpbmcuIFNvLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSwgb3Igc28gSSB0aG91Z2h0LiBCdXQgd2hhdCBpZiB0aGVyZSYjMzk7cyBzb21lICpvdGhlciogd2F5IHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWluZCBteXNlbGYgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzIGFyZSBib3VuZCB0byBwbGF0Zm9ybSBkZXZpY2VzLiBUaG9zZSBkZXZpY2VzIGFyZSBjcmVhdGVkIGJ5IHBsYXRmb3JtIGNvZGUsIGxpa2UgRGV2aWNlIFRyZWVzIG9yIGJvYXJkIGZpbGVzLgoKU28sIGluIHRoZSB1c3VhbCBzeXprYWxsZXIgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBCdXQuLi4gd2FpdCBhIG1pbnV0ZSEgRGlkbiYjMzk7dCBzeXprYWxsZXIgYWN0dWFsbHkgKmZpbmQqIGEgYnVnIGluIHRoaXMgZHJpdmVyPyBUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyAmIzM0O0F1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OyYjMzQ7LiBJZiBzeXotY2x1c3RlciBmb3VuZCBhIGJ1ZywgaG93IGRpZCBpdCByZWFjaCBpdD8gTm93LCB0aGF0JiMzOTtzIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbi4gTWF5YmUgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgd2F5IHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgdGhhdCBJIGhhdmVuJiMzOTt0IGNvbWUgYWNyb3NzLiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgZm9yIGFueSBgc3l6X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGxhdGZvcm0gZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzeXpfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIEFuYWx5c2lzKioKCk9rYXksIHNvIHN5emthbGxlciBmbGFnZ2VkIHNvbWV0aGluZywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBmaXJzdCB0aG91Z2h0IGlzOiBkaWQgc3l6a2FsbGVyIGRpc2NvdmVyIGl0IHRocm91Z2ggc3RhdGljIGFuYWx5c2lzLCBvciBpcyBpdCBhIHBhdGNoIGJlaW5nIHRlc3RlZCBieSBzeXotY2x1c3Rlcj8gVGhlICYjMzQ7YXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBtZXNzYWdlIHN1Z2dlc3RzIHRoZSBsYXR0ZXIgLSBhIHBhdGNoIHRlc3RpbmcgcmVxdWVzdC4gU3l6Ym90IHRlc3RzIHBhdGNoZXMsIGV2ZW4gaWYgaXQgY2FuJiMzOTt0IGFjdGl2ZWx5IGZ1enogdGhlbSwgYnV0IGl0IHdvbiYjMzk7dCBmaW5kIGJ1Z3MgaW4gKnVucmVhY2hhYmxlKiBjb2RlLgoKSWYgaXQgKmlzKiB1bnJlYWNoYWJsZSwgdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIG5lZWQgdG8gY29uZmlybS4gTXkgZ3V0IHNheXMgaXQmIzM5O3MgdW5yZWFjaGFibGUsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGaXJzdCwgbGV0IG1lIGNoZWNrIGZvciBhbnkgZGV2aWNlIGluc3RhbnRpYXRpb24gbWV0aG9kcy4gQ2FuIEkgY3JlYXRlIHRoaXMgZGV2aWNlIHRocm91Z2ggYSBgL3N5c2AgaW50ZXJmYWNlPyBObywgZ2VuZXJhbGx5IG5vdCB3aXRoIHBsYXRmb3JtIGRldmljZXMuIE9rYXksIHdoYXQgYWJvdXQgYSBtb2R1bGU/IElzIHRoZXJlIGEgYGhpcDA0X2V0aGAgbW9kdWxlPyBZZXMsIGBDT05GSUdfSElQMDRfRVRIPW1gLiBJZiBpdCYjMzk7cyBsb2FkZWQsIGBoaXAwNF9tYWNfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBhY3R1YWwgZGV2aWNlICpleGlzdHMqLiBDYW4gSSwgYXMgYSB1c2VyLCBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBpdHNlbGY/IE5vLCBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBpcyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBObyBsZWdhY3kgcHJvYmluZz8gTm8gc3lzZnMgbWFnaWM/IEkgY2FuIGJpbmQvdW5iaW5kLCBidXQgSSBuZWVkIHRoZSBkZXZpY2UgdG8gZXhpc3QgaW4gdGhlIGZpcnN0IHBsYWNlLgoKRXNzZW50aWFsbHksIGl0IGxvb2tzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBMZXQgbWUgcmUtcmVhZCB0aGUgc3BlY2lmaWMgaW5zdHJ1Y3Rpb246ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4KClRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgKGBoaXAwNF9ldGhgKSBmb3Igc3BlY2lmaWMgSGlzaWxpY29uIFAwNCBTb0MgaGFyZHdhcmUuIFFFTVUgKmRlZmluaXRlbHkqIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdC4gSXQmIzM5O3Mgbm90IHRoZSBgdmlydGAgbWFjaGluZSwgYW5kIGl0JiMzOTtzIG5vdCBldmVuIGEgJiMzNDtyYXNwaSYjMzQ7LCAmIzM0O2lteCYjMzQ7LCBldGMgbWFjaGluZS4gVGhlcmUmIzM5O3Mgbm8gaGlzaWxpY29uIGVtdWxhdGlvbi4gSG9sZCBvbi4uLiBpcyB0aGVyZSBhIGNoYW5jZSBzeXprYWxsZXIgaXMgdXNpbmcgc29tZSBwc2V1ZG8gZGV2aWNlIGZvciB0aGlzPyBObywgSSBkb24mIzM5O3QgdGhpbmsgc28uIEl0JiMzOTtzIHVucmVhY2hhYmxlLgoKT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJpbGl0eS4gV2hhdCBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2U/IExldCBtZSBjaGVjayBgaGlwMDRfbWFjX2RyaXZlcmAuCgpZdXAsIGNvbmZpcm1lZC4gVGhpcyBpcyBhIGRlYWQgZW5kLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlwMDRfbWFjX2RyaXZlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEyOT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBoaXAwNF9tYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6MTEzMTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaXAwNF9tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzItXHQucHJvYmVcdD0gaGlwMDRfbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTM4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6MTEzOTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGhpcDA0X21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzY2CgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDMzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIsIGBoaXAwNF9ldGguY2AuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBgcGxhdGZvcm1fZHJpdmVyYCwgd2hpY2ggaXMgaW1wb3J0YW50LiBJdCBtZWFucyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBiaW5kIHRvIGEgc3BlY2lmaWMgYHBsYXRmb3JtX2RldmljZWAuIEFuZCBwbGF0Zm9ybSBkZXZpY2VzLCBhcyB5b3Uga25vdywgYXJlIHR5cGljYWxseSBicm91Z2h0IGludG8gZXhpc3RlbmNlIGR1cmluZyBrZXJuZWwgYm9vdCwgZWl0aGVyIHRocm91Z2ggdGhlIERldmljZSBUcmVlIChEVCksIEFDUEksIG9yIHNvbWV0aW1lcyBtYW51YWxseSB0aHJvdWdoIG90aGVyIGtlcm5lbCBjb2RlLgoKVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIHN0YW5kYXJkIGJvb3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGB2aXJ0YCBtYWNoaW5lIChvciBhbnl0aGluZyBzaW1pbGFyKSwgcmVsaWVzIG9uIGEgc3BlY2lmaWMgRGV2aWNlIFRyZWUgb3IgQUNQSS4gVGhlIGBoaXNpbGljb24saGlwMDQtbWFjYCBkZXZpY2UsIHdoaWNoIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8sIGlzICpub3QqIHByZXNlbnQgaW4gdGhhdCBkZWZhdWx0IERULiBUaGVyZWZvcmUsIHRoZSBrZXJuZWwgd29uJiMzOTt0IGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBgcGxhdGZvcm1fZGV2aWNlYCBkdXJpbmcgYm9vdC4KCk5vdywgYmVjYXVzZSB0aGF0IGBwbGF0Zm9ybV9kZXZpY2VgIGlzIG1pc3NpbmcsIHRoZSBjcnVjaWFsIGBwcm9iZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIgaXMgbmV2ZXIgY2FsbGVkLiBBbmQgd2l0aG91dCB0aGF0IGBwcm9iZWAgZnVuY3Rpb24gZXhlY3V0aW5nLCB0aGUgbmV0d29yayBkZXZpY2UgKGBuZXRfZGV2aWNlYCkgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhlIHBhdGNoZWQgY29kZSwgbGlrZSBgaGlwMDRfbWFjX29wZW5gLCBgaGlwMDRfbWFjX3N0b3BgLCBvciBgaGlwMDRfcnhfcG9sbGAsIHdpbGwgZXZlciBiZSByZWFjaGVkLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGJpbmQtdGltZSBpc3N1ZS4KClNvLCB0aGUgY29uY2x1c2lvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSBwYXRocyB3aXRoaW4gdGhlIEhJUDA0IGRyaXZlciB0aGF0IGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBoaW5nZXMgb24gaGFyZHdhcmUgdGhhdCBzaW1wbHkgaXNuJiMzOTt0IGVtdWxhdGVkIG9yIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJdCYjMzk7cyBhbHNvIG5vdCBwb3NzaWJsZSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGZvcmNlIGl0IGludG8gZXhpc3RlbmNlLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCBvbmx5IG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNgLCBzbyB0aGVyZSBhcmUgbm8gb3RoZXIgYWZmZWN0ZWQgZmlsZXMuCgpHaXZlbiBhbGwgb2YgdGhpcywgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSYjMzk7bGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmluYWxpemUgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyIChoaXAwNF9ldGguYyksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBoYXJkd2FyZSAoSGlzaWxpY29uIFAwNCBTb0MpLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBmcm9tIHVzZXItc3BhY2UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIGZ1enogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjE3NTE0Nzk2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIxOTk2MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjE3NTE1NTM4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzNTg1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2M3YzI3NTMwZjlkYTZjMTg1OGU3ZTUzYTZmNzYxOTFjMjI3MGYyMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDowMTozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcXG5pbmRleCAxODM3NmJjYzcxOGEyMC4uNGJkMTkyMDk0MGI3MzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbWZkL3N5c2Nvbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTQ19QUEVfUkVTRVRfRFJFUVxcdFxcdDB4MDI2Q1xcbiBcXG5AQCAtMjMyLDYgKzIzMyw4IEBAIHN0cnVjdCBoaXAwNF9wcml2IHtcXG4gXFx0aW50IHR4X2NvYWxlc2NlX2ZyYW1lcztcXG4gXFx0aW50IHR4X2NvYWxlc2NlX3VzZWNzO1xcbiBcXHRzdHJ1Y3QgaHJ0aW1lciB0eF9jb2FsZXNjZV90aW1lcjtcXG4rXFx0Ym9vbCBjbG9zaW5nO1xcbitcXHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbG9jazsgLyogU2VyaWFsaXplcyBNQUMgb3Blbi9zdG9wIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiAqL1xcbiBcXG4gXFx0dW5zaWduZWQgY2hhciAqcnhfYnVmW1JYX0RFU0NfTlVNXTtcXG4gXFx0ZG1hX2FkZHJfdCByeF9waHlzW1JYX0RFU0NfTlVNXTtcXG5AQCAtNDk3LDYgKzUwMCwxMiBAQCBzdGF0aWMgdm9pZCBoaXAwNF9zdGFydF90eF90aW1lcihzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIG5zID0gcHJpdi1cXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgKiBOU0VDX1BFUl9VU0VDIC8gMjtcXG4gXFxuK1xcdC8qIERvIG5vdCAocmUtKWFybSB0aGUgVHggY29hbGVzY2UgdGltZXIgb25jZSB0ZWFyZG93biBoYXMgYmVndW4uXFxuK1xcdCAqIEJvdGggYXJtaW5nIHNpdGVzIChUeCBhbmQgTkFQSSBSeCBwb2xsKSBnbyB0aHJvdWdoIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2cHJpdi1cXHUwMDNlY2xvc2luZykpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdC8qIGFsbG93IHRpbWVyIHRvIGZpcmUgYWZ0ZXIgaGFsZiB0aGUgdGltZSBhdCB0aGUgZWFybGllc3QgKi9cXG4gXFx0aHJ0aW1lcl9zdGFydF9yYW5nZV9ucyhcXHUwMDI2cHJpdi1cXHUwMDNldHhfY29hbGVzY2VfdGltZXIsIG5zX3RvX2t0aW1lKG5zKSxcXG4gXFx0XFx0XFx0ICAgICAgIG5zLCBIUlRJTUVSX01PREVfUkVMKTtcXG5AQCAtNjQ5LDEyICs2NTgsMTUgQEAgc3RhdGljIGludCBoaXAwNF9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcmVnX2ludGVuIHw9IFJDVl9JTlQ7XFxuIFxcdFxcdHdyaXRlbF9yZWxheGVkKHByaXYtXFx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cXHUwMDNlYmFzZSArIFBQRV9JTlRFTik7XFxuIFxcdH1cXG4rXFx0LyogQXJtIHRoZSBjb2FsZXNjZSB0aW1lciBCRUZPUkUgbmFwaV9jb21wbGV0ZV9kb25lKCk6IG5hcGlfZGlzYWJsZSgpXFxuK1xcdCAqIGluIGhpcDA0X21hY19zdG9wKCkgcmV0dXJucyBvbmNlIFNDSEVEIGlzIGNsZWFyZWQgaGVyZSwgbm90IHdoZW5cXG4rXFx0ICogdGhlIHBvbGwgZnVuY3Rpb24gcmV0dXJucywgc28gYXJtaW5nIGFmdGVyd2FyZHMgY2FuIHNsaXAgcGFzdCB0aGVcXG4rXFx0ICogc3RvcCBwYXRoJ3MgaHJ0aW1lcl9jYW5jZWwoKS5cXG4rXFx0ICovXFxuK1xcdGlmICh0eF9yZW1haW5pbmcpXFxuK1xcdFxcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xcbiBcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcngpO1xcbiBkb25lOlxcbi1cXHQvKiBzdGFydCBhIG5ldyB0aW1lciBpZiBuZWNlc3NhcnkgKi9cXG4tXFx0aWYgKHJ4IFxcdTAwM2MgYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHR4X3JlbWFpbmluZylcXG4tXFx0XFx0aGlwMDRfc3RhcnRfdHhfdGltZXIocHJpdik7XFxuLVxcbiBcXHRyZXR1cm4gcng7XFxuIH1cXG4gXFxuQEAgLTcyMCw3ICs3MzIsNyBAQCBzdGF0aWMgdm9pZCBoaXAwNF9hZGp1c3RfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbitzdGF0aWMgaW50IF9faGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuIHtcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0aW50IGk7XFxuQEAgLTc0Myw2ICs3NTUsMTMgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0XFx0aGlwMDRfc2V0X3JlY3ZfZGVzYyhwcml2LCBwaHlzKTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZVxcbitcXHQgKiByZS1lbmFibGluZyB0cmFmZmljLiAgVGhlIHN0b3JlLXJlbGVhc2UgcGFpcnMgd2l0aCB0aGUgbG9hZC1hY3F1aXJlXFxuK1xcdCAqIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCk7IHN0YXRlX2xvY2sgc2VyaWFsaXplcyB0aGlzIGFnYWluc3RcXG4rXFx0ICogbWFjX3N0b3AoKSdzIHN0b3JlLXJlbGVhc2UuXFxuK1xcdCAqL1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2cHJpdi1cXHUwMDNlY2xvc2luZywgZmFsc2UpO1xcbitcXG4gXFx0aWYgKHByaXYtXFx1MDAzZXBoeSlcXG4gXFx0XFx0cGh5X3N0YXJ0KHByaXYtXFx1MDAzZXBoeSk7XFxuIFxcbkBAIC03NTQsMTMgKzc3Myw0MiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4rc3RhdGljIGludCBoaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4re1xcbitcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldCA9IF9faGlwMDRfbWFjX29wZW4obmRldik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIFN0b3AgbmV3IHRpbWVyIGFybXMgYmVmb3JlIGRyYWluaW5nOiBzZXQgdGhlIGNsb3NpbmcgZmxhZyAoY2hlY2tlZFxcbitcXHQgKiBhdCB0aGUgc2luZ2xlIGFybWluZyBzaXRlKSwgd2FpdCBmb3IgdGhlIE5BUEkgcG9sbCBhbmQgYW55IGluLWZsaWdodFxcbitcXHQgKiBUWCB0byBmaW5pc2gsIHRoZW4gY2FuY2VsIHRoZSB0aW1lci5cXG4rXFx0ICpcXG4rXFx0ICogbmV0aWZfdHhfZGlzYWJsZSgpIChub3QgbmV0aWZfc3RvcF9xdWV1ZSgpKSBpcyByZXF1aXJlZCBiZWNhdXNlIHRoaXNcXG4rXFx0ICogZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBoaXAwNF90eF90aW1lb3V0X3Rhc2soKSwgbm90XFxuK1xcdCAqIG9ubHkgdmlhIC5uZG9fc3RvcCB3aGVyZSB0aGUgY29yZSBoYXMgYWxyZWFkeSBkZWFjdGl2YXRlZCBUWDtcXG4rXFx0ICogbmV0aWZfdHhfZGlzYWJsZSgpIHdhaXRzIGZvciBhbiBpbi1mbGlnaHQgaGlwMDRfbWFjX3N0YXJ0X3htaXQoKSxcXG4rXFx0ICogd2hpY2ggYXJtcyB0aGUgdGltZXIsIHRvIGZpbmlzaC5cXG4rXFx0ICpcXG4rXFx0ICogQmVjYXVzZSBoaXAwNF9yeF9wb2xsKCkgYXJtcyB0aGUgdGltZXIgYmVmb3JlIG5hcGlfY29tcGxldGVfZG9uZSgpLFxcbitcXHQgKiBuYXBpX2Rpc2FibGUoKSByZXR1cm5pbmcgbWVhbnMgdGhhdCBhcm0gaGFzIGhhcHBlbmVkLCBzbyB0aGVcXG4rXFx0ICogaHJ0aW1lcl9jYW5jZWwoKSBiZWxvdyBjYW5ub3QgbWlzcyBpdC4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzXFxuK1xcdCAqIHdpdGggdGhlIGxvYWQgaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKS5cXG4rXFx0ICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZwcml2LVxcdTAwM2VjbG9zaW5nLCB0cnVlKTtcXG4rXFxuIFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuLVxcdG5ldGlmX3N0b3BfcXVldWUobmRldik7XFxuK1xcdG5ldGlmX3R4X2Rpc2FibGUobmRldik7XFxuK1xcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XFxuIFxcdGhpcDA0X21hY19kaXNhYmxlKG5kZXYpO1xcbiBcXHRoaXAwNF90eF9yZWNsYWltKG5kZXYsIHRydWUpO1xcbiBcXHRoaXAwNF9yZXNldF9wcGUocHJpdik7XFxuQEAgLTc3OSw2ICs4MjcsMTYgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuK3tcXG4rXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRfX2hpcDA0X21hY19zdG9wKG5kZXYpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgaGlwMDRfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNzkxLDggKzg0OSwyMyBAQCBzdGF0aWMgdm9pZCBoaXAwNF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdjtcXG4gXFxuIFxcdHByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhpcDA0X3ByaXYsIHR4X3RpbWVvdXRfdGFzayk7XFxuLVxcdGhpcDA0X21hY19zdG9wKHByaXYtXFx1MDAzZW5kZXYpO1xcbi1cXHRoaXAwNF9tYWNfb3Blbihwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFxuK1xcdC8qIFNlcmlhbGl6ZSB0aGUgcmVzdGFydCB3aXRoIC5uZG9fb3Blbi8ubmRvX3N0b3AsIHdoaWNoIHRha2UgdGhlXFxuK1xcdCAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGVcXG4rXFx0ICogbmV0aWZfcnVubmluZygpIGNoZWNrIGJhaWxzOyBpZiB0aGF0IGNoZWNrIHJhY2VzIHRoZSBjb3JlJ3NcXG4rXFx0ICogcnVubmluZy1zdGF0ZSBjbGVhciwgLm5kb19zdG9wIHN0aWxsIHJ1bnMgdW5kZXIgc3RhdGVfbG9ja1xcbitcXHQgKiBhZnRlcndhcmRzIGFuZCBzdG9wcyB0aGUgZGV2aWNlLCBzbyB0aGlzIHdvcmtlciBjYW5ub3QgbGVhdmUgdGhlXFxuK1xcdCAqIE1BQyByZS1lbmFibGVkIGFnYWluc3QgYSB0ZWFyZG93bi5cXG4rXFx0ICovXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbitcXHRpZiAoIW5ldGlmX3J1bm5pbmcocHJpdi1cXHUwMDNlbmRldikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0X19oaXAwNF9tYWNfc3RvcChwcml2LVxcdTAwM2VuZGV2KTtcXG4rXFx0aWYgKF9faGlwMDRfbWFjX29wZW4ocHJpdi1cXHUwMDNlbmRldikpXFxuK1xcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlbmRldiwgXFxcInJlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXFxcblxcXCIpO1xcbitvdXQ6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdGVfbG9jayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuQEAgLTk4Myw2ICsxMDU2LDcgQEAgc3RhdGljIGludCBoaXAwNF9tYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0fVxcbiBcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2V0eF90aW1lb3V0X3Rhc2ssIGhpcDA0X3R4X3RpbWVvdXRfdGFzayk7XFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRlX2xvY2spO1xcbiBcXG4gXFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZoaXAwNF9uZXRkZXZfb3BzO1xcbiBcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZoaXAwNF9ldGh0b29sX29wcztcXG5AQCAtMTAyNiwxMyArMTEwMCwyNCBAQCBzdGF0aWMgdm9pZCBoaXAwNF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gXFx0c3RydWN0IGRldmljZSAqZCA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIFxcbitcXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4rXFxuK1xcdC8qIFRoZSBJUlEgaXMgZGV2bS1tYW5hZ2VkIGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgZnJlZWQgb25seSBhZnRlclxcbitcXHQgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBGcmVlIGl0IG5vdywgYWZ0ZXIgdW5yZWdpc3Rlcl9uZXRkZXYoKSBoYXNcXG4rXFx0ICogcnVuIC5uZG9fc3RvcCB0byBzdG9wIHRoZSBkZXZpY2UgYW5kIG1hc2sgaXRzIGludGVycnVwdCBzb3VyY2UsIGJ1dFxcbitcXHQgKiBiZWZvcmUgdGhlIG1hbnVhbCBmcmVlX25ldGRldigpIGJlbG93LCBzbyB0aGF0IGhpcDA0X21hY19pbnRlcnJ1cHQoKVxcbitcXHQgKiAoZGV2X2lkID09IG5kZXYpIGNhbm5vdCBmaXJlIGFnYWluc3QgZnJlZWQgbWVtb3J5LiAgZnJlZV9pcnEoKSBhbHNvXFxuK1xcdCAqIGRyYWlucyBhbnkgaW4tZmxpZ2h0IGhhbmRsZXIuXFxuK1xcdCAqL1xcbitcXHRkZXZtX2ZyZWVfaXJxKGQsIG5kZXYtXFx1MDAzZWlycSwgbmRldik7XFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXR4X3RpbWVvdXRfdGFzayk7XFxuK1xcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZwcml2LVxcdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XFxuK1xcbiBcXHRpZiAocHJpdi1cXHUwMDNlcGh5KVxcbiBcXHRcXHRwaHlfZGlzY29ubmVjdChwcml2LVxcdTAwM2VwaHkpO1xcbiBcXG4gXFx0aGlwMDRfZnJlZV9yaW5nKG5kZXYsIGQpO1xcbi1cXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0b2Zfbm9kZV9wdXQocHJpdi1cXHUwMDNlcGh5X25vZGUpO1xcbi1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwcml2LVxcdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xcbiBcXHRmcmVlX25ldGRldihuZGV2KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NDAuOTMwNzk1ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDY2MzM3NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2M3YzI3NTMwZjlkYTZjMTg1OGU3ZTUzYTZmNzYxOTFjMjI3MGYyMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjAxOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jXG5pbmRleCAxODM3NmJjYzcxOGEyMC4uNGJkMTkyMDk0MGI3MzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY1xuQEAgLTE1LDYgKzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21mZC9zeXNjb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuIFxuICNkZWZpbmUgU0NfUFBFX1JFU0VUX0RSRVFcdFx0MHgwMjZDXG4gXG5AQCAtMjMyLDYgKzIzMyw4IEBAIHN0cnVjdCBoaXAwNF9wcml2IHtcbiBcdGludCB0eF9jb2FsZXNjZV9mcmFtZXM7XG4gXHRpbnQgdHhfY29hbGVzY2VfdXNlY3M7XG4gXHRzdHJ1Y3QgaHJ0aW1lciB0eF9jb2FsZXNjZV90aW1lcjtcbitcdGJvb2wgY2xvc2luZztcbitcdHN0cnVjdCBtdXRleCBzdGF0ZV9sb2NrOyAvKiBTZXJpYWxpemVzIE1BQyBvcGVuL3N0b3AgYW5kIHRpbWVvdXQgcmVjb3ZlcnkuICovXG4gXG4gXHR1bnNpZ25lZCBjaGFyICpyeF9idWZbUlhfREVTQ19OVU1dO1xuIFx0ZG1hX2FkZHJfdCByeF9waHlzW1JYX0RFU0NfTlVNXTtcbkBAIC00OTcsNiArNTAwLDEyIEBAIHN0YXRpYyB2b2lkIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHN0cnVjdCBoaXAwNF9wcml2ICpwcml2KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbnMgPSBwcml2LVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzICogTlNFQ19QRVJfVVNFQyAvIDI7XG4gXG4rXHQvKiBEbyBub3QgKHJlLSlhcm0gdGhlIFR4IGNvYWxlc2NlIHRpbWVyIG9uY2UgdGVhcmRvd24gaGFzIGJlZ3VuLlxuK1x0ICogQm90aCBhcm1pbmcgc2l0ZXMgKFR4IGFuZCBOQVBJIFJ4IHBvbGwpIGdvIHRocm91Z2ggaGVyZS5cbitcdCAqL1xuK1x0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2cHJpdi1cdTAwM2VjbG9zaW5nKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LyogYWxsb3cgdGltZXIgdG8gZmlyZSBhZnRlciBoYWxmIHRoZSB0aW1lIGF0IHRoZSBlYXJsaWVzdCAqL1xuIFx0aHJ0aW1lcl9zdGFydF9yYW5nZV9ucyhcdTAwMjZwcml2LVx1MDAzZXR4X2NvYWxlc2NlX3RpbWVyLCBuc190b19rdGltZShucyksXG4gXHRcdFx0ICAgICAgIG5zLCBIUlRJTUVSX01PREVfUkVMKTtcbkBAIC02NDksMTIgKzY1OCwxNSBAQCBzdGF0aWMgaW50IGhpcDA0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRwcml2LVx1MDAzZXJlZ19pbnRlbiB8PSBSQ1ZfSU5UO1xuIFx0XHR3cml0ZWxfcmVsYXhlZChwcml2LVx1MDAzZXJlZ19pbnRlbiwgcHJpdi1cdTAwM2ViYXNlICsgUFBFX0lOVEVOKTtcbiBcdH1cbitcdC8qIEFybSB0aGUgY29hbGVzY2UgdGltZXIgQkVGT1JFIG5hcGlfY29tcGxldGVfZG9uZSgpOiBuYXBpX2Rpc2FibGUoKVxuK1x0ICogaW4gaGlwMDRfbWFjX3N0b3AoKSByZXR1cm5zIG9uY2UgU0NIRUQgaXMgY2xlYXJlZCBoZXJlLCBub3Qgd2hlblxuK1x0ICogdGhlIHBvbGwgZnVuY3Rpb24gcmV0dXJucywgc28gYXJtaW5nIGFmdGVyd2FyZHMgY2FuIHNsaXAgcGFzdCB0aGVcbitcdCAqIHN0b3AgcGF0aCdzIGhydGltZXJfY2FuY2VsKCkuXG4rXHQgKi9cbitcdGlmICh0eF9yZW1haW5pbmcpXG4rXHRcdGhpcDA0X3N0YXJ0X3R4X3RpbWVyKHByaXYpO1xuIFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4KTtcbiBkb25lOlxuLVx0Lyogc3RhcnQgYSBuZXcgdGltZXIgaWYgbmVjZXNzYXJ5ICovXG4tXHRpZiAocnggXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgdHhfcmVtYWluaW5nKVxuLVx0XHRoaXAwNF9zdGFydF90eF90aW1lcihwcml2KTtcbi1cbiBcdHJldHVybiByeDtcbiB9XG4gXG5AQCAtNzIwLDcgKzczMiw3IEBAIHN0YXRpYyB2b2lkIGhpcDA0X2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuK3N0YXRpYyBpbnQgX19oaXAwNF9tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuIFx0aW50IGk7XG5AQCAtNzQzLDYgKzc1NSwxMyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0XHRoaXAwNF9zZXRfcmVjdl9kZXNjKHByaXYsIHBoeXMpO1xuIFx0fVxuIFxuK1x0LyogUlggbWFwcGluZ3MgYXJlIGVzdGFibGlzaGVkOyBjbGVhciB0aGUgY2xvc2luZyBmbGFnIGJlZm9yZVxuK1x0ICogcmUtZW5hYmxpbmcgdHJhZmZpYy4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzIHdpdGggdGhlIGxvYWQtYWNxdWlyZVxuK1x0ICogaW4gaGlwMDRfc3RhcnRfdHhfdGltZXIoKTsgc3RhdGVfbG9jayBzZXJpYWxpemVzIHRoaXMgYWdhaW5zdFxuK1x0ICogbWFjX3N0b3AoKSdzIHN0b3JlLXJlbGVhc2UuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnByaXYtXHUwMDNlY2xvc2luZywgZmFsc2UpO1xuK1xuIFx0aWYgKHByaXYtXHUwMDNlcGh5KVxuIFx0XHRwaHlfc3RhcnQocHJpdi1cdTAwM2VwaHkpO1xuIFxuQEAgLTc1NCwxMyArNzczLDQyIEBAIHN0YXRpYyBpbnQgaGlwMDRfbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBoaXAwNF9tYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbitzdGF0aWMgaW50IGhpcDA0X21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuK3tcbitcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4rXHRpbnQgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuK1x0cmV0ID0gX19oaXAwNF9tYWNfb3BlbihuZGV2KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludCBfX2hpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIHtcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXHRpbnQgaTtcbiBcbitcdC8qIFN0b3AgbmV3IHRpbWVyIGFybXMgYmVmb3JlIGRyYWluaW5nOiBzZXQgdGhlIGNsb3NpbmcgZmxhZyAoY2hlY2tlZFxuK1x0ICogYXQgdGhlIHNpbmdsZSBhcm1pbmcgc2l0ZSksIHdhaXQgZm9yIHRoZSBOQVBJIHBvbGwgYW5kIGFueSBpbi1mbGlnaHRcbitcdCAqIFRYIHRvIGZpbmlzaCwgdGhlbiBjYW5jZWwgdGhlIHRpbWVyLlxuK1x0ICpcbitcdCAqIG5ldGlmX3R4X2Rpc2FibGUoKSAobm90IG5ldGlmX3N0b3BfcXVldWUoKSkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGlzXG4rXHQgKiBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBkaXJlY3RseSBmcm9tIGhpcDA0X3R4X3RpbWVvdXRfdGFzaygpLCBub3RcbitcdCAqIG9ubHkgdmlhIC5uZG9fc3RvcCB3aGVyZSB0aGUgY29yZSBoYXMgYWxyZWFkeSBkZWFjdGl2YXRlZCBUWDtcbitcdCAqIG5ldGlmX3R4X2Rpc2FibGUoKSB3YWl0cyBmb3IgYW4gaW4tZmxpZ2h0IGhpcDA0X21hY19zdGFydF94bWl0KCksXG4rXHQgKiB3aGljaCBhcm1zIHRoZSB0aW1lciwgdG8gZmluaXNoLlxuK1x0ICpcbitcdCAqIEJlY2F1c2UgaGlwMDRfcnhfcG9sbCgpIGFybXMgdGhlIHRpbWVyIGJlZm9yZSBuYXBpX2NvbXBsZXRlX2RvbmUoKSxcbitcdCAqIG5hcGlfZGlzYWJsZSgpIHJldHVybmluZyBtZWFucyB0aGF0IGFybSBoYXMgaGFwcGVuZWQsIHNvIHRoZVxuK1x0ICogaHJ0aW1lcl9jYW5jZWwoKSBiZWxvdyBjYW5ub3QgbWlzcyBpdC4gIFRoZSBzdG9yZS1yZWxlYXNlIHBhaXJzXG4rXHQgKiB3aXRoIHRoZSBsb2FkIGluIGhpcDA0X3N0YXJ0X3R4X3RpbWVyKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnByaXYtXHUwMDNlY2xvc2luZywgdHJ1ZSk7XG4rXG4gXHRuYXBpX2Rpc2FibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbi1cdG5ldGlmX3N0b3BfcXVldWUobmRldik7XG4rXHRuZXRpZl90eF9kaXNhYmxlKG5kZXYpO1xuK1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4gXHRoaXAwNF9tYWNfZGlzYWJsZShuZGV2KTtcbiBcdGhpcDA0X3R4X3JlY2xhaW0obmRldiwgdHJ1ZSk7XG4gXHRoaXAwNF9yZXNldF9wcGUocHJpdik7XG5AQCAtNzc5LDYgKzgyNywxNiBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgaGlwMDRfbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdF9faGlwMDRfbWFjX3N0b3AobmRldik7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBoaXAwNF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgaGlwMDRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTc5MSw4ICs4NDksMjMgQEAgc3RhdGljIHZvaWQgaGlwMDRfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBoaXAwNF9wcml2ICpwcml2O1xuIFxuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaGlwMDRfcHJpdiwgdHhfdGltZW91dF90YXNrKTtcbi1cdGhpcDA0X21hY19zdG9wKHByaXYtXHUwMDNlbmRldik7XG4tXHRoaXAwNF9tYWNfb3Blbihwcml2LVx1MDAzZW5kZXYpO1xuK1xuK1x0LyogU2VyaWFsaXplIHRoZSByZXN0YXJ0IHdpdGggLm5kb19vcGVuLy5uZG9fc3RvcCwgd2hpY2ggdGFrZSB0aGVcbitcdCAqIHNhbWUgbG9jay4gIElmIGEgY2xvc2UgaGFzIGNvbXBsZXRlZCBvciBpcyBpbiBwcm9ncmVzcyB0aGVcbitcdCAqIG5ldGlmX3J1bm5pbmcoKSBjaGVjayBiYWlsczsgaWYgdGhhdCBjaGVjayByYWNlcyB0aGUgY29yZSdzXG4rXHQgKiBydW5uaW5nLXN0YXRlIGNsZWFyLCAubmRvX3N0b3Agc3RpbGwgcnVucyB1bmRlciBzdGF0ZV9sb2NrXG4rXHQgKiBhZnRlcndhcmRzIGFuZCBzdG9wcyB0aGUgZGV2aWNlLCBzbyB0aGlzIHdvcmtlciBjYW5ub3QgbGVhdmUgdGhlXG4rXHQgKiBNQUMgcmUtZW5hYmxlZCBhZ2FpbnN0IGEgdGVhcmRvd24uXG4rXHQgKi9cbitcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VzdGF0ZV9sb2NrKTtcbitcdGlmICghbmV0aWZfcnVubmluZyhwcml2LVx1MDAzZW5kZXYpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdF9faGlwMDRfbWFjX3N0b3AocHJpdi1cdTAwM2VuZGV2KTtcbitcdGlmIChfX2hpcDA0X21hY19vcGVuKHByaXYtXHUwMDNlbmRldikpXG4rXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VuZGV2LCBcInJlc3RhcnQgYWZ0ZXIgdHggdGltZW91dCBmYWlsZWRcXG5cIik7XG4rb3V0OlxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlc3RhdGVfbG9jayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaGlwMDRfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5AQCAtOTgzLDYgKzEwNTYsNyBAQCBzdGF0aWMgaW50IGhpcDA0X21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0fVxuIFxuIFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNldHhfdGltZW91dF90YXNrLCBoaXAwNF90eF90aW1lb3V0X3Rhc2spO1xuK1x0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXN0YXRlX2xvY2spO1xuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2aGlwMDRfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZoaXAwNF9ldGh0b29sX29wcztcbkBAIC0xMDI2LDEzICsxMTAwLDI0IEBAIHN0YXRpYyB2b2lkIGhpcDA0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0c3RydWN0IGhpcDA0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiBcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcbitcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuK1xuK1x0LyogVGhlIElSUSBpcyBkZXZtLW1hbmFnZWQgYW5kIHdvdWxkIG90aGVyd2lzZSBiZSBmcmVlZCBvbmx5IGFmdGVyXG4rXHQgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBGcmVlIGl0IG5vdywgYWZ0ZXIgdW5yZWdpc3Rlcl9uZXRkZXYoKSBoYXNcbitcdCAqIHJ1biAubmRvX3N0b3AgdG8gc3RvcCB0aGUgZGV2aWNlIGFuZCBtYXNrIGl0cyBpbnRlcnJ1cHQgc291cmNlLCBidXRcbitcdCAqIGJlZm9yZSB0aGUgbWFudWFsIGZyZWVfbmV0ZGV2KCkgYmVsb3csIHNvIHRoYXQgaGlwMDRfbWFjX2ludGVycnVwdCgpXG4rXHQgKiAoZGV2X2lkID09IG5kZXYpIGNhbm5vdCBmaXJlIGFnYWluc3QgZnJlZWQgbWVtb3J5LiAgZnJlZV9pcnEoKSBhbHNvXG4rXHQgKiBkcmFpbnMgYW55IGluLWZsaWdodCBoYW5kbGVyLlxuK1x0ICovXG4rXHRkZXZtX2ZyZWVfaXJxKGQsIG5kZXYtXHUwMDNlaXJxLCBuZGV2KTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2V0eF90aW1lb3V0X3Rhc2spO1xuK1x0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2V0eF9jb2FsZXNjZV90aW1lcik7XG4rXG4gXHRpZiAocHJpdi1cdTAwM2VwaHkpXG4gXHRcdHBoeV9kaXNjb25uZWN0KHByaXYtXHUwMDNlcGh5KTtcbiBcbiBcdGhpcDA0X2ZyZWVfcmluZyhuZGV2LCBkKTtcbi1cdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0b2Zfbm9kZV9wdXQocHJpdi1cdTAwM2VwaHlfbm9kZSk7XG4tXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnByaXYtXHUwMDNldHhfdGltZW91dF90YXNrKTtcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjQwLjkzMDc5ODU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU4NzY1MDE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jYC4gSXQncyBmaXhpbmcgc29tZSByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXQgY29hbGVzY2UgdGltZXIsIE1BQyBvcGVuL3N0b3AsIGFuZCB0aW1lb3V0IHJlY292ZXJ5LiBUaGF0J3MgZ29vZCwgZnVuY3Rpb25hbCBmaXhlcyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBzdGF0ZV9sb2NrYCBtdXRleCwgYSBgY2xvc2luZ2AgZmxhZywgYW5kIHVzZXMgbWVtb3J5IGJhcnJpZXJzIHdpdGggYHNtcF9sb2FkX2FjcXVpcmVgIGFuZCBgc21wX3N0b3JlX3JlbGVhc2VgLiBTdGFuZGFyZCBzdHVmZiBmb3IgY29uY3VycmVuY3kgZml4ZXMsIGJ1dCB3b3J0aCBhIGNsb3NlciBsb29rLiBUaGV5J3ZlIGFsc28gY2hhbmdlZCB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgaGlwMDRfcmVtb3ZlYCB0byBkZWFsIHdpdGggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgb24gYG5kZXZgIGluIHRoZSBJUlEgaGFuZGxlci4gRGVmaW5pdGVseSBzb3VuZHMgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3VsZCBiZSBleHBsb2l0YWJsZSwgaWYgdHJpZ2dlcmVkIGNvcnJlY3RseS5cblxuVGhlIG1haW4gcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gQ29uc2lkZXJpbmcgaXQncyBhIG5ldHdvcmsgZHJpdmVyIGFuZCBpdCAqaXMqIGNoYW5naW5nIGZ1bmN0aW9uYWxpdHksIHRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgeWVzLiBCdXQsIGl0J3MgYSB2ZXJ5IHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlIOKAkyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0LiBUaGUgYmlnIGh1cmRsZSBpcyByZWFjaGFiaWxpdHkuIENhbiB3ZSBhY3R1YWxseSBoaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyB0aGVyZSBhbnkgZW11bGF0aW9uIGF2YWlsYWJsZT8gT3IgYXJlIHdlIGNvbXBsZXRlbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZT8gUGxhdGZvcm0gZHJpdmVycyBmb3Igc3BlY2lmaWMgU29DcyBhcmUgdXN1YWxseSBhIHBhaW4gdG8gZnV6eiwgYnV0IG5vdCBpbXBvc3NpYmxlLlxuXG5XYWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmNhbiogaGFuZGxlIHBsYXRmb3JtIGRyaXZlcnMsIHJpZ2h0PyBJZiBpdCBjYW4gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIGRldmljZSwgbGlrZSB0aHJvdWdoIGBzeXpfZGV2cHRzYCBvciBpZiB0aGUgZHJpdmVyIGdldHMgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQgaW4gYSBRRU1VIG1hY2hpbmUsIGxpa2UgdGhlIHZpcnQgbWFjaGluZSBvciBzb21lIEFSTSBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBvciBpZiBpdCdzIGdlbmVyYWxseSBjb21waWxlZCBhbmQgcHJvYmVhYmxlIG9uIGNlcnRhaW4gY29uZmlndXJhdGlvbnMuIExvb2tzIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlci4gU28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWFyY2ggZm9yIGVpdGhlciBgaGlwMDRfbWFjX3Byb2JlYCBvciBgaGlwMDRfZXRoYCBpbiB0aGUgc291cmNlLCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRldmljZSBpbnN0YW50aWF0aW9uIGxvb2tzIGxpa2UuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IHN5emthbGxlciB0byBraWNrIHRoaXMgZHJpdmVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NDcuNTE4NDUxMzgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIyOTEwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRfbWFjX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYz05NDk9c3RhdGljIHZvaWQgaGlwMDRfZnJlZV9yaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgZGV2aWNlICpkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM6OTY2OnN0YXRpYyBpbnQgaGlwMDRfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTk2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEzMT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaXAwNF9tYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMyOlxcdC5wcm9iZVxcdD0gaGlwMDRfbWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMzLVxcdC5yZW1vdmUgPSBoaXAwNF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAxOjUyLjE3MDc0ODYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNjg3MDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIFRpbWUqKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZHJpdmVyLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQgd2hlbiBpdCBjb21lcyB0byBjb250cm9sbGluZyBpdHMgYnVpbGQgYW5kIGJlaGF2aW9yLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgaXQuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgaGVscCB0ZXh0LCBhbmQgb2YgY291cnNlLCB0aGUgYWN0dWFsIHN5bWJvbHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB2YXJpb3VzIGZlYXR1cmVzLiBUaGlzIGlzIHdoZXJlIEkgZmlndXJlIG91dCB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEtub3dpbmcgdGhlIEtjb25maWcgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyB3aXRoIG90aGVyIGRyaXZlcnMgb3IgaGFyZHdhcmUgaXMgYWJzb2x1dGVseSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBpbXBhY3QgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIGJlIG1ha2luZyBub3RlIG9mIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBjb25mbGljdHMgcmlnaHQgYXdheS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDE6NTUuMTA3NjIxMTQzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDY3MDgzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhJUDA0X0VUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0yOD1jb25maWcgSElTSV9GRU1BQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6NDA6Y29uZmlnIEhJUDA0X0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTQxLVxcdHRyaXN0YXRlIFxcXCJISVNJTElDT04gUDA0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAyOjAwLjkxNDMzNzA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzIyMzY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgYWx3YXlzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHdlYiBvZiBpbnRlcmNvbm5lY3Rpb25zIGF0IHBsYXkgaGVyZS4gRm9yZ2V0IHRoZSBzdXJmYWNlIGxldmVsIGZvciBhIG1vbWVudDsgSSBuZWVkIHRvIGRpZyBkZWVwLiBJIHdhbnQgdG8gaWRlbnRpZnkgKmV2ZXJ5KiBkZXBlbmRlbmN5LCBib3RoIGV4cGxpY2l0IGFuZCBpbXBsaWNpdC4gVGhhdCBtZWFucyBjb25zaWRlcmluZyBub3QganVzdCB0aGUgZGlyZWN0IGxpbmtzLCB0aGUgb2J2aW91cyByZWxhdGlvbnNoaXBzLCBidXQgYWxzbyB0aGUgY2FzY2FkaW5nIGVmZmVjdHMsIHRoZSBwb3RlbnRpYWwgc2lkZS1jaGFubmVsIGluZmx1ZW5jZXMsIGFuZCBhbnkgYXNzdW1wdGlvbnMgdGhhdCBtYXkgYmUgYmFrZWQgaW4uIEFyZSB0aGVzZSBkZXBlbmRlbmNpZXMgd2VsbC1kb2N1bWVudGVkPyBBcmUgdGhleSB2ZXJzaW9uLWxvY2tlZCBhcHByb3ByaWF0ZWx5PyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgd2hhdCBhcmUgdGhlIG1pdGlnYXRpb25zIGluIHBsYWNlLCBvciAqbm90KiBpbiBwbGFjZT8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGRyYXdpbmcgYSBwcmV0dHkgZGVwZW5kZW5jeSBncmFwaDsgaXQncyBhYm91dCBhbnRpY2lwYXRpbmcgdGhlIGJyZWFraW5nIHBvaW50cywgdGhlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGFyZWFzIHdoZXJlIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIGEgY2F0YXN0cm9waGljIGNhc2NhZGUuIEknbSBsb29raW5nIGZvciB0aGUgd2Vha2VzdCBsaW5rcywgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgb3BlcmF0aW5nIHdpdGhvdXQgc3VmZmljaWVudCBvdmVyc2lnaHQgb3Igcm9idXN0IGVycm9yIGhhbmRsaW5nLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGRvd25zdHJlYW0gaW1wYWN0IG9mIGVhY2ggcG90ZW50aWFsIGZhaWx1cmUuIEknbSB0cnlpbmcgdG8gcGljdHVyZSB0aGUgcmlwcGxlIGVmZmVjdCBhbmQgdGhlIG1pdGlnYXRpb24gc3RyYXRlZ2llcyB0aGF0IHdpbGwgYmUgcmVxdWlyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXNlIGRlcGVuZGVuY2llcyBleGlzdCwgd2hhdCB0aGV5IGNvbnRyaWJ1dGUsIGFuZCBpZiB0aGV5J3JlIGFjdHVhbGx5ICpuZWNlc3NhcnkqLiBPZnRlbiwgb3B0aW1pemF0aW9uIGJlZ2lucyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjowNC41NTc1NjQ1MzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzU6XFx0XFx0ICBUaGUgRkVNQUMgcmVjZWl2ZXMgYW5kIHRyYW5zbWl0cyBkYXRhIG92ZXIgRXRoZXJuZXRcXG4gIDM2OlxcdFxcdCAgcG9ydHMgYXQgMTAvMTAwIE1icHMgaW4gZnVsbC1kdXBsZXggb3IgaGFsZi1kdXBsZXggbW9kZS5cXG4gIDM3OlxcdFxcdCAgVGhlIEZFTUFDIGV4Y2hhbmdlcyBkYXRhIHdpdGggdGhlIENQVSwgYW5kIHN1cHBvcnRzXFxuICAzODpcXHRcXHQgIHRoZSBlbmVyZ3kgZWZmaWNpZW50IEV0aGVybmV0IChFRUUpLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgSElQMDRfRVRIXFxuICA0MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSElTSUxJQ09OIFAwNCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXHQjIEZvciBNRkRfU1lTQ09OXFxuICA0MzpcXHRcXHRzZWxlY3QgTUFSVkVMTF9QSFlcXG4gIDQ0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA0NTpcXHRcXHRzZWxlY3QgSE5TX01ESU9cXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIGhpc2lsaWNvbiBwMDQgU29DIGFuZFxcbiAgNDg6XFx0XFx0ICB3YW50IHRvIHVzZSB0aGUgaW50ZXJuYWwgZXRoZXJuZXQgdGhlbiB5b3Ugc2hvdWxkIGFuc3dlciBZIHRvIHRoaXMuXFxuICA0OTpcXHRcXG4gIDUwOlxcdGNvbmZpZyBISTEzWDFfR01BQ1xcbiAgNTE6XFx0XFx0Ym9vbCBcXFwiSGlzaWxpY29uIEhJMTNYMSBOZXR3b3JrIERldmljZSBTdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0ZGVwZW5kcyBvbiBISVAwNF9FVEhcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgSWYgeW91IHdpc2ggdG8gY29tcGlsZSBhIGtlcm5lbCBmb3IgYSBoYXJkd2FyZSB3aXRoIGhpc2lsaWNvbiBoaTEzeDFfZ2FtY1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjowNC41NTc4Mjk4NjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE4ODczOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaGlwMDRfZXRoYCBkcml2ZXIuIEZpcnN0LCBpdCBoaW5nZXMgb24gYEhBU19JT01FTWAsIHdoaWNoIHRlbGxzIG1lIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGV2ZW4gcmVhY2ggaXQuIENhbiBzeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiBwbGF0Zm9ybSBkcml2ZXJzPyBJIGtub3cgaXQgY2FuIHVzZSBwc2V1ZG8tc3lzY2FsbHMgdG8gcmVnaXN0ZXIgcGxhdGZvcm0gZGV2aWNlcywgb3IgaXQgY2FuIHBva2UgYXJvdW5kIGluIGAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzYCBpZiB0aGVyZSdzIGEgdXNhYmxlIGludGVyZmFjZSwgb3IgaWYgdGhlIGRldmljZSBpcyBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlLlxuXG5XYWl0LCBidXQgaXQncyBub3QgbGlrZSBzeXprYWxsZXIganVzdCBtYWdpY2FsbHkgaW5zdGFudGlhdGVzIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyBpdCBoYXMgYSBkZWRpY2F0ZWQgZGVzY3JpcHRpb24gZm9yIGl0LCBvciBpdOKAmXMgYmFrZWQgaW50byB0aGUgc3RhbmRhcmQgUUVNVSBtYWNoaW5lLCByaWdodD8gSXQgZG9lc24ndCB1c2Ugc29tZXRoaW5nIGxpa2UgYHN5el9kZXZwdHNgIG9yIHJlbGF0ZWQgc3lzY2FsbHMuIFN5emthbGxlciBsZXZlcmFnZXMgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgYW5kIG90aGVyIHNpbWlsYXIgYXBwcm9hY2hlcywgYnV0IG5vdCBhIGdlbmVyaWMgbWV0aG9kIHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIHdpdGhvdXQgYSBkZXZpY2UgdHJlZSBlbnRyeSBvciBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbC5cblxuU3RpbGwsIGl0J3Mgd29ydGggZnV6emluZyAqaWYqIGl0J3MgcmVhY2hhYmxlLiBTbywgaXMgaXQgcmVhY2hhYmxlPyBJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluIGFuZCB0aGUgcGxhdGZvcm0gZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIHdlIGhhdmUgYSB0YXJnZXQuIEJ1dCBob3cgdGhlIGhlY2sgKmlzKiB0aGUgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdGVyZWQ/XG5cbk5vcm1hbGx5LCBmb3IgZHJpdmVyIGZpeGVzIHRoYXQgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIEknZCBqdXN0IGZsYWcgYFdvcnRoRnV6emluZzogdHJ1ZWAgYW5kIHByb3ZpZGUgdGhlIHJlbGV2YW50IGNvbmZpZ3MuXG5cbkJ1dCBob2xkIG9uLCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlwiXG5cblRoZSBrZXkgcXVlc3Rpb24gaXM6IElzIGBoaXAwNF9ldGhgIHJlYWNoYWJsZSBpbiBRRU1VPyBEb2VzIFFFTVUgZW11bGF0ZSBIaXNpbGljb24gUDA0IEV0aGVybmV0PyBNeSBndXQgc2F5cyBubywgdW5sZXNzIGl0J3MgcGFydCBvZiBhIHZlcnkgc3BlY2lmaWMgbWFjaGluZSB0eXBlLiBJIGJldHRlciBjaGVjayB0byBzZWUgaWYgUUVNVSBldmVuIGhhcyBgaGlwMDRfZXRoYCBzdXBwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDI6MTEuMjc2NzA2MTMxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTIwMjIyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL01ha2VmaWxlPTY9ZHRiLSQoQ09ORklHX0FSQ0hfSElQMDQpICs9IFxcXFxcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vTWFrZWZpbGU6NzpcXHRoaXAwNC1kMDEuZHRiXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL01ha2VmaWxlLTgtZHRiLSQoQ09ORklHX0FSQ0hfSElTSSkgKz0gXFxcXFxcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtOC1cXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0czo5OiNpbmNsdWRlIFxcXCJoaXAwNC5kdHNpXFxcIlxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzLTEwLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC1kMDEuZHRzPTExPS8ge1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHMtMTUtXFx0bW9kZWwgPSBcXFwiSGlzaWxpY29uIEQwMSBEZXZlbG9wbWVudCBCb2FyZFxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LWQwMS5kdHM6MTY6XFx0Y29tcGF0aWJsZSA9IFxcXCJoaXNpbGljb24saGlwMDQtZDAxXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQtZDAxLmR0cy0xNy1cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIwPVxcdGJvb3R3cmFwcGVyIHtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMTpcXHRcXHRjb21wYXRpYmxlID0gXFxcImhpc2lsaWNvbixoaXAwNC1ib290d3JhcHBlclxcXCI7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2ktMjItXFx0XFx0Ym9vdC1tZXRob2QgPSBcXHUwMDNjMHgxMGMwMDAwMCAweDEwMDAwXFx1MDAzZSwgXFx1MDAzYzB4ZTAwMDAxMDAgMHgxMDAwXFx1MDAzZTtcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpPTIwND1cXHRcXHRnaWM6IGludGVycnVwdC1jb250cm9sbGVyQGMwMTAwMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k6MjA1OlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiaGlzaWxpY29uLGhpcDA0LWludGNcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2hpc2lsaWNvbi9oaXAwNC5kdHNpLTIwNi1cXHRcXHRcXHQjaW50ZXJydXB0LWNlbGxzID0gXFx1MDAzYzNcXHUwMDNlO1xcbi0tXFxuYXJjaC9hcm0vYm9vdC9kdHMvaGlzaWxpY29uL2hpcDA0LmR0c2k9MjIwPVxcdFxcdGZhYnJpYzogZmFicmljIHtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaToyMjE6XFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJoaXNpbGljb24saGlwMDQtZmFicmljXFxcIjtcXG5hcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vaGlwMDQuZHRzaS0yMjItXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4MzAyYTAwMCAweDEwMDBcXHUwMDNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoxMi4wMjg3ODc4MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2NTk4Nzc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGV2ZW4gKmdldCogdG8gdGhpcz8gVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIElmIHRoZXJlIGlzbid0IGEgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIHRvIGluc3RhbnRpYXRlIGl0LCBhbmQgaXQncyBub3QgYSBQQ0kgb3IgVVNCIGRldmljZSB0aGF0IHdlIGNhbiBlbXVsYXRlLCB0aGVuIHdlJ3JlIHByZXR0eSBtdWNoIHN0dWNrIHVubGVzcyB3ZSdyZSBib290aW5nIHRoZSBleGFjdCBtYWNoaW5lIHR5cGUgdGhlIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IuIERvZXMgc3l6a2FsbGVyIGV2ZW4gc3VwcG9ydCB0aGUgXCJoaXAwNFwiIG1hY2hpbmUgdHlwZSwgc3BlY2lmaWNhbGx5PyBObywgaXQgdXN1YWxseSBnb2VzIGZvciB0aGUgY29tbW9uIHZpcnR1YWxpemVkIG9wdGlvbnMuIEl0IGxvb2tzIGxpa2UgYGhpcDA0YCBpcyBhIEhpc2lsaWNvbiBTb0MuXG5cbkkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBEb2VzIGBzeXpfZGV2cHRzYCBoZWxwIGhlcmU/IE5vLiBJcyB0aGVyZSBhIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGA/IE5vcGUsIG5vdGhpbmcgbGlrZSB0aGF0IGV4aXN0cy4gQ2FuIHdlIGxldmVyYWdlIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIGJlY2F1c2UgdGhhdCBkb2Vzbid0IGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLiBNYXliZSBkZXZpY2UgdHJlZSBvdmVybGF5cyBjb3VsZCBiZSBhbiBvcHRpb24sIGJ1dC4uLndhaXQsIEknbSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgZG9lc24ndCBzdXBwb3J0IHRob3NlIGZvciBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMuXG5cblRoZSBwcm9tcHQgaW4gdGhlIHRhc2sgaXMgY2xlYXI6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggY29udGFpbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIi4gT2theSwgc28gaXMgYGhpcDA0X2V0aGAgdW5yZWFjaGFibGU/IEFic29sdXRlbHkuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWMgdG8gYSBIaXNpbGljb24gU29DLiBVbmxlc3MgUUVNVSBlbXVsYXRlcyB0aGlzIHNwZWNpZmljIFNvQywgYW5kIHN5emthbGxlciBpcyBzcGVjaWZpY2FsbHkgY29uZmlndXJlZCB0byB1c2UgdGhhdCBlbXVsYXRpb24sIHdlJ3JlIG5vdCBnb2luZyB0byBoaXQgaXQuXG5cbkxldCdzIGNoZWNrIGlmIFFFTVUgZXZlbiBzdXBwb3J0cyB0aGlzIGBoaXAwNGAgbWFjaGluZS4gTm9wZSwgbm90aGluZy4gU28sIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCBvciBzbyBJIHRob3VnaHQuIEJ1dCB3aGF0IGlmIHRoZXJlJ3Mgc29tZSAqb3RoZXIqIHdheSB0byBpbnN0YW50aWF0ZSBpdD8gSSByZW1pbmQgbXlzZWxmIHRoYXQgcGxhdGZvcm0gZHJpdmVycyBhcmUgYm91bmQgdG8gcGxhdGZvcm0gZGV2aWNlcy4gVGhvc2UgZGV2aWNlcyBhcmUgY3JlYXRlZCBieSBwbGF0Zm9ybSBjb2RlLCBsaWtlIERldmljZSBUcmVlcyBvciBib2FyZCBmaWxlcy5cblxuU28sIGluIHRoZSB1c3VhbCBzeXprYWxsZXIgZW52aXJvbm1lbnQsIHRoaXMgZHJpdmVyIGlzIHVucmVhY2hhYmxlLiBCdXQuLi4gd2FpdCBhIG1pbnV0ZSEgRGlkbid0IHN5emthbGxlciBhY3R1YWxseSAqZmluZCogYSBidWcgaW4gdGhpcyBkcml2ZXI/IFRoZSBjb21taXQgbWVzc2FnZSBzYXlzIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiLiBJZiBzeXotY2x1c3RlciBmb3VuZCBhIGJ1ZywgaG93IGRpZCBpdCByZWFjaCBpdD8gTm93LCB0aGF0J3MgdGhlIG1pbGxpb24tZG9sbGFyIHF1ZXN0aW9uLiBNYXliZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSB3YXkgdG8gaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB0aGF0IEkgaGF2ZW4ndCBjb21lIGFjcm9zcy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgZm9yIGFueSBgc3l6X2AgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGxhdGZvcm0gZGV2aWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkxMywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyMC41OTQ3NzgzMjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzk3Nzk5MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3l6X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyMS4yMTg3NjY1MDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA3OTg0OTA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIFBhdGggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBmaXJzdCB0aG91Z2h0IGlzOiBkaWQgc3l6a2FsbGVyIGRpc2NvdmVyIGl0IHRocm91Z2ggc3RhdGljIGFuYWx5c2lzLCBvciBpcyBpdCBhIHBhdGNoIGJlaW5nIHRlc3RlZCBieSBzeXotY2x1c3Rlcj8gVGhlIFwiYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBtZXNzYWdlIHN1Z2dlc3RzIHRoZSBsYXR0ZXIgLSBhIHBhdGNoIHRlc3RpbmcgcmVxdWVzdC4gU3l6Ym90IHRlc3RzIHBhdGNoZXMsIGV2ZW4gaWYgaXQgY2FuJ3QgYWN0aXZlbHkgZnV6eiB0aGVtLCBidXQgaXQgd29uJ3QgZmluZCBidWdzIGluICp1bnJlYWNoYWJsZSogY29kZS5cblxuSWYgaXQgKmlzKiB1bnJlYWNoYWJsZSwgdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIG5lZWQgdG8gY29uZmlybS4gTXkgZ3V0IHNheXMgaXQncyB1bnJlYWNoYWJsZSwgYnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuRmlyc3QsIGxldCBtZSBjaGVjayBmb3IgYW55IGRldmljZSBpbnN0YW50aWF0aW9uIG1ldGhvZHMuIENhbiBJIGNyZWF0ZSB0aGlzIGRldmljZSB0aHJvdWdoIGEgYC9zeXNgIGludGVyZmFjZT8gTm8sIGdlbmVyYWxseSBub3Qgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzLiBPa2F5LCB3aGF0IGFib3V0IGEgbW9kdWxlPyBJcyB0aGVyZSBhIGBoaXAwNF9ldGhgIG1vZHVsZT8gWWVzLCBgQ09ORklHX0hJUDA0X0VUSD1tYC4gSWYgaXQncyBsb2FkZWQsIGBoaXAwNF9tYWNfcHJvYmVgIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBhY3R1YWwgZGV2aWNlICpleGlzdHMqLiBDYW4gSSwgYXMgYSB1c2VyLCBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBpdHNlbGY/IE5vLCBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBpcyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBObyBsZWdhY3kgcHJvYmluZz8gTm8gc3lzZnMgbWFnaWM/IEkgY2FuIGJpbmQvdW5iaW5kLCBidXQgSSBuZWVkIHRoZSBkZXZpY2UgdG8gZXhpc3QgaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5Fc3NlbnRpYWxseSwgaXQgbG9va3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIExldCBtZSByZS1yZWFkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLlxuXG5UaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIChgaGlwMDRfZXRoYCkgZm9yIHNwZWNpZmljIEhpc2lsaWNvbiBQMDQgU29DIGhhcmR3YXJlLiBRRU1VICpkZWZpbml0ZWx5KiBkb2Vzbid0IGVtdWxhdGUgdGhhdC4gSXQncyBub3QgdGhlIGB2aXJ0YCBtYWNoaW5lLCBhbmQgaXQncyBub3QgZXZlbiBhIFwicmFzcGlcIiwgXCJpbXhcIiwgZXRjIG1hY2hpbmUuIFRoZXJlJ3Mgbm8gaGlzaWxpY29uIGVtdWxhdGlvbi4gSG9sZCBvbi4uLiBpcyB0aGVyZSBhIGNoYW5jZSBzeXprYWxsZXIgaXMgdXNpbmcgc29tZSBwc2V1ZG8gZGV2aWNlIGZvciB0aGlzPyBObywgSSBkb24ndCB0aGluayBzby4gSXQncyB1bnJlYWNoYWJsZS5cblxuT2theSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGVyZSAqYW55KiBvdGhlciBwb3NzaWJpbGl0eS4gV2hhdCBpZiBpdCdzIGEgUENJIGRldmljZT8gTGV0IG1lIGNoZWNrIGBoaXAwNF9tYWNfZHJpdmVyYC5cblxuWXVwLCBjb25maXJtZWQuIFRoaXMgaXMgYSBkZWFkIGVuZC4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDowMjoyOS4yOTg2MTk0NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTYwNTE1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlwMDRfbWFjX2RyaXZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmM9MTEyOT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBoaXAwNF9tYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTMxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGhpcDA0X21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExMzItXFx0LnByb2JlXFx0PSBoaXAwNF9tYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlwMDRfZXRoLmMtMTEzOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguYzoxMTM5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaGlwMDRfbWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpcDA0X2V0aC5jLTExNDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjAyOjMzLjM1NDY3NzA1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQyNDA4MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBIaXNpbGljb24gSElQMDQgRXRoZXJuZXQgZHJpdmVyLCBgaGlwMDRfZXRoLmNgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIHdoaWNoIGlzIGltcG9ydGFudC4gSXQgbWVhbnMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gYmluZCB0byBhIHNwZWNpZmljIGBwbGF0Zm9ybV9kZXZpY2VgLiBBbmQgcGxhdGZvcm0gZGV2aWNlcywgYXMgeW91IGtub3csIGFyZSB0eXBpY2FsbHkgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSBkdXJpbmcga2VybmVsIGJvb3QsIGVpdGhlciB0aHJvdWdoIHRoZSBEZXZpY2UgVHJlZSAoRFQpLCBBQ1BJLCBvciBzb21ldGltZXMgbWFudWFsbHkgdGhyb3VnaCBvdGhlciBrZXJuZWwgY29kZS5cblxuVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IFN5emthbGxlciwgaW4gaXRzIHN0YW5kYXJkIGJvb3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGB2aXJ0YCBtYWNoaW5lIChvciBhbnl0aGluZyBzaW1pbGFyKSwgcmVsaWVzIG9uIGEgc3BlY2lmaWMgRGV2aWNlIFRyZWUgb3IgQUNQSS4gVGhlIGBoaXNpbGljb24saGlwMDQtbWFjYCBkZXZpY2UsIHdoaWNoIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8sIGlzICpub3QqIHByZXNlbnQgaW4gdGhhdCBkZWZhdWx0IERULiBUaGVyZWZvcmUsIHRoZSBrZXJuZWwgd29uJ3QgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIGBwbGF0Zm9ybV9kZXZpY2VgIGR1cmluZyBib290LlxuXG5Ob3csIGJlY2F1c2UgdGhhdCBgcGxhdGZvcm1fZGV2aWNlYCBpcyBtaXNzaW5nLCB0aGUgY3J1Y2lhbCBgcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBgcHJvYmVgIGZ1bmN0aW9uIGV4ZWN1dGluZywgdGhlIG5ldHdvcmsgZGV2aWNlIChgbmV0X2RldmljZWApIGlzbid0IHJlZ2lzdGVyZWQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhlIHBhdGNoZWQgY29kZSwgbGlrZSBgaGlwMDRfbWFjX29wZW5gLCBgaGlwMDRfbWFjX3N0b3BgLCBvciBgaGlwMDRfcnhfcG9sbGAsIHdpbGwgZXZlciBiZSByZWFjaGVkLiBJdCdzIGEgZnVuZGFtZW50YWwgYmluZC10aW1lIGlzc3VlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgcGF0aHMgd2l0aGluIHRoZSBISVAwNCBkcml2ZXIgdGhhdCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXQgaGluZ2VzIG9uIGhhcmR3YXJlIHRoYXQgc2ltcGx5IGlzbid0IGVtdWxhdGVkIG9yIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBJdCdzIGFsc28gbm90IHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLCBzbyB0aGVyZSdzIG5vIHdheSB0byBmb3JjZSBpdCBpbnRvIGV4aXN0ZW5jZS5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoIG9ubHkgbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXAwNF9ldGguY2AsIHNvIHRoZXJlIGFyZSBubyBvdGhlciBhZmZlY3RlZCBmaWxlcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSdsbCB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCB0byBmaW5hbGl6ZSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM2NiwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MDI6MzkuOTk3MDg4MDk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpc2lsaWNvbiBISVAwNCBFdGhlcm5ldCBkcml2ZXIgKGhpcDA0X2V0aC5jKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIGhhcmR3YXJlIChIaXNpbGljb24gUDA0IFNvQykuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGZyb20gdXNlci1zcGFjZS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgZnV6eiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlzaWxpY29uIEhJUDA0IEV0aGVybmV0IGRyaXZlciAoaGlwMDRfZXRoLmMpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgKEhpc2lsaWNvbiBQMDQgU29DKS4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZnJvbSB1c2VyLXNwYWNlLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCBmdXp6IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsbkg6[1] Phase: Running StartedAt: 2026-07-12 00:02:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsbkg6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-12 00:02:51 +0000 UTC FinishedAt: 2026-07-12 00:02:58 +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,}