Name: series-workflowgjmr5 Phase: Failed StartedAt: 2026-09-05 17:49:49 +0000 UTC FinishedAt: 2026-09-05 17:52:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgjmr5[0] Phase: Succeeded StartedAt: 2026-09-05 17:49:49 +0000 UTC FinishedAt: 2026-09-05 17:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgjmr5[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 17:49:49 +0000 UTC FinishedAt: 2026-09-05 17:52:20 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQyBhbmQgc3BlY2lhbGl6ZWQgUENJIEV0aGVybmV0IGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcyYzU5ZjI0ZDdmMDYxNTMzNTIyYmUzMjNhZTQyNjdmODM0M2JlOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjUxOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi5kMzNjODJiZDNlZTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTg4NSw2ICYjNDM7ODg1LDExIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gcHJpdi1cdTAwM2VkbWFfY2FwLnRpbWVfc3RhbXAgfHwgcHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyAtIGluaXRpYWxpc2UgdGltZXN0YW1waW5nXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTkwMCwxMSAmIzQzOzkwNSw2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZylcbiBcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXB0cF9jbGtfZnJlcV9jb25maWcocHJpdik7XG4gXG4tXHRpZiAoIShwcml2LVx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXApKSB7XG4tXHRcdG5ldGRldl9pbmZvKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cdH1cbi1cbiBcdHJldCA9IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHByaXYsIFNUTU1BQ19IV1RTX0FDVElWRSB8XG4gXHRcdFx0XHRcdCAgICAgICBQVFBfVENSX1RTQ0ZVUERUKTtcbiBcdGlmIChyZXQpIHtcbkBAIC05MzcsMjIgJiM0Mzs5MzcsMzkgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuJiM0MztcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O1BUUCBub3Qgc3VwcG9ydGVkIGJ5IEhXXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldixcbiBcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcXG5cJiMzNDssXG4gXHRcdFx0ICAgIEVSUl9QVFIocmV0KSk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAoc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpID09IDApXG4tXHRcdHN0bW1hY19wdHBfcmVnaXN0ZXIocHJpdik7XG4mIzQzO1x0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdGlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpO1xuIFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4gfVxuQEAgLTQxNjEsMTAgJiM0Mzs0MTc4LDEyIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi1cdFx0Z290byBpbml0X2Vycm9yO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX3NldHVwX3B0cChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBwdHBfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTg3LDkgJiM0Mzs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4mIzQzO3B0cF9lcnJvcjpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTgzMjYsMTMgJiM0Mzs4MzQ2LDE0IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldCA9IHN0bW1hY19od19zZXR1cChuZGV2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxcblwmIzM0OywgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyb3JfdW5sb2NrO1xuIFx0fVxuIFxuLVx0c3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuJiM0MztcdFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJvcl9zdG9wX2RtYTtcbiYjNDM7XHR9XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzU2LDYgJiM0Mzs4Mzc3LDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycm9yX3N0b3BfZG1hOlxuJiM0MztcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4mIzQzO2Vycm9yX3VubG9jazpcbiYjNDM7XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBTb0MgYW5kIHNwZWNpYWxpemVkIFBDSSBFdGhlcm5ldCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MmM1OWYyNGQ3ZjA2MTUzMzUyMmJlMzIzYWU0MjY3ZjgzNDNiZTkxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDI0NjU2YjM1MzUwYjEuLmQzM2M4MmJkM2VlNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtODg1LDYgJiM0Mzs4ODUsMTEgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90c3RhbXBfY291bnRlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7ZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtJmd0O2RtYV9jYXAuYXRpbWVfc3RhbXA7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcgLSBpbml0aWFsaXNlIHRpbWVzdGFtcGluZwogICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZQpAQCAtOTAwLDExICYjNDM7OTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCWlmIChwcml2LSZndDtwbGF0LSZndDtwdHBfY2xrX2ZyZXFfY29uZmlnKQogCQlwcml2LSZndDtwbGF0LSZndDtwdHBfY2xrX2ZyZXFfY29uZmlnKHByaXYpOwogCi0JaWYgKCEocHJpdi0mZ3Q7ZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtJmd0O2RtYV9jYXAuYXRpbWVfc3RhbXApKSB7Ci0JCW5ldGRldl9pbmZvKHByaXYtJmd0O2RldiwgJiMzNDtQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xuJiMzNDspOwotCQlyZXR1cm4gLUVPUE5PVFNVUFA7Ci0JfQotCiAJcmV0ID0gc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIocHJpdiwgU1RNTUFDX0hXVFNfQUNUSVZFIHwKIAkJCQkJICAgICAgIFBUUF9UQ1JfVFNDRlVQRFQpOwogCWlmIChyZXQpIHsKQEAgLTkzNywyMiAmIzQzOzkzNywzOSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7CiAJaW50IHJldDsKIAomIzQzOwlpZiAoIXN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7CiYjNDM7CQluZXRkZXZfaW5mbyhwcml2LSZndDtkZXYsICYjMzQ7UFRQIG5vdCBzdXBwb3J0ZWQgYnkgSFdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmVmKTsKLQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LAogCQkJICAgICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcbiYjMzQ7LAogCQkJICAgIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmVmKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KIAotCWlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMCkKLQkJc3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTsKJiM0MzsJc3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7CiYjNDM7CWlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpOwogCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LSZndDtwbGF0LSZndDtjbGtfcHRwX3JlZik7CiB9CkBAIC00MTYxLDEwICYjNDM7NDE3OCwxMiBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXQgPSBzdG1tYWNfaHdfc2V0dXAoZGV2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXG4mIzM0OywgX19mdW5jX18pOwotCQlnb3RvIGluaXRfZXJyb3I7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAotCXN0bW1hY19zZXR1cF9wdHAocHJpdik7CiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9wdHAocHJpdik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHB0cF9lcnJvcjsKIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCkBAIC00MTg3LDkgJiM0Mzs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQogCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwotCiAJc3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpOwotaW5pdF9lcnJvcjoKJiM0MztwdHBfZXJyb3I6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtODMyNiwxMyAmIzQzOzgzNDYsMTQgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldCA9IHN0bW1hY19od19zZXR1cChuZGV2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXG4mIzM0OywgX19mdW5jX18pOwotCQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwotCQltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKLQkJcnRubF91bmxvY2soKTsKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZXJyb3JfdW5sb2NrOwogCX0KIAotCXN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7CiYjNDM7CQlyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWdvdG8gZXJyb3Jfc3RvcF9kbWE7CiYjNDM7CX0KIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC04MzU2LDYgJiM0Mzs4Mzc3LDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyb3Jfc3RvcF9kbWE6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7ZXJyb3JfdW5sb2NrOgomIzQzOwlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzdG1tYWMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGl0cyBmdXp6YWJpbGl0eSBhbmQgYW55IHBvdGVudGlhbCBzdHJ1Y3R1cmFsIGxpbWl0YXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgaXMgdGhlIGZpcnN0IGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBXaGF0JiMzOTtzIHRoZSBuYXR1cmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyPyBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLgoKTmV4dCBzdGVwOiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB0aGUgdGFyZ2V0IHBsYXRmb3JtcyBmb3IgYHN0bW1hY2AuIElzIHRoaXMgYSBkcml2ZXIgcHJpbWFyaWx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgaXMgaXQgYWxzbyBjb21tb25seSBlbXVsYXRlZCwgc2F5LCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQ/IEtub3dpbmcgdGhlIGRlcGxveW1lbnQgY29udGV4dCB3aWxsIGluZm9ybSBvdXIgZnV6emluZyBzdHJhdGVneSBjb25zaWRlcmFibHkuCgpNeSBpbnN0aW5jdHMgdGVsbCBtZSB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBkbyBzb21lIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSB3aWxsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBvciBsZXZlcmFnZSBtb3JlIHNwZWNpYWxpemVkIHRvb2xzIHRvIHBpbnBvaW50IHRoZSBtb3N0IHJlbGV2YW50IHVzYWdlIHBhdHRlcm5zIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSB1cyB0b3dhcmRzIHdoZXRoZXIgdGhpcyBpcyBhIGZydWl0ZnVsIGFyZWEgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1NUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBrZXkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgZHJpdmVyIHNob3VsZCBiZSBkZWZpbmVkLiBGcm9tIGhlcmUsIEkgY2FuIGV4YW1pbmUgdGhlIHZhcmlvdXMgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGhlbHAgdGV4dHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IGZlYXR1cmVzIGFyZSBjb250cm9sbGFibGUgYW5kIGhvdyB0aGV5IGludGVyYWN0LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBpdHMgdXNlIGluIGEgc3BlY2lmaWMgZW1iZWRkZWQgc3lzdGVtIG9yIG5ldHdvcmsgc2V0dXAuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBmb3VuZGF0aW9uYWwsIHNvIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDIzOlx0XHRkZWZhdWx0IG5cbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbiAgMjY6XHRcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxuICAyNzpcdFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuICAzMTpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgMzI6XHRcdGRlZmF1bHQgeVxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgMzU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxuICAzNjpcdFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0aWYgU1RNTUFDX1BMQVRGT1JNXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4gIDQ1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXCYjMzQ7XG4gIDQ2Olx0XHRzZWxlY3QgQ1JDMzJcbiAgNDc6XHRcdHNlbGVjdCBNSUlcbiAgNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgRFdNQUNfR0VORVJJQ1xuICA1MzpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXCYjMzQ7XG4gIDU0Olx0XHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4gIDU3Olx0XHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cbiAgNTg6XHRcdCAgZGF0YSBmb3Igc2V0dXAuXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIERXTUFDX0FOQVJJT05cbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0FkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XCYjMzQ7XG4gIDYyOlx0XHRkZWZhdWx0IEFSQ1xuICA2MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXG4gIDY0Olx0XHRoZWxwXG4gIDY1Olx0XHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxuICA2NjpcdFxuICA2NzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIERXTUFDX0VJQzc3MDBcbiAgNzA6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxuICA3NDpcdFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXG4gIDc1Olx0XHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxuICA3NjpcdFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgRFdNQUNfSU5HRU5JQ1xuICA3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5nZW5pYyBNQUMgc3VwcG9ydFwmIzM0O1xuICA4MDpcdFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBsZWFkcyBtZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFNUTU1BQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggUENJIGFuZCBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBhcyBLY29uZmlnIGZpbGVzIGFyZSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIHBvaW50IGZvciBkcml2ZXJzLCBhbmQgUENJL1BDSSBzdXBwb3J0IGlzIGxpa2VseSBjb25kaXRpb25hbGl6ZWQgaW4gc29tZSB3YXkuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyByZWdhcmRpbmcgaW5jbHVkaW5nIG9yIGV4Y2x1ZGluZyBQQ0ktcmVsYXRlZCBmZWF0dXJlcyB3b3VsZCBiZSBtYW5hZ2VkLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHVzZXMgUENJIGFzIGEgdHJhbnNwb3J0IGxheWVyIG9yIGlmIGl0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBidXMgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGNyaXRpY2FsIGZhY3RvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBTVE1NQUMgZGV2aWNlLiBJIG11c3QgYWxzbyBjb25zaWRlciBvdGhlciBwb3RlbnRpYWwgYnVzZXMgb3IgcmVsZXZhbnQgaW50ZXJmYWNlcyBhcyB0aGUgZHJpdmVyIGlzIHZlcnkgbGlrZWx5IHRvIHN1cHBvcnQgbXVsdGlwbGUgYnVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBTdXBwb3J0IGZvciBHaWdhYml0IEV0aGVybmV0IEludGVyZmFjZSAoR0JFVEgpLyBFdGhlcm5ldCBNQUMgKEdNQUMpXG4gMTYyOlx0XHQgIG9uIFJlbmVzYXMgU29Dcy5cbiAxNjM6XHRcbiAxNjQ6XHRcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcbiAxNjU6XHRcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuIDE2NjpcdFx0ICBSWi9OMkggU29Dcy5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgRFdNQUNfUk9DS0NISVBcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAxNzA6XHRcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxuIDE3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuIDE3MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE3NzpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIERXTUFDX1JaTjFcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE4MTpcdFx0ZGVmYXVsdCBBUkNIX1JaTjFcbiAxODI6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxuIDE4MzpcdFx0c2VsZWN0IFBDU19SWk4xX01JSUNcbiAxODQ6XHRcdGhlbHBcbiAxODU6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSZW5lc2FzIFJaL04xIFNvQyBmYW1pbHkuXG4gMTg2Olx0XG4gMTg3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE4ODpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXG4gMTg5Olx0XHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEV01BQ19TMzJcbiAxOTI6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTkzOlx0XHRkZWZhdWx0IEFSQ0hfUzMyXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TMzIgfHwgQ09NUElMRV9URVNUKVxuIDE5NTpcdFx0aGVscFxuIDE5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBTMzJDQyBTT0NzLlxuIDE5NzpcdFxuIDE5ODpcdFx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAxOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xuIDIwMDpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlciwgaWUuIFMzMkcyeHgsIFMzMkczeHggYW5kXG4gMjAxOlx0XHQgIFMzMlI0NS5cbiAyMDI6XHRcbiAyMDM6XHRjb25maWcgRFdNQUNfU09DRlBHQVxuIDIwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxuIDIwNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG4gMjA3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDIwODpcdFx0c2VsZWN0IE1ESU9fUkVHTUFQXG4gMjA5Olx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAyMTA6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuIDIxMTpcdFx0aGVscFxuIDIxMjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXG4gMjEzOlx0XG4gMjE0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQWx0ZXJhIFNPQ0ZQR0EgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIxNTpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxuIDIxNjpcdFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbiAyMTc6XHRcbiAyMTg6XHRjb25maWcgRFdNQUNfU09QSEdPXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlBDSSBLY29uZmlnIFJldmlldyAtIFRpbWUgdG8gRGlnIERlZXBlcioqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIFBDSS1yZWxhdGVkIEtjb25maWcgZW50cmllcywgYnV0IHRoYXQmIzM5O3MganVzdCB0aGUgdGlwIG9mIHRoZSBpY2ViZXJnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgc3VidGxlIGRlcGVuZGVuY2llcywgY29uZGl0aW9uYWwgaW5jbHVzaW9ucywgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSByZXN0IG9mIHRoZSBmaWxlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJhcmVseSBzdHJhaWdodGZvcndhcmQuIFRoZXJlIGFyZSBvZnRlbiBoaWRkZW4gbGF5ZXJzIG9mIGxvZ2ljLCBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzLCBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgYXJlbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mICYjMzQ7UENJLCYjMzQ7ICYjMzQ7UENJRSwmIzM0OyAmIzM0O2J1cywmIzM0OyAmIzM0O2RldmljZSwmIzM0OyAmIzM0O2JyaWRnZSwmIzM0OyBhbnl0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgUENJIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgb3IgdXRpbGl6ZWQuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIHRoZSBkZXRlY3RpdmUgaGF0IGFuZCBtZXRob2RpY2FsbHkgc2NvdXIgdGhlIGVudGlyZSBmaWxlLCBsaW5lIGJ5IGxpbmUsIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcGxldGUgYW5kIGFjY3VyYXRlIHVuZGVyc3RhbmRpbmcgb2YgUENJIHN1cHBvcnQgd2l0aGluIHRoaXMga2VybmVsIGJ1aWxkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSB0aGlzIEtjb25maWcgZmlsZSBpcyBoaWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuIDIyMTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXG4gMjIyOlx0XHRoZWxwXG4gMjIzOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xuIDIyNDpcdFxuIDIyNTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNvcGhnbyBTb0Mgc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjI2Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIyNzpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuIDIyODpcdFxuIDIyOTpcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxuIDIzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIzMTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuIDIzMjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyMzM6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjM4Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIzOTpcdFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNDA6XHRcbiAyNDE6XHRjb25maWcgRFdNQUNfU1RBUkZJVkVcbiAyNDI6XHRcdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyNDM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcbiAyNDQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjQ1Olx0XHRkZWZhdWx0IG0gaWYgQVJDSF9TVEFSRklWRVxuIDI0NjpcdFx0aGVscFxuIDI0NzpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTdGFyRml2ZSBSSVNDLVYgU29Dc1xuIDI0ODpcdFxuIDI0OTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDI1MDpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyNTE6XHRcdCAgU3RhckZpdmUgSkg3MTAwIGFuZCBKSDcxMTAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjUyOlx0XG4gMjUzOlx0Y29uZmlnIERXTUFDX1NUSVxuIDI1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI1NTpcdFx0ZGVmYXVsdCBBUkNIX1NUSVxuIDI1NjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcbiAyNTc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjU4Olx0XHRoZWxwXG4gMjU5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXG4gMjYwOlx0XG4gMjYxOlx0XHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI2MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuIDI2MzpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNjQ6XHRcbiAyNjU6XHRjb25maWcgRFdNQUNfU1RNMzJcbiAyNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAyNjc6XHRcdGRlZmF1bHQgQVJDSF9TVE0zMlxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXG4gMjY5Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI3MDpcdFx0aGVscFxuIDI3MTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXG4gMjcyOlx0XG4gMjczOlx0XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjc0Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcbiAyNzU6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjc2Olx0XG4gMjc3Olx0Y29uZmlnIERXTUFDX1NVTlhJXG4gMjc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjc5Olx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyODA6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyODE6XHRcdGhlbHBcbiAyODI6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEEyMC9BMzEgR01BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyODM6XHRcbiAyODQ6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyODU6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcbiAyODY6XHRcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBEV01BQ19TVU44SVxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI5MDpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjkxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjkyOlx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMjkzOlx0XHRoZWxwXG4gMjk0Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI5NzpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcbiAyOTg6XHRcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYSBuZXR3b3JraW5nIGV4cGVydCBmYW1pbGlhciB3aXRoIHRoZSBMaW51eCBrZXJuZWwgYW5kIFNUTWljcm9lbGVjdHJvbmljcyBoYXJkd2FyZToKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgYXJlIGRlZmluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIHRvIHRoZSB1c2VyIHRocm91Z2ggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUgb3IgZGlzYWJsZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzLCBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cCwgYW5kIHRyb3VibGVzaG9vdCBwb3RlbnRpYWwgaXNzdWVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogc3VwcG9ydCBmb3IgZGlmZmVyZW50IFBIWSBpbnRlcmZhY2VzIChlLmcuLCBSR01JSSwgU0dNSUksIE1JSSksIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGhhcmR3YXJlIGFjY2VsZXJhdG9ycyAoZS5nLiwgY2hlY2tzdW0gb2ZmbG9hZCwgVkxBTiBmaWx0ZXJpbmcpLCBhbmQgcG90ZW50aWFsbHkgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgYWltIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJiMzOTtzIGNhcGFiaWxpdGllcyBhbmQgaG93IHRob3NlIGNhcGFiaWxpdGllcyBjYW4gYmUgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgdGhpcyBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIGluIHJlYWwgdXNlLiBUaGlzIGV4cGxvcmF0aW9uIGlzIGVzc2VudGlhbCBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBkcml2ZXIgY29uZmlndXJhdGlvbiwgY3VzdG9taXphdGlvbiwgYW5kIGNvbnRyaWJ1dGlvbiB0byB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDA6XHRjb25maWcgRFdNQUNfU1VONTVJXG4gMzAxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFwmIzM0O1xuIDMwMjpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMzAzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMzA0Olx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMzA1Olx0XHRoZWxwXG4gMzA2Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAzMDc6XHRcbiAzMDg6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAzMDk6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuIDMxMDpcdFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIERXTUFDX1RIRUFEXG4gMzEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMxNDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcbiAzMTc6XHRcbiAzMTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDMxOTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcbiAzMjA6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuIDM1MDpcdFxuIDM1MTpcdFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAzNTI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTG9vbmdzb24xLWJhc2VkIGJvYXJkc1xuIDM1MzpcdFx0ICBsaWtlIExvb25nc29uIExTMUIvTFMxQy5cbiAzNTQ6XHRcbiAzNTU6XHRjb25maWcgRFdNQUNfVEVHUkFcbiAzNTY6XHRcdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbiAzNTg6XHRcdGhlbHBcbiAzNTk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBNdWx0aS1HaWdhQml0IEV0aGVybmV0IChNR0JFKSBDb250cm9sbGVyIHRoYXQgaXNcbiAzNjA6XHRcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcbiAzNjE6XHRcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG4gMzYyOlx0XHQgIGRldmljZXMuXG4gMzYzOlx0XG4gMzY0Olx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXG4gMzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzNjY6XHRcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuIDM2NzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxuIDM2ODpcdFx0aGVscFxuIDM2OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXG4gMzcwOlx0XG4gMzcxOlx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbiAzNzI6XHRcbiAzNzM6XHRjb25maWcgU1RNTUFDX0xJQlBDSVxuIDM3NDpcdFx0dHJpc3RhdGVcbiAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHJlbWFpbmluZyBsaW5lcyBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZnJvbSBsaW5lIDM4MCBvbndhcmRzLgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBLY29uZmlnIENvbmZpZ3VyYXRpb24gLSBEZWx2aW5nIERlZXBlcioqCgpPa2F5LCBsZXQmIzM5O3MgcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGtlZXAgZGlnZ2luZyBpbnRvIHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdHRlbiBhIGdvb2Qgb3ZlcnZpZXcsIGJ1dCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdG8gc2hvdyB1cCBmdXJ0aGVyIGRvd24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIGVuYWJsZWQgYW5kIGRpc2FibGVkLiBJdCBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBmaW5lciBwb2ludHMgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGN1c3RvbWl6ZWQuIEkgYW50aWNpcGF0ZSBzZWVpbmcgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgU29DcyB0aGUgZHJpdmVyIHN1cHBvcnRzLCBvciBwb3RlbnRpYWxseSwgZmVhdHVyZSBzZXRzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIGN1c3RvbWl6YXRpb24gbGllcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgc2VsZWN0YCBhbmQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgdG8gdW5kZXJzdGFuZCB3aGljaCBvcHRpb25zIGJyaW5nIGluIG90aGVyIHN1cHBvcnRpbmcgY29kZS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIGZvciBjb3JyZWN0bHkgY29uZmlndXJpbmcgdGhpcyBkcml2ZXIgZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybSwgZW5zdXJpbmcgYWxsIG5lY2Vzc2FyeSBjb21wb25lbnRzIGFyZSBpbmNsdWRlZCBhbmQgdGhhdCBjb25mbGljdGluZyBvcHRpb25zIGFyZSBhdm9pZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzc5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBFbXVsYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBzdG1tYWNgIGRyaXZlciwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUg4oCTIHN0dWZmIGxpa2UgdGhlIEludGVsIFF1YXJrL0VITC9UR0wgR01BQywgYW5kIHRob3NlIHZhcmlvdXMgQVJNL1JJU0MtVi9NSVBTIFNvQ3MsIGV2ZW4gdGhlIE1vdG9yY29tbSBZVDY4MDEuIE15IHByaW1hcnkgY29uY2VybiBoZXJlLCBmb3IgdGhlIHB1cnBvc2VzIG9mIG15IHdvcmssIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpcyBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIGVzcGVjaWFsbHkgdGhvc2UgdXNlZCBieSBzeXprYWxsZXIuCgpMZXQmIzM5O3MgZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VICphY3R1YWxseSogZW11bGF0ZXMgYHN0bW1hY2AsIG9yIHRoZSBicm9hZGVyIERlc2lnbldhcmUgRXRoZXJuZXQgKG9yIGBkd21hY2ApIHNldHVwLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggUUVNVSBpdHNlbGYuIExvb2tpbmcgYXQgdmFyaW91cyBBUk0gbWFjaGluZXMsIGxpa2UgQWxsd2lubmVyLCBTVE0zMiwgb3IgT3JhbmdlIFBpLCB0aG9zZSBtaWdodCB2ZXJ5IHdlbGwgdXNlIGBkd21hY2Agb3Igc2ltaWxhciBpbXBsZW1lbnRhdGlvbnMuIEJ1dCBJIG5lZWQgdG8gYmUgZXhhY3QgaGVyZS4gTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgd2hpY2ggaXMgc3BlY2lmaWVkIGluIHRoZSBwcm9tcHQuIFN0YW5kYXJkIFFFTVUgQU1ENjQgaW5zdGFuY2VzIHR5cGljYWxseSBydW4gdGhlIHN0YW5kYXJkIHg4NiBQQyBlbXVsYXRpb24sIHVzaW5nIGVpdGhlciBpNDQwZnggb3IgcTM1IGNoaXBzZXQgYW5kIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmlydGlvLW5ldCwgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgbmUya19wY2ksIHZteG5ldDMsIGFuZCBpZ2IuCgpTbywgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgd2l0aGluIHRoZSBzeXprYWxsZXIgQU1ENjQgZW52aXJvbm1lbnQsIFFFTVUgKmRvZXNuJiMzOTt0KiBhcHBlYXIgdG8gYmUgZW11bGF0aW5nIHRoZSBJbnRlbCBRdWFyay9FSEwgRFdNQUMgb3IgYHN0bW1hY2AgUENJL3BsYXRmb3JtIGRldmljZXMuCgpOb3csIHdoYXQgYWJvdXQgb3RoZXIgaW5zdGFudGlhdGlvbiBtZXRob2RzPyBDYW4gYHN0bW1hY2AgYmUgYnJvdWdodCB1cCB2aWEgbmV0bGluaywgYSB2aXJ0dWFsIGJ1cywgb3IgZXZlbiBVU0IgKHRob3VnaCBJIGtub3cgaXQmIzM5O3Mgbm90IGEgVVNCIGRldmljZSk/IE5vcGUuIFN0bW1hYyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGF0dGFjaGVkIHZpYSBwbGF0Zm9ybSBidXMgb3IgUENJLgoKSSBndWVzcyBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHNwZWNpZmljIGRyaXZlciBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLCBzdWNoIGFzIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGV0Yy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQyNzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNDEKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3Igc3RtbWFjIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBBY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMsIEkgbmVlZCB0byBmb2N1cyBvbiBTZWN0aW9uIDIsIHNwZWNpZmljYWxseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIEl0JiMzOTtzIG9ubHkgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZml0cyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuCgpGaXJzdCwgSSYjMzk7bSBsb29raW5nIGF0IHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LiBUaGUgdGV4dCBzcGVjaWZpZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBzdG1tYWNgICh0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgLyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSBtaWdodCBmYWxsIGludG8gdGhpcy4KCkxldCYjMzk7cyBjb25maXJtLiBJbiBzdGFuZGFyZCB4ODZfNjQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCB0aGUgdHlwaWNhbCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgYXJlIHZpcnRpby1uZXQtcGNpLCBlMTAwMCwgYW5kIHNvIG9uLiBgc3RtbWFjYCBpc24mIzM5O3Qgb24gdGhhdCBsaXN0LiBJdCYjMzk7cyBjbGVhcmx5IGEgZHJpdmVyIGZvciBlbWJlZGRlZCBTb0NzLCBkZWRpY2F0ZWQgUENJIE5JQ3MsIGFuZCBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIEFTSUMvU29DIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciBhbWQ2NCBlbnZpcm9ubWVudHMsIHJpZ2h0PyBUaGVyZSBhcmUgbm8gdmlydHVhbCBidXNlcyBvciBlbXVsYXRlZCBkZXZpY2VzIGZvciBpdCBpbiB0aG9zZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkuIFRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX21haW4uY2AsIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyBsaWtlIGBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcGAsIGBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmdgLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBvdGhlcnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciAoc3BlY2lmaWNhbGx5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGNvZGUgaXMgaGlnaGx5IHNwZWNpZmljIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCYjMzk7cyBub3QgZ2VuZXJpYyBuZXR3b3JrIGNvZGUsIGl0JiMzOTtzIHRpZWQgdG8gcmVhbC13b3JsZCBNQUNzLCBhbmQgU29DIGhhcmR3YXJlLgoKR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIOKAkyBhIGRyaXZlciBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBNQUNzLCByZXF1aXJpbmcgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIFBDSSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzIOKAkyB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5ICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCB0aGUgdmVyZGljdDogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIE5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYCBhcmUgbmVlZGVkLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBzdG1tYWMgZGVhbHMgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBNQUMgZHJpdmVycyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpBbHJpZ2h0LCB0aW1lIHRvIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6MzUuMzAzNDY0MDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwNjk2NTM4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTozNS4zMDM0NjgyNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjgyMTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDcyYzU5ZjI0ZDdmMDYxNTMzNTIyYmUzMjNhZTQyNjdmODM0M2JlOTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLmQzM2M4MmJkM2VlNDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtODg1LDYgKzg4NSwxMSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtXFx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXA7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcgLSBpbml0aWFsaXNlIHRpbWVzdGFtcGluZ1xcbiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuQEAgLTkwMCwxMSArOTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZylcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyhwcml2KTtcXG4gXFxuLVxcdGlmICghKHByaXYtXFx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVxcdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSkge1xcbi1cXHRcXHRuZXRkZXZfaW5mbyhwcml2LVxcdTAwM2VkZXYsIFxcXCJQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tXFx0fVxcbi1cXG4gXFx0cmV0ID0gc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIocHJpdiwgU1RNTUFDX0hXVFNfQUNUSVZFIHxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIFBUUF9UQ1JfVFNDRlVQRFQpO1xcbiBcXHRpZiAocmV0KSB7XFxuQEAgLTkzNywyMiArOTM3LDM5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbitcXHRpZiAoIXN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7XFxuK1xcdFxcdG5ldGRldl9pbmZvKHByaXYtXFx1MDAzZWRldiwgXFxcIlBUUCBub3Qgc3VwcG9ydGVkIGJ5IEhXXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JlZik7XFxuLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmVmKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKVxcbi1cXHRcXHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xcbitcXHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4rXFx0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0c3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpO1xcbiBcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yZWYpO1xcbiB9XFxuQEAgLTQxNjEsMTAgKzQxNzgsMTIgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0Z290byBpbml0X2Vycm9yO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIHB0cF9lcnJvcjtcXG4gXFxuIFxcdHN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpO1xcbiBcXG5AQCAtNDE4Nyw5ICs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4gXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4gXFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xcbi1pbml0X2Vycm9yOlxcbitwdHBfZXJyb3I6XFxuK1xcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC04MzI2LDEzICs4MzQ2LDE0IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4tXFx0XFx0cnRubF91bmxvY2soKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJvcl91bmxvY2s7XFxuIFxcdH1cXG4gXFxuLVxcdHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0aWYgKHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7XFxuK1xcdFxcdHJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBlcnJvcl9zdG9wX2RtYTtcXG4rXFx0fVxcbiBcXG4gXFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cXHUwMDNlcGh5bGluayk7XFxuQEAgLTgzNTYsNiArODM3NywxNSBAQCBpbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycm9yX3N0b3BfZG1hOlxcbitcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbitlcnJvcl91bmxvY2s6XFxuK1xcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuK1xcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6MzUuODcxMjg3OTkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMjUwMTgxMjc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQyBhbmQgc3BlY2lhbGl6ZWQgUENJIEV0aGVybmV0IGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MmM1OWYyNGQ3ZjA2MTUzMzUyMmJlMzIzYWU0MjY3ZjgzNDNiZTkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi5kMzNjODJiZDNlZTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTg4NSw2ICs4ODUsMTEgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90c3RhbXBfY291bnRlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHJldHVybiBwcml2LVx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXA7XG4rfVxuK1xuIC8qKlxuICAqIHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyAtIGluaXRpYWxpc2UgdGltZXN0YW1waW5nXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTkwMCwxMSArOTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnKVxuIFx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyhwcml2KTtcbiBcbi1cdGlmICghKHByaXYtXHUwMDNlZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkpIHtcbi1cdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwiUFRQIG5vdCBzdXBwb3J0ZWQgYnkgSFdcXG5cIik7XG4tXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cdH1cbi1cbiBcdHJldCA9IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHByaXYsIFNUTU1BQ19IV1RTX0FDVElWRSB8XG4gXHRcdFx0XHRcdCAgICAgICBQVFBfVENSX1RTQ0ZVUERUKTtcbiBcdGlmIChyZXQpIHtcbkBAIC05MzcsMjIgKzkzNywzOSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4rc3RhdGljIGludCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuK1x0XHRuZXRkZXZfaW5mbyhwcml2LVx1MDAzZWRldiwgXCJQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcblwiKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4rXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdCAgICBcImZhaWxlZCB0byBlbmFibGUgUFRQIHJlZmVyZW5jZSBjbG9jazogJXBlXFxuXCIsXG4gXHRcdFx0ICAgIEVSUl9QVFIocmV0KSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuIFxuLVx0aWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKVxuLVx0XHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xuK1x0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbitcdGlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpXG4rXHRcdHJldHVybjtcbitcbiBcdHN0bW1hY19wdHBfdW5yZWdpc3Rlcihwcml2KTtcbiBcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuIH1cbkBAIC00MTYxLDEwICs0MTc4LDEyIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiJXM6IEh3IHNldHVwIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4tXHRcdGdvdG8gaW5pdF9lcnJvcjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBwdHBfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTg3LDkgKzQyMDYsMTAgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4rcHRwX2Vycm9yOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTgzMjYsMTMgKzgzNDYsMTQgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAoc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpIHtcbitcdFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XG4rXHR9XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzU2LDYgKzgzNzcsMTUgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK2Vycm9yX3N0b3BfZG1hOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitlcnJvcl91bmxvY2s6XG4rXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTozNS44NzEyOTAzMDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDU5MzI0MzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGl0cyBmdXp6YWJpbGl0eSBhbmQgYW55IHBvdGVudGlhbCBzdHJ1Y3R1cmFsIGxpbWl0YXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgaXMgdGhlIGZpcnN0IGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gU2luY2UgSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBhcmVhLCBteSBpbml0aWFsIHRob3VnaHQgaXM6IFdoYXQncyB0aGUgbmF0dXJlIG9mIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlcj8gV2UgbmVlZCB0byBhc2NlcnRhaW4gaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS5cblxuTmV4dCBzdGVwOiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoZSB0YXJnZXQgcGxhdGZvcm1zIGZvciBgc3RtbWFjYC4gSXMgdGhpcyBhIGRyaXZlciBwcmltYXJpbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGNvbW1vbmx5IGVtdWxhdGVkLCBzYXksIHdpdGhpbiBRRU1VIG9yIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBvbiBhbWQ2ND8gS25vd2luZyB0aGUgZGVwbG95bWVudCBjb250ZXh0IHdpbGwgaW5mb3JtIG91ciBmdXp6aW5nIHN0cmF0ZWd5IGNvbnNpZGVyYWJseS5cblxuTXkgaW5zdGluY3RzIHRlbGwgbWUgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBkbyBzb21lIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSB3aWxsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBvciBsZXZlcmFnZSBtb3JlIHNwZWNpYWxpemVkIHRvb2xzIHRvIHBpbnBvaW50IHRoZSBtb3N0IHJlbGV2YW50IHVzYWdlIHBhdHRlcm5zIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSB1cyB0b3dhcmRzIHdoZXRoZXIgdGhpcyBpcyBhIGZydWl0ZnVsIGFyZWEgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0Ni40NjQ1Mzc0NzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5Mjk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1NUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjQ2LjUyNzQ3MzQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxMzcyNzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSdtIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGtleSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gaGVyZSwgSSBjYW4gZXhhbWluZSB0aGUgdmFyaW91cyBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaGVscCB0ZXh0cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QsIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IGl0cyB1c2UgaW4gYSBzcGVjaWZpYyBlbWJlZGRlZCBzeXN0ZW0gb3IgbmV0d29yayBzZXR1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGlzIGZvdW5kYXRpb25hbCwgc28gbGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0OC40NDEyMDMyNTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0OC40NDEzMzgwMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTk5Nzg0MzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBsZWFkcyBtZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFNUTU1BQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggUENJIGFuZCBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFzIEtjb25maWcgZmlsZXMgYXJlIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gcG9pbnQgZm9yIGRyaXZlcnMsIGFuZCBQQ0kvUENJIHN1cHBvcnQgaXMgbGlrZWx5IGNvbmRpdGlvbmFsaXplZCBpbiBzb21lIHdheS4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIHJlZ2FyZGluZyBpbmNsdWRpbmcgb3IgZXhjbHVkaW5nIFBDSS1yZWxhdGVkIGZlYXR1cmVzIHdvdWxkIGJlIG1hbmFnZWQuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgdXNlcyBQQ0kgYXMgYSB0cmFuc3BvcnQgbGF5ZXIgb3IgaWYgaXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGJ1cyBjb25maWd1cmF0aW9uLiBUaGlzIGNvdWxkIGJlIGEgY3JpdGljYWwgZmFjdG9yIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGZvciB0aGlzIFNUTU1BQyBkZXZpY2UuIEkgbXVzdCBhbHNvIGNvbnNpZGVyIG90aGVyIHBvdGVudGlhbCBidXNlcyBvciByZWxldmFudCBpbnRlcmZhY2VzIGFzIHRoZSBkcml2ZXIgaXMgdmVyeSBsaWtlbHkgdG8gc3VwcG9ydCBtdWx0aXBsZSBidXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6NTAuNDQxMTI2NDQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjUwLjQ0MTI0ODU3NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NjYxNDI1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUENJIEtjb25maWcgUmV2aWV3IC0gVGltZSB0byBEaWcgRGVlcGVyKipcblxuT2theSwgc28gd2UndmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIFBDSS1yZWxhdGVkIEtjb25maWcgZW50cmllcywgYnV0IHRoYXQncyBqdXN0IHRoZSB0aXAgb2YgdGhlIGljZWJlcmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMsIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMsIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgcmVzdCBvZiB0aGUgZmlsZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGVyZSBhcmUgb2Z0ZW4gaGlkZGVuIGxheWVycyBvZiBsb2dpYywgbmVzdGVkIGBpZmAgc3RhdGVtZW50cywgYW5kIGRlcGVuZGVuY2llcyB0aGF0IGFyZW4ndCBpbW1lZGlhdGVseSBvYnZpb3VzLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mIFwiUENJLFwiIFwiUENJRSxcIiBcImJ1cyxcIiBcImRldmljZSxcIiBcImJyaWRnZSxcIiBhbnl0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgUENJIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgb3IgdXRpbGl6ZWQuIEl0J3MgdGltZSB0byBwdXQgb24gdGhlIGRldGVjdGl2ZSBoYXQgYW5kIG1ldGhvZGljYWxseSBzY291ciB0aGUgZW50aXJlIGZpbGUsIGxpbmUgYnkgbGluZSwgdG8gZW5zdXJlIHdlIGhhdmUgYSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgdW5kZXJzdGFuZGluZyBvZiBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhpcyBrZXJuZWwgYnVpbGQuIExldCdzIHNlZSB3aGF0IGVsc2UgdGhpcyBLY29uZmlnIGZpbGUgaXMgaGlkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzAwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Mi45MDczOTQxOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxcbiAyMjE6XFx0XFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXFxuIDIyMjpcXHRcXHRoZWxwXFxuIDIyMzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjI2OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIyNzpcXHRcXHQgIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIHZhcmlvdXMgU29waGdvIFNvQ3MuXFxuIDIyODpcXHRcXG4gMjI5OlxcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbiAyMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNwYWNlbWl0IGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIzMTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NQQUNFTUlUIHx8IENPTVBJTEVfVEVTVClcXG4gMjMyOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDIzMzpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TUEFDRU1JVFxcbiAyMzQ6XFx0XFx0aGVscFxcbiAyMzU6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTcGFjZW1pdCBSSVNDLVYgU29Dc1xcbiAyMzY6XFx0XFxuIDIzNzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIzODpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbiAyMzk6XFx0XFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjQwOlxcdFxcbiAyNDE6XFx0Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuIDI0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiU3RhckZpdmUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjQzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxcbiAyNDQ6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjQ1OlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NUQVJGSVZFXFxuIDI0NjpcXHRcXHRoZWxwXFxuIDI0NzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFN0YXJGaXZlIFJJU0MtViBTb0NzXFxuIDI0ODpcXHRcXG4gMjQ5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTdGFyRml2ZSBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjUwOlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDI1MTpcXHRcXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNTI6XFx0XFxuIDI1MzpcXHRjb25maWcgRFdNQUNfU1RJXFxuIDI1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjU1OlxcdFxcdGRlZmF1bHQgQVJDSF9TVElcXG4gMjU2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG4gMjU3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI1ODpcXHRcXHRoZWxwXFxuIDI1OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Mi45MDc1MTUwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzY5MzI3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhIG5ldHdvcmtpbmcgZXhwZXJ0IGZhbWlsaWFyIHdpdGggdGhlIExpbnV4IGtlcm5lbCBhbmQgU1RNaWNyb2VsZWN0cm9uaWNzIGhhcmR3YXJlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBhbmQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgaG93IHRoZXkncmUgZXhwb3NlZCB0byB0aGUgdXNlciB0aHJvdWdoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcywgb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXAsIGFuZCB0cm91Ymxlc2hvb3QgcG90ZW50aWFsIGlzc3Vlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogc3VwcG9ydCBmb3IgZGlmZmVyZW50IFBIWSBpbnRlcmZhY2VzIChlLmcuLCBSR01JSSwgU0dNSUksIE1JSSksIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGhhcmR3YXJlIGFjY2VsZXJhdG9ycyAoZS5nLiwgY2hlY2tzdW0gb2ZmbG9hZCwgVkxBTiBmaWx0ZXJpbmcpLCBhbmQgcG90ZW50aWFsbHkgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgYWltIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgdGhvc2UgY2FwYWJpbGl0aWVzIGNhbiBiZSB0YWlsb3JlZCB0byBhIHBhcnRpY3VsYXIgc3lzdGVtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29kZSBpcyBzdHJ1Y3R1cmVkIGFyb3VuZCB0aGlzIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gcmVhbCB1c2UuIFRoaXMgZXhwbG9yYXRpb24gaXMgZXNzZW50aWFsIGZvciBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IGRyaXZlciBjb25maWd1cmF0aW9uLCBjdXN0b21pemF0aW9uLCBhbmQgY29udHJpYnV0aW9uIHRvIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjI0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1NS4yNzY4NDU3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDM0MTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XFxuIDM0MjpcXHRcXHQgIFNvQy5cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbiAzNDU6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uMSBHTUFDIHN1cHBvcnRcXFwiXFxuIDM0NjpcXHRcXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxcbiAzNDc6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcXG4gMzQ4OlxcdFxcdGhlbHBcXG4gMzQ5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxcbiAzNTA6XFx0XFxuIDM1MTpcXHRcXHQgIFRoaXMgc2VsZWN0cyBMb29uZ3NvbjEgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzNTI6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXFxuIDM1MzpcXHRcXHQgIGxpa2UgTG9vbmdzb24gTFMxQi9MUzFDLlxcbiAzNTQ6XFx0XFxuIDM1NTpcXHRjb25maWcgRFdNQUNfVEVHUkFcXG4gMzU2OlxcdFxcdHRyaXN0YXRlIFxcXCJOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XFxcIlxcbiAzNTc6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBIHx8IENPTVBJTEVfVEVTVFxcbiAzNTg6XFx0XFx0aGVscFxcbiAzNTk6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE11bHRpLUdpZ2FCaXQgRXRoZXJuZXQgKE1HQkUpIENvbnRyb2xsZXIgdGhhdCBpc1xcbiAzNjA6XFx0XFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxcbiAzNjE6XFx0XFx0ICBsYXllciBvbiB0b3Agb2YgdGhlIHN0bW1hYyBkcml2ZXIgcmVxdWlyZWQgZm9yIHRoZXNlIE5WSURJQSBUZWdyYSBTb0NcXG4gMzYyOlxcdFxcdCAgZGV2aWNlcy5cXG4gMzYzOlxcdFxcbiAzNjQ6XFx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXFxuIDM2NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzNjY6XFx0XFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXFxuIDM2NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxcbiAzNjg6XFx0XFx0aGVscFxcbiAzNjk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXFxuIDM3MDpcXHRcXG4gMzcxOlxcdGVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuIDM3MjpcXHRcXG4gMzczOlxcdGNvbmZpZyBTVE1NQUNfTElCUENJXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZVxcbiAzNzU6XFx0XFx0aGVscFxcbiAzNzY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAzNzc6XFx0XFxuIDM3ODpcXHRjb25maWcgRFdNQUNfSU5URUxcXG4gMzc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjU1LjI3Njk3OThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQyNzI4NzgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHJlbWFpbmluZyBsaW5lcyBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZnJvbSBsaW5lIDM4MCBvbndhcmRzLlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDIEtjb25maWcgQ29uZmlndXJhdGlvbiAtIERlbHZpbmcgRGVlcGVyKipcblxuT2theSwgbGV0J3MgcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGtlZXAgZGlnZ2luZyBpbnRvIHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ3ZlIGFscmVhZHkgZ290dGVuIGEgZ29vZCBvdmVydmlldywgYnV0IEknbSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIHNob3cgdXAgZnVydGhlciBkb3duLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIGVuYWJsZWQgYW5kIGRpc2FibGVkLiBJdCBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBmaW5lciBwb2ludHMgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGN1c3RvbWl6ZWQuIEkgYW50aWNpcGF0ZSBzZWVpbmcgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgU29DcyB0aGUgZHJpdmVyIHN1cHBvcnRzLCBvciBwb3RlbnRpYWxseSwgZmVhdHVyZSBzZXRzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIGN1c3RvbWl6YXRpb24gbGllcy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBzZWxlY3RgIGFuZCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYnJpbmcgaW4gb3RoZXIgc3VwcG9ydGluZyBjb2RlLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIGNvcnJlY3RseSBjb25maWd1cmluZyB0aGlzIGRyaXZlciBmb3IgYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLCBlbnN1cmluZyBhbGwgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGFuZCB0aGF0IGNvbmZsaWN0aW5nIG9wdGlvbnMgYXJlIGF2b2lkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Ny43MDQyNzAzMDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODA6XFx0XFx0ZGVmYXVsdCBYODZcXG4gMzgxOlxcdFxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAzODI6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIEFDUElcXG4gMzg0OlxcdFxcdGhlbHBcXG4gMzg1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlXFxuIDM4NjpcXHRcXHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXFxuIDM4NzpcXHRcXG4gMzg4OlxcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxcbiAzODk6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzOTA6XFx0XFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG4gMzkxOlxcdFxcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAzOTI6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDM5MzpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiAzOTQ6XFx0XFx0aGVscFxcbiAzOTU6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXFxuIDM5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxcbiAzOTc6XFx0XFxuIDM5ODpcXHRjb25maWcgRFdNQUNfTU9UT1JDT01NXFxuIDM5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Ny43MDQzNTUxOTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NTEwNDU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjYCBEcml2ZXIncyBFbXVsYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQsIGlzIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgYW5kIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIOKAkyBzdHVmZiBsaWtlIHRoZSBJbnRlbCBRdWFyay9FSEwvVEdMIEdNQUMsIGFuZCB0aG9zZSB2YXJpb3VzIEFSTS9SSVNDLVYvTUlQUyBTb0NzLCBldmVuIHRoZSBNb3RvcmNvbW0gWVQ2ODAxLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSwgZm9yIHRoZSBwdXJwb3NlcyBvZiBteSB3b3JrLCBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgZW11bGF0ZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBlc3BlY2lhbGx5IHRob3NlIHVzZWQgYnkgc3l6a2FsbGVyLlxuXG5MZXQncyBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIFFFTVUgKmFjdHVhbGx5KiBlbXVsYXRlcyBgc3RtbWFjYCwgb3IgdGhlIGJyb2FkZXIgRGVzaWduV2FyZSBFdGhlcm5ldCAob3IgYGR3bWFjYCkgc2V0dXAuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIFFFTVUgaXRzZWxmLiBMb29raW5nIGF0IHZhcmlvdXMgQVJNIG1hY2hpbmVzLCBsaWtlIEFsbHdpbm5lciwgU1RNMzIsIG9yIE9yYW5nZSBQaSwgdGhvc2UgbWlnaHQgdmVyeSB3ZWxsIHVzZSBgZHdtYWNgIG9yIHNpbWlsYXIgaW1wbGVtZW50YXRpb25zLiBCdXQgSSBuZWVkIHRvIGJlIGV4YWN0IGhlcmUuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgQU1ENjQsIHdoaWNoIGlzIHNwZWNpZmllZCBpbiB0aGUgcHJvbXB0LiBTdGFuZGFyZCBRRU1VIEFNRDY0IGluc3RhbmNlcyB0eXBpY2FsbHkgcnVuIHRoZSBzdGFuZGFyZCB4ODYgUEMgZW11bGF0aW9uLCB1c2luZyBlaXRoZXIgaTQ0MGZ4IG9yIHEzNSBjaGlwc2V0IGFuZCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIHZpcnRpby1uZXQsIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIG5lMmtfcGNpLCB2bXhuZXQzLCBhbmQgaWdiLlxuXG5TbywgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgd2l0aGluIHRoZSBzeXprYWxsZXIgQU1ENjQgZW52aXJvbm1lbnQsIFFFTVUgKmRvZXNuJ3QqIGFwcGVhciB0byBiZSBlbXVsYXRpbmcgdGhlIEludGVsIFF1YXJrL0VITCBEV01BQyBvciBgc3RtbWFjYCBQQ0kvcGxhdGZvcm0gZGV2aWNlcy5cblxuTm93LCB3aGF0IGFib3V0IG90aGVyIGluc3RhbnRpYXRpb24gbWV0aG9kcz8gQ2FuIGBzdG1tYWNgIGJlIGJyb3VnaHQgdXAgdmlhIG5ldGxpbmssIGEgdmlydHVhbCBidXMsIG9yIGV2ZW4gVVNCICh0aG91Z2ggSSBrbm93IGl0J3Mgbm90IGEgVVNCIGRldmljZSk/IE5vcGUuIFN0bW1hYyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGF0dGFjaGVkIHZpYSBwbGF0Zm9ybSBidXMgb3IgUENJLlxuXG5JIGd1ZXNzIGl0J3MgdGltZSB0byBjaGVjayBzcGVjaWZpYyBkcml2ZXIgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscywgc3VjaCBhcyBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWludGVsLmNgLCBldGMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzc5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTI6MDIuMjY5NDYyOTc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMxNzMyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQyNzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUyOjAyLjMzNzc4Njg2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDM1MjY4NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3Igc3RtbWFjIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgQWNjb3JkaW5nIHRvIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zLCBJIG5lZWQgdG8gZm9jdXMgb24gU2VjdGlvbiAyLCBzcGVjaWZpY2FsbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBJdCdzIG9ubHkgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZml0cyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuXG5cbkZpcnN0LCBJJ20gbG9va2luZyBhdCB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gVGhlIHRleHQgc3BlY2lmaWVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgc3RtbWFjYCAodGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIC8gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQykgbWlnaHQgZmFsbCBpbnRvIHRoaXMuXG5cbkxldCdzIGNvbmZpcm0uIEluIHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSB0eXBpY2FsIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBhcmUgdmlydGlvLW5ldC1wY2ksIGUxMDAwLCBhbmQgc28gb24uIGBzdG1tYWNgIGlzbid0IG9uIHRoYXQgbGlzdC4gSXQncyBjbGVhcmx5IGEgZHJpdmVyIGZvciBlbWJlZGRlZCBTb0NzLCBkZWRpY2F0ZWQgUENJIE5JQ3MsIGFuZCBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIEFTSUMvU29DIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIGFtZDY0IGVudmlyb25tZW50cywgcmlnaHQ/IFRoZXJlIGFyZSBubyB2aXJ0dWFsIGJ1c2VzIG9yIGVtdWxhdGVkIGRldmljZXMgZm9yIGl0IGluIHRob3NlIHN0YW5kYXJkIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyB2ZXJpZnkuIFRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX21haW4uY2AsIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyBsaWtlIGBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcGAsIGBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmdgLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBvdGhlcnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciAoc3BlY2lmaWNhbGx5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGNvZGUgaXMgaGlnaGx5IHNwZWNpZmljIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCdzIG5vdCBnZW5lcmljIG5ldHdvcmsgY29kZSwgaXQncyB0aWVkIHRvIHJlYWwtd29ybGQgTUFDcywgYW5kIFNvQyBoYXJkd2FyZS5cblxuR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIOKAkyBhIGRyaXZlciBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBNQUNzLCByZXF1aXJpbmcgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIFBDSSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzIOKAkyB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5ICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0OiBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gTm8gYEZvY3VzU3ltYm9sc2Agb3IgYEVuYWJsZUNvbmZpZ3NgIGFyZSBuZWVkZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIgYW5kIGNvbmNpc2U6IHN0bW1hYyBkZWFscyB3aXRoIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IE1BQyBkcml2ZXJzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuQWxyaWdodCwgdGltZSB0byBleGVjdXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQxLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MjowOC4zNzMwNjE0MTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MjowOC4zNzMxMDMxNDZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgjmr5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 17:49:49 +0000 UTC FinishedAt: 2026-09-05 17:52:09 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQyBhbmQgc3BlY2lhbGl6ZWQgUENJIEV0aGVybmV0IGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcyYzU5ZjI0ZDdmMDYxNTMzNTIyYmUzMjNhZTQyNjdmODM0M2JlOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjUxOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi5kMzNjODJiZDNlZTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTg4NSw2ICYjNDM7ODg1LDExIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gcHJpdi1cdTAwM2VkbWFfY2FwLnRpbWVfc3RhbXAgfHwgcHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyAtIGluaXRpYWxpc2UgdGltZXN0YW1waW5nXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTkwMCwxMSAmIzQzOzkwNSw2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZylcbiBcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZXB0cF9jbGtfZnJlcV9jb25maWcocHJpdik7XG4gXG4tXHRpZiAoIShwcml2LVx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXApKSB7XG4tXHRcdG5ldGRldl9pbmZvKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cdH1cbi1cbiBcdHJldCA9IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHByaXYsIFNUTU1BQ19IV1RTX0FDVElWRSB8XG4gXHRcdFx0XHRcdCAgICAgICBQVFBfVENSX1RTQ0ZVUERUKTtcbiBcdGlmIChyZXQpIHtcbkBAIC05MzcsMjIgJiM0Mzs5MzcsMzkgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuJiM0MztcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O1BUUCBub3Qgc3VwcG9ydGVkIGJ5IEhXXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfd2Fybihwcml2LVx1MDAzZWRldixcbiBcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcXG5cJiMzNDssXG4gXHRcdFx0ICAgIEVSUl9QVFIocmV0KSk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4gXG4tXHRpZiAoc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpID09IDApXG4tXHRcdHN0bW1hY19wdHBfcmVnaXN0ZXIocHJpdik7XG4mIzQzO1x0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdGlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpO1xuIFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VjbGtfcHRwX3JlZik7XG4gfVxuQEAgLTQxNjEsMTAgJiM0Mzs0MTc4LDEyIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi1cdFx0Z290byBpbml0X2Vycm9yO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4mIzQzO1x0cmV0ID0gc3RtbWFjX3NldHVwX3B0cChwcml2KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBwdHBfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTg3LDkgJiM0Mzs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4mIzQzO3B0cF9lcnJvcjpcbiYjNDM7XHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTgzMjYsMTMgJiM0Mzs4MzQ2LDE0IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldCA9IHN0bW1hY19od19zZXR1cChuZGV2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEh3IHNldHVwIGZhaWxlZFxcblwmIzM0OywgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyb3JfdW5sb2NrO1xuIFx0fVxuIFxuLVx0c3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdGlmIChzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuJiM0MztcdFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0Z290byBlcnJvcl9zdG9wX2RtYTtcbiYjNDM7XHR9XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzU2LDYgJiM0Mzs4Mzc3LDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO2Vycm9yX3N0b3BfZG1hOlxuJiM0MztcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4mIzQzO2Vycm9yX3VubG9jazpcbiYjNDM7XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZWxvY2spO1xuJiM0MztcdHJ0bmxfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IGNvbmZpbmVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMpLiBUaGlzIGRyaXZlciBjb250cm9scyBwaHlzaWNhbCBTb0MgYW5kIHNwZWNpYWxpemVkIFBDSSBFdGhlcm5ldCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MmM1OWYyNGQ3ZjA2MTUzMzUyMmJlMzIzYWU0MjY3ZjgzNDNiZTkxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDI0NjU2YjM1MzUwYjEuLmQzM2M4MmJkM2VlNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtODg1LDYgJiM0Mzs4ODUsMTEgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90c3RhbXBfY291bnRlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gcHJpdi0mZ3Q7ZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtJmd0O2RtYV9jYXAuYXRpbWVfc3RhbXA7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcgLSBpbml0aWFsaXNlIHRpbWVzdGFtcGluZwogICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZQpAQCAtOTAwLDExICYjNDM7OTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCWlmIChwcml2LSZndDtwbGF0LSZndDtwdHBfY2xrX2ZyZXFfY29uZmlnKQogCQlwcml2LSZndDtwbGF0LSZndDtwdHBfY2xrX2ZyZXFfY29uZmlnKHByaXYpOwogCi0JaWYgKCEocHJpdi0mZ3Q7ZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtJmd0O2RtYV9jYXAuYXRpbWVfc3RhbXApKSB7Ci0JCW5ldGRldl9pbmZvKHByaXYtJmd0O2RldiwgJiMzNDtQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xuJiMzNDspOwotCQlyZXR1cm4gLUVPUE5PVFNVUFA7Ci0JfQotCiAJcmV0ID0gc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIocHJpdiwgU1RNTUFDX0hXVFNfQUNUSVZFIHwKIAkJCQkJICAgICAgIFBUUF9UQ1JfVFNDRlVQRFQpOwogCWlmIChyZXQpIHsKQEAgLTkzNywyMiAmIzQzOzkzNywzOSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQomIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7CiAJaW50IHJldDsKIAomIzQzOwlpZiAoIXN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7CiYjNDM7CQluZXRkZXZfaW5mbyhwcml2LSZndDtkZXYsICYjMzQ7UFRQIG5vdCBzdXBwb3J0ZWQgYnkgSFdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmVmKTsKLQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKIAkJbmV0ZGV2X3dhcm4ocHJpdi0mZ3Q7ZGV2LAogCQkJICAgICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcbiYjMzQ7LAogCQkJICAgIEVSUl9QVFIocmV0KSk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtJmd0O3BsYXQtJmd0O2Nsa19wdHBfcmVmKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KIAotCWlmIChzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdikgPT0gMCkKLQkJc3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTsKJiM0MzsJc3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiB7CiYjNDM7CWlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJc3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpOwogCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LSZndDtwbGF0LSZndDtjbGtfcHRwX3JlZik7CiB9CkBAIC00MTYxLDEwICYjNDM7NDE3OCwxMiBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXQgPSBzdG1tYWNfaHdfc2V0dXAoZGV2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXG4mIzM0OywgX19mdW5jX18pOwotCQlnb3RvIGluaXRfZXJyb3I7CiYjNDM7CQlyZXR1cm4gcmV0OwogCX0KIAotCXN0bW1hY19zZXR1cF9wdHAocHJpdik7CiYjNDM7CXJldCA9IHN0bW1hY19zZXR1cF9wdHAocHJpdik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIHB0cF9lcnJvcjsKIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCkBAIC00MTg3LDkgJiM0Mzs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQogCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwotCiAJc3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpOwotaW5pdF9lcnJvcjoKJiM0MztwdHBfZXJyb3I6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtODMyNiwxMyAmIzQzOzgzNDYsMTQgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldCA9IHN0bW1hY19od19zZXR1cChuZGV2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDslczogSHcgc2V0dXAgZmFpbGVkXG4mIzM0OywgX19mdW5jX18pOwotCQlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwotCQltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKLQkJcnRubF91bmxvY2soKTsKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZXJyb3JfdW5sb2NrOwogCX0KIAotCXN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTsKJiM0MzsJaWYgKHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7CiYjNDM7CQlyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7CiYjNDM7CQlpZiAocmV0KQomIzQzOwkJCWdvdG8gZXJyb3Jfc3RvcF9kbWE7CiYjNDM7CX0KIAogCXN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CkBAIC04MzU2LDYgJiM0Mzs4Mzc3LDE1IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwogCiAJcmV0dXJuIDA7CiYjNDM7CiYjNDM7ZXJyb3Jfc3RvcF9kbWE6CiYjNDM7CXN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7CiYjNDM7ZXJyb3JfdW5sb2NrOgomIzQzOwlzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwcml2LSZndDtsb2NrKTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzdG1tYWMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGl0cyBmdXp6YWJpbGl0eSBhbmQgYW55IHBvdGVudGlhbCBzdHJ1Y3R1cmFsIGxpbWl0YXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgaXMgdGhlIGZpcnN0IGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gU2luY2UgSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoaXMgYXJlYSwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBXaGF0JiMzOTtzIHRoZSBuYXR1cmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyPyBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLgoKTmV4dCBzdGVwOiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB0aGUgdGFyZ2V0IHBsYXRmb3JtcyBmb3IgYHN0bW1hY2AuIElzIHRoaXMgYSBkcml2ZXIgcHJpbWFyaWx5IGZvciBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgaXMgaXQgYWxzbyBjb21tb25seSBlbXVsYXRlZCwgc2F5LCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgb24gYW1kNjQ/IEtub3dpbmcgdGhlIGRlcGxveW1lbnQgY29udGV4dCB3aWxsIGluZm9ybSBvdXIgZnV6emluZyBzdHJhdGVneSBjb25zaWRlcmFibHkuCgpNeSBpbnN0aW5jdHMgdGVsbCBtZSB3ZSYjMzk7cmUgZ29pbmcgdG8gbmVlZCB0byBkbyBzb21lIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSB3aWxsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBvciBsZXZlcmFnZSBtb3JlIHNwZWNpYWxpemVkIHRvb2xzIHRvIHBpbnBvaW50IHRoZSBtb3N0IHJlbGV2YW50IHVzYWdlIHBhdHRlcm5zIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSB1cyB0b3dhcmRzIHdoZXRoZXIgdGhpcyBpcyBhIGZydWl0ZnVsIGFyZWEgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX1NUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMy1zdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBrZXkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgZHJpdmVyIHNob3VsZCBiZSBkZWZpbmVkLiBGcm9tIGhlcmUsIEkgY2FuIGV4YW1pbmUgdGhlIHZhcmlvdXMgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGhlbHAgdGV4dHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IGZlYXR1cmVzIGFyZSBjb250cm9sbGFibGUgYW5kIGhvdyB0aGV5IGludGVyYWN0LCB3aGljaCBpcyBjcml0aWNhbCBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBpdHMgdXNlIGluIGEgc3BlY2lmaWMgZW1iZWRkZWQgc3lzdGVtIG9yIG5ldHdvcmsgc2V0dXAuIFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBmb3VuZGF0aW9uYWwsIHNvIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1wmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDIzOlx0XHRkZWZhdWx0IG5cbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcbiAgMjY6XHRcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxuICAyNzpcdFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuICAzMTpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgMzI6XHRcdGRlZmF1bHQgeVxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgMzU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxuICAzNjpcdFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0aWYgU1RNTUFDX1BMQVRGT1JNXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG4gIDQ1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXCYjMzQ7XG4gIDQ2Olx0XHRzZWxlY3QgQ1JDMzJcbiAgNDc6XHRcdHNlbGVjdCBNSUlcbiAgNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgRFdNQUNfR0VORVJJQ1xuICA1MzpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXCYjMzQ7XG4gIDU0Olx0XHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG4gIDU3Olx0XHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cbiAgNTg6XHRcdCAgZGF0YSBmb3Igc2V0dXAuXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIERXTUFDX0FOQVJJT05cbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0FkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XCYjMzQ7XG4gIDYyOlx0XHRkZWZhdWx0IEFSQ1xuICA2MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXG4gIDY0Olx0XHRoZWxwXG4gIDY1Olx0XHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxuICA2NjpcdFxuICA2NzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIERXTUFDX0VJQzc3MDBcbiAgNzA6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxuICA3NDpcdFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXG4gIDc1Olx0XHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxuICA3NjpcdFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgRFdNQUNfSU5HRU5JQ1xuICA3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5nZW5pYyBNQUMgc3VwcG9ydFwmIzM0O1xuICA4MDpcdFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBsZWFkcyBtZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFNUTU1BQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggUENJIGFuZCBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBhcyBLY29uZmlnIGZpbGVzIGFyZSB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIHBvaW50IGZvciBkcml2ZXJzLCBhbmQgUENJL1BDSSBzdXBwb3J0IGlzIGxpa2VseSBjb25kaXRpb25hbGl6ZWQgaW4gc29tZSB3YXkuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyByZWdhcmRpbmcgaW5jbHVkaW5nIG9yIGV4Y2x1ZGluZyBQQ0ktcmVsYXRlZCBmZWF0dXJlcyB3b3VsZCBiZSBtYW5hZ2VkLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHVzZXMgUENJIGFzIGEgdHJhbnNwb3J0IGxheWVyIG9yIGlmIGl0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBidXMgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGNyaXRpY2FsIGZhY3RvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBTVE1NQUMgZGV2aWNlLiBJIG11c3QgYWxzbyBjb25zaWRlciBvdGhlciBwb3RlbnRpYWwgYnVzZXMgb3IgcmVsZXZhbnQgaW50ZXJmYWNlcyBhcyB0aGUgZHJpdmVyIGlzIHZlcnkgbGlrZWx5IHRvIHN1cHBvcnQgbXVsdGlwbGUgYnVzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBTdXBwb3J0IGZvciBHaWdhYml0IEV0aGVybmV0IEludGVyZmFjZSAoR0JFVEgpLyBFdGhlcm5ldCBNQUMgKEdNQUMpXG4gMTYyOlx0XHQgIG9uIFJlbmVzYXMgU29Dcy5cbiAxNjM6XHRcbiAxNjQ6XHRcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcbiAxNjU6XHRcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuIDE2NjpcdFx0ICBSWi9OMkggU29Dcy5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgRFdNQUNfUk9DS0NISVBcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAxNzA6XHRcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxuIDE3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuIDE3MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE3NzpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIERXTUFDX1JaTjFcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE4MTpcdFx0ZGVmYXVsdCBBUkNIX1JaTjFcbiAxODI6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxuIDE4MzpcdFx0c2VsZWN0IFBDU19SWk4xX01JSUNcbiAxODQ6XHRcdGhlbHBcbiAxODU6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSZW5lc2FzIFJaL04xIFNvQyBmYW1pbHkuXG4gMTg2Olx0XG4gMTg3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE4ODpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXG4gMTg5Olx0XHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEV01BQ19TMzJcbiAxOTI6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTkzOlx0XHRkZWZhdWx0IEFSQ0hfUzMyXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TMzIgfHwgQ09NUElMRV9URVNUKVxuIDE5NTpcdFx0aGVscFxuIDE5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBTMzJDQyBTT0NzLlxuIDE5NzpcdFxuIDE5ODpcdFx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAxOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xuIDIwMDpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlciwgaWUuIFMzMkcyeHgsIFMzMkczeHggYW5kXG4gMjAxOlx0XHQgIFMzMlI0NS5cbiAyMDI6XHRcbiAyMDM6XHRjb25maWcgRFdNQUNfU09DRlBHQVxuIDIwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxuIDIwNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG4gMjA3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDIwODpcdFx0c2VsZWN0IE1ESU9fUkVHTUFQXG4gMjA5Olx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAyMTA6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuIDIxMTpcdFx0aGVscFxuIDIxMjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXG4gMjEzOlx0XG4gMjE0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQWx0ZXJhIFNPQ0ZQR0EgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIxNTpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxuIDIxNjpcdFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbiAyMTc6XHRcbiAyMTg6XHRjb25maWcgRFdNQUNfU09QSEdPXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlBDSSBLY29uZmlnIFJldmlldyAtIFRpbWUgdG8gRGlnIERlZXBlcioqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIFBDSS1yZWxhdGVkIEtjb25maWcgZW50cmllcywgYnV0IHRoYXQmIzM5O3MganVzdCB0aGUgdGlwIG9mIHRoZSBpY2ViZXJnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgc3VidGxlIGRlcGVuZGVuY2llcywgY29uZGl0aW9uYWwgaW5jbHVzaW9ucywgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZSByZXN0IG9mIHRoZSBmaWxlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJhcmVseSBzdHJhaWdodGZvcndhcmQuIFRoZXJlIGFyZSBvZnRlbiBoaWRkZW4gbGF5ZXJzIG9mIGxvZ2ljLCBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzLCBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgYXJlbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mICYjMzQ7UENJLCYjMzQ7ICYjMzQ7UENJRSwmIzM0OyAmIzM0O2J1cywmIzM0OyAmIzM0O2RldmljZSwmIzM0OyAmIzM0O2JyaWRnZSwmIzM0OyBhbnl0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgUENJIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgb3IgdXRpbGl6ZWQuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIHRoZSBkZXRlY3RpdmUgaGF0IGFuZCBtZXRob2RpY2FsbHkgc2NvdXIgdGhlIGVudGlyZSBmaWxlLCBsaW5lIGJ5IGxpbmUsIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29tcGxldGUgYW5kIGFjY3VyYXRlIHVuZGVyc3RhbmRpbmcgb2YgUENJIHN1cHBvcnQgd2l0aGluIHRoaXMga2VybmVsIGJ1aWxkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSB0aGlzIEtjb25maWcgZmlsZSBpcyBoaWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjIwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuIDIyMTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXG4gMjIyOlx0XHRoZWxwXG4gMjIzOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xuIDIyNDpcdFxuIDIyNTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNvcGhnbyBTb0Mgc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjI2Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIyNzpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuIDIyODpcdFxuIDIyOTpcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxuIDIzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIzMTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuIDIzMjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyMzM6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjM4Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIzOTpcdFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNDA6XHRcbiAyNDE6XHRjb25maWcgRFdNQUNfU1RBUkZJVkVcbiAyNDI6XHRcdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyNDM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcbiAyNDQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjQ1Olx0XHRkZWZhdWx0IG0gaWYgQVJDSF9TVEFSRklWRVxuIDI0NjpcdFx0aGVscFxuIDI0NzpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTdGFyRml2ZSBSSVNDLVYgU29Dc1xuIDI0ODpcdFxuIDI0OTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDI1MDpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyNTE6XHRcdCAgU3RhckZpdmUgSkg3MTAwIGFuZCBKSDcxMTAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjUyOlx0XG4gMjUzOlx0Y29uZmlnIERXTUFDX1NUSVxuIDI1NDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI1NTpcdFx0ZGVmYXVsdCBBUkNIX1NUSVxuIDI1NjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcbiAyNTc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjU4Olx0XHRoZWxwXG4gMjU5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXG4gMjYwOlx0XG4gMjYxOlx0XHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI2MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuIDI2MzpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNjQ6XHRcbiAyNjU6XHRjb25maWcgRFdNQUNfU1RNMzJcbiAyNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAyNjc6XHRcdGRlZmF1bHQgQVJDSF9TVE0zMlxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXG4gMjY5Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI3MDpcdFx0aGVscFxuIDI3MTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXG4gMjcyOlx0XG4gMjczOlx0XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjc0Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcbiAyNzU6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjc2Olx0XG4gMjc3Olx0Y29uZmlnIERXTUFDX1NVTlhJXG4gMjc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjc5Olx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyODA6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyODE6XHRcdGhlbHBcbiAyODI6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEEyMC9BMzEgR01BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyODM6XHRcbiAyODQ6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyODU6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcbiAyODY6XHRcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBEV01BQ19TVU44SVxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI5MDpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjkxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjkyOlx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMjkzOlx0XHRoZWxwXG4gMjk0Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI5NzpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcbiAyOTg6XHRcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjI0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYSBuZXR3b3JraW5nIGV4cGVydCBmYW1pbGlhciB3aXRoIHRoZSBMaW51eCBrZXJuZWwgYW5kIFNUTWljcm9lbGVjdHJvbmljcyBoYXJkd2FyZToKCioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgYXJlIGRlZmluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIHN1cHBvcnRlZCwgYW5kIGhvdyB0aGV5JiMzOTtyZSBleHBvc2VkIHRvIHRoZSB1c2VyIHRocm91Z2ggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUgb3IgZGlzYWJsZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzLCBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR1cCwgYW5kIHRyb3VibGVzaG9vdCBwb3RlbnRpYWwgaXNzdWVzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogc3VwcG9ydCBmb3IgZGlmZmVyZW50IFBIWSBpbnRlcmZhY2VzIChlLmcuLCBSR01JSSwgU0dNSUksIE1JSSksIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGhhcmR3YXJlIGFjY2VsZXJhdG9ycyAoZS5nLiwgY2hlY2tzdW0gb2ZmbG9hZCwgVkxBTiBmaWx0ZXJpbmcpLCBhbmQgcG90ZW50aWFsbHkgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgYWltIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJiMzOTtzIGNhcGFiaWxpdGllcyBhbmQgaG93IHRob3NlIGNhcGFiaWxpdGllcyBjYW4gYmUgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcm91bmQgdGhpcyBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIGluIHJlYWwgdXNlLiBUaGlzIGV4cGxvcmF0aW9uIGlzIGVzc2VudGlhbCBmb3IgbWFraW5nIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBkcml2ZXIgY29uZmlndXJhdGlvbiwgY3VzdG9taXphdGlvbiwgYW5kIGNvbnRyaWJ1dGlvbiB0byB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMDA6XHRjb25maWcgRFdNQUNfU1VONTVJXG4gMzAxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFwmIzM0O1xuIDMwMjpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMzAzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMzA0Olx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMzA1Olx0XHRoZWxwXG4gMzA2Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAzMDc6XHRcbiAzMDg6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAzMDk6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuIDMxMDpcdFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIERXTUFDX1RIRUFEXG4gMzEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMxNDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcbiAzMTc6XHRcbiAzMTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDMxOTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcbiAzMjA6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuIDM1MDpcdFxuIDM1MTpcdFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAzNTI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTG9vbmdzb24xLWJhc2VkIGJvYXJkc1xuIDM1MzpcdFx0ICBsaWtlIExvb25nc29uIExTMUIvTFMxQy5cbiAzNTQ6XHRcbiAzNTU6XHRjb25maWcgRFdNQUNfVEVHUkFcbiAzNTY6XHRcdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbiAzNTg6XHRcdGhlbHBcbiAzNTk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBNdWx0aS1HaWdhQml0IEV0aGVybmV0IChNR0JFKSBDb250cm9sbGVyIHRoYXQgaXNcbiAzNjA6XHRcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcbiAzNjE6XHRcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG4gMzYyOlx0XHQgIGRldmljZXMuXG4gMzYzOlx0XG4gMzY0Olx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXG4gMzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzNjY6XHRcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuIDM2NzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxuIDM2ODpcdFx0aGVscFxuIDM2OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXG4gMzcwOlx0XG4gMzcxOlx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbiAzNzI6XHRcbiAzNzM6XHRjb25maWcgU1RNTUFDX0xJQlBDSVxuIDM3NDpcdFx0dHJpc3RhdGVcbiAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDgxNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHJlbWFpbmluZyBsaW5lcyBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZnJvbSBsaW5lIDM4MCBvbndhcmRzLgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBLY29uZmlnIENvbmZpZ3VyYXRpb24gLSBEZWx2aW5nIERlZXBlcioqCgpPa2F5LCBsZXQmIzM5O3MgcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGtlZXAgZGlnZ2luZyBpbnRvIHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdHRlbiBhIGdvb2Qgb3ZlcnZpZXcsIGJ1dCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdG8gc2hvdyB1cCBmdXJ0aGVyIGRvd24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIGVuYWJsZWQgYW5kIGRpc2FibGVkLiBJdCBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBmaW5lciBwb2ludHMgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGN1c3RvbWl6ZWQuIEkgYW50aWNpcGF0ZSBzZWVpbmcgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgU29DcyB0aGUgZHJpdmVyIHN1cHBvcnRzLCBvciBwb3RlbnRpYWxseSwgZmVhdHVyZSBzZXRzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIGN1c3RvbWl6YXRpb24gbGllcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgc2VsZWN0YCBhbmQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgdG8gdW5kZXJzdGFuZCB3aGljaCBvcHRpb25zIGJyaW5nIGluIG90aGVyIHN1cHBvcnRpbmcgY29kZS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsIGZvciBjb3JyZWN0bHkgY29uZmlndXJpbmcgdGhpcyBkcml2ZXIgZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybSwgZW5zdXJpbmcgYWxsIG5lY2Vzc2FyeSBjb21wb25lbnRzIGFyZSBpbmNsdWRlZCBhbmQgdGhhdCBjb25mbGljdGluZyBvcHRpb25zIGFyZSBhdm9pZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzc5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBFbXVsYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBzdG1tYWNgIGRyaXZlciwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCwgaXMgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgaGFyZHdhcmUg4oCTIHN0dWZmIGxpa2UgdGhlIEludGVsIFF1YXJrL0VITC9UR0wgR01BQywgYW5kIHRob3NlIHZhcmlvdXMgQVJNL1JJU0MtVi9NSVBTIFNvQ3MsIGV2ZW4gdGhlIE1vdG9yY29tbSBZVDY4MDEuIE15IHByaW1hcnkgY29uY2VybiBoZXJlLCBmb3IgdGhlIHB1cnBvc2VzIG9mIG15IHdvcmssIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpcyBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMsIGVzcGVjaWFsbHkgdGhvc2UgdXNlZCBieSBzeXprYWxsZXIuCgpMZXQmIzM5O3MgZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBRRU1VICphY3R1YWxseSogZW11bGF0ZXMgYHN0bW1hY2AsIG9yIHRoZSBicm9hZGVyIERlc2lnbldhcmUgRXRoZXJuZXQgKG9yIGBkd21hY2ApIHNldHVwLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggUUVNVSBpdHNlbGYuIExvb2tpbmcgYXQgdmFyaW91cyBBUk0gbWFjaGluZXMsIGxpa2UgQWxsd2lubmVyLCBTVE0zMiwgb3IgT3JhbmdlIFBpLCB0aG9zZSBtaWdodCB2ZXJ5IHdlbGwgdXNlIGBkd21hY2Agb3Igc2ltaWxhciBpbXBsZW1lbnRhdGlvbnMuIEJ1dCBJIG5lZWQgdG8gYmUgZXhhY3QgaGVyZS4gTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgd2hpY2ggaXMgc3BlY2lmaWVkIGluIHRoZSBwcm9tcHQuIFN0YW5kYXJkIFFFTVUgQU1ENjQgaW5zdGFuY2VzIHR5cGljYWxseSBydW4gdGhlIHN0YW5kYXJkIHg4NiBQQyBlbXVsYXRpb24sIHVzaW5nIGVpdGhlciBpNDQwZnggb3IgcTM1IGNoaXBzZXQgYW5kIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIGxpa2UgdmlydGlvLW5ldCwgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgbmUya19wY2ksIHZteG5ldDMsIGFuZCBpZ2IuCgpTbywgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgd2l0aGluIHRoZSBzeXprYWxsZXIgQU1ENjQgZW52aXJvbm1lbnQsIFFFTVUgKmRvZXNuJiMzOTt0KiBhcHBlYXIgdG8gYmUgZW11bGF0aW5nIHRoZSBJbnRlbCBRdWFyay9FSEwgRFdNQUMgb3IgYHN0bW1hY2AgUENJL3BsYXRmb3JtIGRldmljZXMuCgpOb3csIHdoYXQgYWJvdXQgb3RoZXIgaW5zdGFudGlhdGlvbiBtZXRob2RzPyBDYW4gYHN0bW1hY2AgYmUgYnJvdWdodCB1cCB2aWEgbmV0bGluaywgYSB2aXJ0dWFsIGJ1cywgb3IgZXZlbiBVU0IgKHRob3VnaCBJIGtub3cgaXQmIzM5O3Mgbm90IGEgVVNCIGRldmljZSk/IE5vcGUuIFN0bW1hYyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGF0dGFjaGVkIHZpYSBwbGF0Zm9ybSBidXMgb3IgUENJLgoKSSBndWVzcyBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHNwZWNpZmljIGRyaXZlciBmaWxlcyB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLCBzdWNoIGFzIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGV0Yy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQyNzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNDEKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3Igc3RtbWFjIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZy4mIzM0OyBBY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMsIEkgbmVlZCB0byBmb2N1cyBvbiBTZWN0aW9uIDIsIHNwZWNpZmljYWxseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIEl0JiMzOTtzIG9ubHkgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZml0cyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuCgpGaXJzdCwgSSYjMzk7bSBsb29raW5nIGF0IHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LiBUaGUgdGV4dCBzcGVjaWZpZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBzdG1tYWNgICh0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgLyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDKSBtaWdodCBmYWxsIGludG8gdGhpcy4KCkxldCYjMzk7cyBjb25maXJtLiBJbiBzdGFuZGFyZCB4ODZfNjQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCB0aGUgdHlwaWNhbCBlbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgYXJlIHZpcnRpby1uZXQtcGNpLCBlMTAwMCwgYW5kIHNvIG9uLiBgc3RtbWFjYCBpc24mIzM5O3Qgb24gdGhhdCBsaXN0LiBJdCYjMzk7cyBjbGVhcmx5IGEgZHJpdmVyIGZvciBlbWJlZGRlZCBTb0NzLCBkZWRpY2F0ZWQgUENJIE5JQ3MsIGFuZCBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIEFTSUMvU29DIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIHN5emthbGxlciBhbWQ2NCBlbnZpcm9ubWVudHMsIHJpZ2h0PyBUaGVyZSBhcmUgbm8gdmlydHVhbCBidXNlcyBvciBlbXVsYXRlZCBkZXZpY2VzIGZvciBpdCBpbiB0aG9zZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkuIFRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX21haW4uY2AsIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyBsaWtlIGBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcGAsIGBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmdgLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBvdGhlcnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciAoc3BlY2lmaWNhbGx5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGNvZGUgaXMgaGlnaGx5IHNwZWNpZmljIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCYjMzk7cyBub3QgZ2VuZXJpYyBuZXR3b3JrIGNvZGUsIGl0JiMzOTtzIHRpZWQgdG8gcmVhbC13b3JsZCBNQUNzLCBhbmQgU29DIGhhcmR3YXJlLgoKR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIOKAkyBhIGRyaXZlciBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBNQUNzLCByZXF1aXJpbmcgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIFBDSSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzIOKAkyB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5ICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCB0aGUgdmVyZGljdDogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIE5vIGBGb2N1c1N5bWJvbHNgIG9yIGBFbmFibGVDb25maWdzYCBhcmUgbmVlZGVkLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyIGFuZCBjb25jaXNlOiBzdG1tYWMgZGVhbHMgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBFdGhlcm5ldCBNQUMgZHJpdmVycyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpBbHJpZ2h0LCB0aW1lIHRvIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6MzUuMzAzNDY0MDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwNjk2NTM4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTozNS4zMDM0NjgyNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjgyMTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDcyYzU5ZjI0ZDdmMDYxNTMzNTIyYmUzMjNhZTQyNjdmODM0M2JlOTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLmQzM2M4MmJkM2VlNDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtODg1LDYgKzg4NSwxMSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4re1xcbitcXHRyZXR1cm4gcHJpdi1cXHUwMDNlZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtXFx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXA7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcgLSBpbml0aWFsaXNlIHRpbWVzdGFtcGluZ1xcbiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlXFxuQEAgLTkwMCwxMSArOTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZylcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyhwcml2KTtcXG4gXFxuLVxcdGlmICghKHByaXYtXFx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVxcdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSkge1xcbi1cXHRcXHRuZXRkZXZfaW5mbyhwcml2LVxcdTAwM2VkZXYsIFxcXCJQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tXFx0fVxcbi1cXG4gXFx0cmV0ID0gc3RtbWFjX2luaXRfdHN0YW1wX2NvdW50ZXIocHJpdiwgU1RNTUFDX0hXVFNfQUNUSVZFIHxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIFBUUF9UQ1JfVFNDRlVQRFQpO1xcbiBcXHRpZiAocmV0KSB7XFxuQEAgLTkzNywyMiArOTM3LDM5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXR1cF9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbitcXHRpZiAoIXN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7XFxuK1xcdFxcdG5ldGRldl9pbmZvKHByaXYtXFx1MDAzZWRldiwgXFxcIlBUUCBub3Qgc3VwcG9ydGVkIGJ5IEhXXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VjbGtfcHRwX3JlZik7XFxuLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfd2Fybihwcml2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGVuYWJsZSBQVFAgcmVmZXJlbmNlIGNsb2NrOiAlcGVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBFUlJfUFRSKHJldCkpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNsa19wdHBfcmVmKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4tXFx0aWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKVxcbi1cXHRcXHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xcbitcXHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHN0bW1hY19yZWxlYXNlX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4rXFx0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0c3RtbWFjX3B0cF91bnJlZ2lzdGVyKHByaXYpO1xcbiBcXHRjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY2xrX3B0cF9yZWYpO1xcbiB9XFxuQEAgLTQxNjEsMTAgKzQxNzgsMTIgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0Z290byBpbml0X2Vycm9yO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIHB0cF9lcnJvcjtcXG4gXFxuIFxcdHN0bW1hY19pbml0X2NvYWxlc2NlKHByaXYpO1xcbiBcXG5AQCAtNDE4Nyw5ICs0MjA2LDEwIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcXG4gXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xcbi1cXG4gXFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xcbi1pbml0X2Vycm9yOlxcbitwdHBfZXJyb3I6XFxuK1xcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC04MzI2LDEzICs4MzQ2LDE0IEBAIGludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRuZXRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4tXFx0XFx0c3RtbWFjX2xlZ2FjeV9zZXJkZXNfcG93ZXJfZG93bihwcml2KTtcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrKTtcXG4tXFx0XFx0cnRubF91bmxvY2soKTtcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBlcnJvcl91bmxvY2s7XFxuIFxcdH1cXG4gXFxuLVxcdHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0aWYgKHN0bW1hY19jaGVja190aW1lc3RhbXBfY2FwKHByaXYpKSB7XFxuK1xcdFxcdHJldCA9IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KTtcXG4rXFx0XFx0aWYgKHJldClcXG4rXFx0XFx0XFx0Z290byBlcnJvcl9zdG9wX2RtYTtcXG4rXFx0fVxcbiBcXG4gXFx0c3RtbWFjX2luaXRfY29hbGVzY2UocHJpdik7XFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cXHUwMDNlcGh5bGluayk7XFxuQEAgLTgzNTYsNiArODM3NywxNSBAQCBpbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycm9yX3N0b3BfZG1hOlxcbitcXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xcbitlcnJvcl91bmxvY2s6XFxuK1xcdHN0bW1hY19sZWdhY3lfc2VyZGVzX3Bvd2VyX2Rvd24ocHJpdik7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuK1xcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19yZXN1bWUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6MzUuODcxMjg3OTkxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMjUwMTgxMjc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBhcmUgc3RyaWN0bHkgY29uZmluZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYykuIFRoaXMgZHJpdmVyIGNvbnRyb2xzIHBoeXNpY2FsIFNvQyBhbmQgc3BlY2lhbGl6ZWQgUENJIEV0aGVybmV0IGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3MmM1OWYyNGQ3ZjA2MTUzMzUyMmJlMzIzYWU0MjY3ZjgzNDNiZTkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzo1MTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi5kMzNjODJiZDNlZTQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTg4NSw2ICs4ODUsMTEgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90c3RhbXBfY291bnRlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuK3tcbitcdHJldHVybiBwcml2LVx1MDAzZWRtYV9jYXAudGltZV9zdGFtcCB8fCBwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXA7XG4rfVxuK1xuIC8qKlxuICAqIHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyAtIGluaXRpYWxpc2UgdGltZXN0YW1waW5nXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTkwMCwxMSArOTA1LDYgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwdHBfY2xrX2ZyZXFfY29uZmlnKVxuIFx0XHRwcml2LVx1MDAzZXBsYXQtXHUwMDNlcHRwX2Nsa19mcmVxX2NvbmZpZyhwcml2KTtcbiBcbi1cdGlmICghKHByaXYtXHUwMDNlZG1hX2NhcC50aW1lX3N0YW1wIHx8IHByaXYtXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkpIHtcbi1cdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwiUFRQIG5vdCBzdXBwb3J0ZWQgYnkgSFdcXG5cIik7XG4tXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cdH1cbi1cbiBcdHJldCA9IHN0bW1hY19pbml0X3RzdGFtcF9jb3VudGVyKHByaXYsIFNUTU1BQ19IV1RTX0FDVElWRSB8XG4gXHRcdFx0XHRcdCAgICAgICBQVFBfVENSX1RTQ0ZVUERUKTtcbiBcdGlmIChyZXQpIHtcbkBAIC05MzcsMjIgKzkzNywzOSBAQCBzdGF0aWMgaW50IHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4rc3RhdGljIGludCBzdG1tYWNfc2V0dXBfcHRwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKCFzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcChwcml2KSkge1xuK1x0XHRuZXRkZXZfaW5mbyhwcml2LVx1MDAzZWRldiwgXCJQVFAgbm90IHN1cHBvcnRlZCBieSBIV1xcblwiKTtcbitcdFx0cmV0dXJuIDA7XG4rXHR9XG4rXG4gXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNsa19wdHBfcmVmKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4rXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl93YXJuKHByaXYtXHUwMDNlZGV2LFxuIFx0XHRcdCAgICBcImZhaWxlZCB0byBlbmFibGUgUFRQIHJlZmVyZW5jZSBjbG9jazogJXBlXFxuXCIsXG4gXHRcdFx0ICAgIEVSUl9QVFIocmV0KSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXQgPSBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuIFxuLVx0aWYgKHN0bW1hY19pbml0X3RpbWVzdGFtcGluZyhwcml2KSA9PSAwKVxuLVx0XHRzdG1tYWNfcHRwX3JlZ2lzdGVyKHByaXYpO1xuK1x0c3RtbWFjX3B0cF9yZWdpc3Rlcihwcml2KTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdG1tYWNfcmVsZWFzZV9wdHAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbitcdGlmICghc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpXG4rXHRcdHJldHVybjtcbitcbiBcdHN0bW1hY19wdHBfdW5yZWdpc3Rlcihwcml2KTtcbiBcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZXBsYXQtXHUwMDNlY2xrX3B0cF9yZWYpO1xuIH1cbkBAIC00MTYxLDEwICs0MTc4LDEyIEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiJXM6IEh3IHNldHVwIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4tXHRcdGdvdG8gaW5pdF9lcnJvcjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG4rXHRyZXQgPSBzdG1tYWNfc2V0dXBfcHRwKHByaXYpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBwdHBfZXJyb3I7XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcbkBAIC00MTg3LDkgKzQyMDYsMTAgQEAgc3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpO1xuLVxuIFx0c3RtbWFjX3JlbGVhc2VfcHRwKHByaXYpO1xuLWluaXRfZXJyb3I6XG4rcHRwX2Vycm9yOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTgzMjYsMTMgKzgzNDYsMTQgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcIiVzOiBIdyBzZXR1cCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuLVx0XHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuLVx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdFx0cnRubF91bmxvY2soKTtcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBlcnJvcl91bmxvY2s7XG4gXHR9XG4gXG4tXHRzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcocHJpdik7XG4rXHRpZiAoc3RtbWFjX2NoZWNrX3RpbWVzdGFtcF9jYXAocHJpdikpIHtcbitcdFx0cmV0ID0gc3RtbWFjX2luaXRfdGltZXN0YW1waW5nKHByaXYpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGdvdG8gZXJyb3Jfc3RvcF9kbWE7XG4rXHR9XG4gXG4gXHRzdG1tYWNfaW5pdF9jb2FsZXNjZShwcml2KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC04MzU2LDYgKzgzNzcsMTUgQEAgaW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK2Vycm9yX3N0b3BfZG1hOlxuK1x0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcbitlcnJvcl91bmxvY2s6XG4rXHRzdG1tYWNfbGVnYWN5X3NlcmRlc19wb3dlcl9kb3duKHByaXYpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4rXHRydG5sX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTozNS44NzEyOTAzMDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDU5MzI0MzE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGl0cyBmdXp6YWJpbGl0eSBhbmQgYW55IHBvdGVudGlhbCBzdHJ1Y3R1cmFsIGxpbWl0YXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgdGFyZ2V0cyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgaXMgdGhlIGZpcnN0IGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gU2luY2UgSSdtIGZhbWlsaWFyIHdpdGggdGhpcyBhcmVhLCBteSBpbml0aWFsIHRob3VnaHQgaXM6IFdoYXQncyB0aGUgbmF0dXJlIG9mIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlcj8gV2UgbmVlZCB0byBhc2NlcnRhaW4gaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS5cblxuTmV4dCBzdGVwOiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoZSB0YXJnZXQgcGxhdGZvcm1zIGZvciBgc3RtbWFjYC4gSXMgdGhpcyBhIGRyaXZlciBwcmltYXJpbHkgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGNvbW1vbmx5IGVtdWxhdGVkLCBzYXksIHdpdGhpbiBRRU1VIG9yIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBvbiBhbWQ2ND8gS25vd2luZyB0aGUgZGVwbG95bWVudCBjb250ZXh0IHdpbGwgaW5mb3JtIG91ciBmdXp6aW5nIHN0cmF0ZWd5IGNvbnNpZGVyYWJseS5cblxuTXkgaW5zdGluY3RzIHRlbGwgbWUgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBkbyBzb21lIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSB3aWxsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBjb2RlYmFzZSBvciBsZXZlcmFnZSBtb3JlIHNwZWNpYWxpemVkIHRvb2xzIHRvIHBpbnBvaW50IHRoZSBtb3N0IHJlbGV2YW50IHVzYWdlIHBhdHRlcm5zIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMuIFRoaXMgYW5hbHlzaXMgd2lsbCBndWlkZSB1cyB0b3dhcmRzIHdoZXRoZXIgdGhpcyBpcyBhIGZydWl0ZnVsIGFyZWEgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0Ni40NjQ1Mzc0NzNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5Mjk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1NUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfU1RNTUFDX0VUSCkgKz0gc3RtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS0zLXN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjQ2LjUyNzQ3MzQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTkxMzcyNzA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSdtIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGtleSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gaGVyZSwgSSBjYW4gZXhhbWluZSB0aGUgdmFyaW91cyBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaGVscCB0ZXh0cy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgZmVhdHVyZXMgYXJlIGNvbnRyb2xsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QsIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IGl0cyB1c2UgaW4gYSBzcGVjaWZpYyBlbWJlZGRlZCBzeXN0ZW0gb3IgbmV0d29yayBzZXR1cC4gVW5kZXJzdGFuZGluZyB0aGlzIGlzIGZvdW5kYXRpb25hbCwgc28gbGV0J3MgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0OC40NDEyMDMyNTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBEV01BQ19HRU5FUklDXFxuICA1MzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXFxcIlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYW55XFxuICA1NzpcXHRcXHQgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgdG8gZnVuY3Rpb24gb3IgaXMgdXNpbmcgcGxhdGZvcm1cXG4gIDU4OlxcdFxcdCAgZGF0YSBmb3Igc2V0dXAuXFxuICA1OTpcXHRcXG4gIDYwOlxcdGNvbmZpZyBEV01BQ19BTkFSSU9OXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZWZhdWx0IEFSQ1xcbiAgNjM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgRFdNQUNfRUlDNzcwMFxcbiAgNzA6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXFxuICA3MjpcXHRcXHRoZWxwXFxuICA3MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXFxuICA3NDpcXHRcXHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcXG4gIDc1OlxcdFxcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXFxuICA3NjpcXHRcXHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgRFdNQUNfSU5HRU5JQ1xcbiAgNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZ2VuaWMgTUFDIHN1cHBvcnRcXFwiXFxuICA4MDpcXHRcXHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo0OC40NDEzMzgwMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTk5Nzg0MzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBsZWFkcyBtZSB0byBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIFNUTU1BQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggUENJIGFuZCBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFzIEtjb25maWcgZmlsZXMgYXJlIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gcG9pbnQgZm9yIGRyaXZlcnMsIGFuZCBQQ0kvUENJIHN1cHBvcnQgaXMgbGlrZWx5IGNvbmRpdGlvbmFsaXplZCBpbiBzb21lIHdheS4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIHJlZ2FyZGluZyBpbmNsdWRpbmcgb3IgZXhjbHVkaW5nIFBDSS1yZWxhdGVkIGZlYXR1cmVzIHdvdWxkIGJlIG1hbmFnZWQuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgdXNlcyBQQ0kgYXMgYSB0cmFuc3BvcnQgbGF5ZXIgb3IgaWYgaXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGJ1cyBjb25maWd1cmF0aW9uLiBUaGlzIGNvdWxkIGJlIGEgY3JpdGljYWwgZmFjdG9yIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGZvciB0aGlzIFNUTU1BQyBkZXZpY2UuIEkgbXVzdCBhbHNvIGNvbnNpZGVyIG90aGVyIHBvdGVudGlhbCBidXNlcyBvciByZWxldmFudCBpbnRlcmZhY2VzIGFzIHRoZSBkcml2ZXIgaXMgdmVyeSBsaWtlbHkgdG8gc3VwcG9ydCBtdWx0aXBsZSBidXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTE6NTAuNDQxMTI2NDQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjUwLjQ0MTI0ODU3NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0NjYxNDI1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUENJIEtjb25maWcgUmV2aWV3IC0gVGltZSB0byBEaWcgRGVlcGVyKipcblxuT2theSwgc28gd2UndmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIFBDSS1yZWxhdGVkIEtjb25maWcgZW50cmllcywgYnV0IHRoYXQncyBqdXN0IHRoZSB0aXAgb2YgdGhlIGljZWJlcmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMsIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMsIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgcmVzdCBvZiB0aGUgZmlsZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSByYXJlbHkgc3RyYWlnaHRmb3J3YXJkLiBUaGVyZSBhcmUgb2Z0ZW4gaGlkZGVuIGxheWVycyBvZiBsb2dpYywgbmVzdGVkIGBpZmAgc3RhdGVtZW50cywgYW5kIGRlcGVuZGVuY2llcyB0aGF0IGFyZW4ndCBpbW1lZGlhdGVseSBvYnZpb3VzLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXZSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtZW50aW9uIG9mIFwiUENJLFwiIFwiUENJRSxcIiBcImJ1cyxcIiBcImRldmljZSxcIiBcImJyaWRnZSxcIiBhbnl0aGluZyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgUENJIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgb3IgdXRpbGl6ZWQuIEl0J3MgdGltZSB0byBwdXQgb24gdGhlIGRldGVjdGl2ZSBoYXQgYW5kIG1ldGhvZGljYWxseSBzY291ciB0aGUgZW50aXJlIGZpbGUsIGxpbmUgYnkgbGluZSwgdG8gZW5zdXJlIHdlIGhhdmUgYSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgdW5kZXJzdGFuZGluZyBvZiBQQ0kgc3VwcG9ydCB3aXRoaW4gdGhpcyBrZXJuZWwgYnVpbGQuIExldCdzIHNlZSB3aGF0IGVsc2UgdGhpcyBLY29uZmlnIGZpbGUgaXMgaGlkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzAwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Mi45MDczOTQxOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxcbiAyMjE6XFx0XFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXFxuIDIyMjpcXHRcXHRoZWxwXFxuIDIyMzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU29waGdvIFNvQyBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjI2OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIyNzpcXHRcXHQgIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIHZhcmlvdXMgU29waGdvIFNvQ3MuXFxuIDIyODpcXHRcXG4gMjI5OlxcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbiAyMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNwYWNlbWl0IGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIzMTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NQQUNFTUlUIHx8IENPTVBJTEVfVEVTVClcXG4gMjMyOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDIzMzpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TUEFDRU1JVFxcbiAyMzQ6XFx0XFx0aGVscFxcbiAyMzU6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTcGFjZW1pdCBSSVNDLVYgU29Dc1xcbiAyMzY6XFx0XFxuIDIzNzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIzODpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbiAyMzk6XFx0XFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjQwOlxcdFxcbiAyNDE6XFx0Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuIDI0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiU3RhckZpdmUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjQzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxcbiAyNDQ6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjQ1OlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NUQVJGSVZFXFxuIDI0NjpcXHRcXHRoZWxwXFxuIDI0NzpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFN0YXJGaXZlIFJJU0MtViBTb0NzXFxuIDI0ODpcXHRcXG4gMjQ5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTdGFyRml2ZSBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjUwOlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDI1MTpcXHRcXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNTI6XFx0XFxuIDI1MzpcXHRjb25maWcgRFdNQUNfU1RJXFxuIDI1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjU1OlxcdFxcdGRlZmF1bHQgQVJDSF9TVElcXG4gMjU2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG4gMjU3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI1ODpcXHRcXHRoZWxwXFxuIDI1OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Mi45MDc1MTUwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzY5MzI3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhIG5ldHdvcmtpbmcgZXhwZXJ0IGZhbWlsaWFyIHdpdGggdGhlIExpbnV4IGtlcm5lbCBhbmQgU1RNaWNyb2VsZWN0cm9uaWNzIGhhcmR3YXJlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBhbmQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgaG93IHRoZXkncmUgZXhwb3NlZCB0byB0aGUgdXNlciB0aHJvdWdoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcywgb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXAsIGFuZCB0cm91Ymxlc2hvb3QgcG90ZW50aWFsIGlzc3Vlcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogc3VwcG9ydCBmb3IgZGlmZmVyZW50IFBIWSBpbnRlcmZhY2VzIChlLmcuLCBSR01JSSwgU0dNSUksIE1JSSksIHRoZSBwcmVzZW5jZSBvZiB2YXJpb3VzIGhhcmR3YXJlIGFjY2VsZXJhdG9ycyAoZS5nLiwgY2hlY2tzdW0gb2ZmbG9hZCwgVkxBTiBmaWx0ZXJpbmcpLCBhbmQgcG90ZW50aWFsbHkgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgYWltIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBob3cgdGhvc2UgY2FwYWJpbGl0aWVzIGNhbiBiZSB0YWlsb3JlZCB0byBhIHBhcnRpY3VsYXIgc3lzdGVtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29kZSBpcyBzdHJ1Y3R1cmVkIGFyb3VuZCB0aGlzIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gcmVhbCB1c2UuIFRoaXMgZXhwbG9yYXRpb24gaXMgZXNzZW50aWFsIGZvciBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IGRyaXZlciBjb25maWd1cmF0aW9uLCBjdXN0b21pemF0aW9uLCBhbmQgY29udHJpYnV0aW9uIHRvIHRoZSBwcm9qZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjI0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1NS4yNzY4NDU3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDM0MTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XFxuIDM0MjpcXHRcXHQgIFNvQy5cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbiAzNDU6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uMSBHTUFDIHN1cHBvcnRcXFwiXFxuIDM0NjpcXHRcXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxcbiAzNDc6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcXG4gMzQ4OlxcdFxcdGhlbHBcXG4gMzQ5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxcbiAzNTA6XFx0XFxuIDM1MTpcXHRcXHQgIFRoaXMgc2VsZWN0cyBMb29uZ3NvbjEgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzNTI6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXFxuIDM1MzpcXHRcXHQgIGxpa2UgTG9vbmdzb24gTFMxQi9MUzFDLlxcbiAzNTQ6XFx0XFxuIDM1NTpcXHRjb25maWcgRFdNQUNfVEVHUkFcXG4gMzU2OlxcdFxcdHRyaXN0YXRlIFxcXCJOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XFxcIlxcbiAzNTc6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBIHx8IENPTVBJTEVfVEVTVFxcbiAzNTg6XFx0XFx0aGVscFxcbiAzNTk6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE11bHRpLUdpZ2FCaXQgRXRoZXJuZXQgKE1HQkUpIENvbnRyb2xsZXIgdGhhdCBpc1xcbiAzNjA6XFx0XFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxcbiAzNjE6XFx0XFx0ICBsYXllciBvbiB0b3Agb2YgdGhlIHN0bW1hYyBkcml2ZXIgcmVxdWlyZWQgZm9yIHRoZXNlIE5WSURJQSBUZWdyYSBTb0NcXG4gMzYyOlxcdFxcdCAgZGV2aWNlcy5cXG4gMzYzOlxcdFxcbiAzNjQ6XFx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXFxuIDM2NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzNjY6XFx0XFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXFxuIDM2NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxcbiAzNjg6XFx0XFx0aGVscFxcbiAzNjk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXFxuIDM3MDpcXHRcXG4gMzcxOlxcdGVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuIDM3MjpcXHRcXG4gMzczOlxcdGNvbmZpZyBTVE1NQUNfTElCUENJXFxuIDM3NDpcXHRcXHR0cmlzdGF0ZVxcbiAzNzU6XFx0XFx0aGVscFxcbiAzNzY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAzNzc6XFx0XFxuIDM3ODpcXHRjb25maWcgRFdNQUNfSU5URUxcXG4gMzc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUxOjU1LjI3Njk3OThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQyNzI4NzgyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHJlbWFpbmluZyBsaW5lcyBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZnJvbSBsaW5lIDM4MCBvbndhcmRzLlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDIEtjb25maWcgQ29uZmlndXJhdGlvbiAtIERlbHZpbmcgRGVlcGVyKipcblxuT2theSwgbGV0J3MgcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGtlZXAgZGlnZ2luZyBpbnRvIHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ3ZlIGFscmVhZHkgZ290dGVuIGEgZ29vZCBvdmVydmlldywgYnV0IEknbSBleHBlY3Rpbmcgc29tZSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIHNob3cgdXAgZnVydGhlciBkb3duLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgYXJlIGVuYWJsZWQgYW5kIGRpc2FibGVkLiBJdCBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBmaW5lciBwb2ludHMgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGN1c3RvbWl6ZWQuIEkgYW50aWNpcGF0ZSBzZWVpbmcgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgU29DcyB0aGUgZHJpdmVyIHN1cHBvcnRzLCBvciBwb3RlbnRpYWxseSwgZmVhdHVyZSBzZXRzLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIGN1c3RvbWl6YXRpb24gbGllcy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBzZWxlY3RgIGFuZCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cyB0byB1bmRlcnN0YW5kIHdoaWNoIG9wdGlvbnMgYnJpbmcgaW4gb3RoZXIgc3VwcG9ydGluZyBjb2RlLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgZm9yIGNvcnJlY3RseSBjb25maWd1cmluZyB0aGlzIGRyaXZlciBmb3IgYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLCBlbnN1cmluZyBhbGwgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGFuZCB0aGF0IGNvbmZsaWN0aW5nIG9wdGlvbnMgYXJlIGF2b2lkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODE3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Ny43MDQyNzAzMDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODA6XFx0XFx0ZGVmYXVsdCBYODZcXG4gMzgxOlxcdFxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAzODI6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIEFDUElcXG4gMzg0OlxcdFxcdGhlbHBcXG4gMzg1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlXFxuIDM4NjpcXHRcXHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXFxuIDM4NzpcXHRcXG4gMzg4OlxcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxcbiAzODk6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbiAzOTA6XFx0XFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG4gMzkxOlxcdFxcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAzOTI6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDM5MzpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiAzOTQ6XFx0XFx0aGVscFxcbiAzOTU6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIExPT05HU09OIFBDSSBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIsXFxuIDM5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTG9vbmdzb24tMksxMDAwIFNvQyBhbmQgTFM3QTEwMDAgYnJpZGdlLlxcbiAzOTc6XFx0XFxuIDM5ODpcXHRjb25maWcgRFdNQUNfTU9UT1JDT01NXFxuIDM5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MTo1Ny43MDQzNTUxOTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NTEwNDU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjYCBEcml2ZXIncyBFbXVsYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgc3RtbWFjYCBkcml2ZXIsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQsIGlzIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgYW5kIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlIOKAkyBzdHVmZiBsaWtlIHRoZSBJbnRlbCBRdWFyay9FSEwvVEdMIEdNQUMsIGFuZCB0aG9zZSB2YXJpb3VzIEFSTS9SSVNDLVYvTUlQUyBTb0NzLCBldmVuIHRoZSBNb3RvcmNvbW0gWVQ2ODAxLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSwgZm9yIHRoZSBwdXJwb3NlcyBvZiBteSB3b3JrLCBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaXMgZW11bGF0ZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBlc3BlY2lhbGx5IHRob3NlIHVzZWQgYnkgc3l6a2FsbGVyLlxuXG5MZXQncyBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIFFFTVUgKmFjdHVhbGx5KiBlbXVsYXRlcyBgc3RtbWFjYCwgb3IgdGhlIGJyb2FkZXIgRGVzaWduV2FyZSBFdGhlcm5ldCAob3IgYGR3bWFjYCkgc2V0dXAuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIFFFTVUgaXRzZWxmLiBMb29raW5nIGF0IHZhcmlvdXMgQVJNIG1hY2hpbmVzLCBsaWtlIEFsbHdpbm5lciwgU1RNMzIsIG9yIE9yYW5nZSBQaSwgdGhvc2UgbWlnaHQgdmVyeSB3ZWxsIHVzZSBgZHdtYWNgIG9yIHNpbWlsYXIgaW1wbGVtZW50YXRpb25zLiBCdXQgSSBuZWVkIHRvIGJlIGV4YWN0IGhlcmUuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgQU1ENjQsIHdoaWNoIGlzIHNwZWNpZmllZCBpbiB0aGUgcHJvbXB0LiBTdGFuZGFyZCBRRU1VIEFNRDY0IGluc3RhbmNlcyB0eXBpY2FsbHkgcnVuIHRoZSBzdGFuZGFyZCB4ODYgUEMgZW11bGF0aW9uLCB1c2luZyBlaXRoZXIgaTQ0MGZ4IG9yIHEzNSBjaGlwc2V0IGFuZCB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIHZpcnRpby1uZXQsIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIG5lMmtfcGNpLCB2bXhuZXQzLCBhbmQgaWdiLlxuXG5TbywgdGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgd2l0aGluIHRoZSBzeXprYWxsZXIgQU1ENjQgZW52aXJvbm1lbnQsIFFFTVUgKmRvZXNuJ3QqIGFwcGVhciB0byBiZSBlbXVsYXRpbmcgdGhlIEludGVsIFF1YXJrL0VITCBEV01BQyBvciBgc3RtbWFjYCBQQ0kvcGxhdGZvcm0gZGV2aWNlcy5cblxuTm93LCB3aGF0IGFib3V0IG90aGVyIGluc3RhbnRpYXRpb24gbWV0aG9kcz8gQ2FuIGBzdG1tYWNgIGJlIGJyb3VnaHQgdXAgdmlhIG5ldGxpbmssIGEgdmlydHVhbCBidXMsIG9yIGV2ZW4gVVNCICh0aG91Z2ggSSBrbm93IGl0J3Mgbm90IGEgVVNCIGRldmljZSk/IE5vcGUuIFN0bW1hYyBpcyBhIHBoeXNpY2FsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGF0dGFjaGVkIHZpYSBwbGF0Zm9ybSBidXMgb3IgUENJLlxuXG5JIGd1ZXNzIGl0J3MgdGltZSB0byBjaGVjayBzcGVjaWZpYyBkcml2ZXIgZmlsZXMgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscywgc3VjaCBhcyBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWludGVsLmNgLCBldGMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzc5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6NTI6MDIuMjY5NDYyOTc0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMxNzMyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQyNzptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDQ9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjUyOjAyLjMzNzc4Njg2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDM1MjY4NTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3Igc3RtbWFjIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gbWV0aG9kaWNhbGx5LiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgQWNjb3JkaW5nIHRvIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zLCBJIG5lZWQgdG8gZm9jdXMgb24gU2VjdGlvbiAyLCBzcGVjaWZpY2FsbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBJdCdzIG9ubHkgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZml0cyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuXG5cbkZpcnN0LCBJJ20gbG9va2luZyBhdCB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gVGhlIHRleHQgc3BlY2lmaWVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgc3RtbWFjYCAodGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIC8gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQykgbWlnaHQgZmFsbCBpbnRvIHRoaXMuXG5cbkxldCdzIGNvbmZpcm0uIEluIHN0YW5kYXJkIHg4Nl82NCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSB0eXBpY2FsIGVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlcyBhcmUgdmlydGlvLW5ldC1wY2ksIGUxMDAwLCBhbmQgc28gb24uIGBzdG1tYWNgIGlzbid0IG9uIHRoYXQgbGlzdC4gSXQncyBjbGVhcmx5IGEgZHJpdmVyIGZvciBlbWJlZGRlZCBTb0NzLCBkZWRpY2F0ZWQgUENJIE5JQ3MsIGFuZCBzcGVjaWZpYyBoYXJkd2FyZS4gSXQgcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIEFTSUMvU29DIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIGFtZDY0IGVudmlyb25tZW50cywgcmlnaHQ/IFRoZXJlIGFyZSBubyB2aXJ0dWFsIGJ1c2VzIG9yIGVtdWxhdGVkIGRldmljZXMgZm9yIGl0IGluIHRob3NlIHN0YW5kYXJkIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyB2ZXJpZnkuIFRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX21haW4uY2AsIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyBsaWtlIGBzdG1tYWNfY2hlY2tfdGltZXN0YW1wX2NhcGAsIGBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmdgLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBvdGhlcnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlciAoc3BlY2lmaWNhbGx5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGNvZGUgaXMgaGlnaGx5IHNwZWNpZmljIHRvIGhhcmR3YXJlIGludGVyYWN0aW9ucyBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLiBJdCdzIG5vdCBnZW5lcmljIG5ldHdvcmsgY29kZSwgaXQncyB0aWVkIHRvIHJlYWwtd29ybGQgTUFDcywgYW5kIFNvQyBoYXJkd2FyZS5cblxuR2l2ZW4gdGhhdCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyIOKAkyBhIGRyaXZlciBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBNQUNzLCByZXF1aXJpbmcgcGh5c2ljYWwgU29DIGhhcmR3YXJlIG9yIFBDSSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzIOKAkyB0aGUgY29kZSBpcyBmdW5kYW1lbnRhbGx5ICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0OiBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gTm8gYEZvY3VzU3ltYm9sc2Agb3IgYEVuYWJsZUNvbmZpZ3NgIGFyZSBuZWVkZWQuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIgYW5kIGNvbmNpc2U6IHN0bW1hYyBkZWFscyB3aXRoIGhhcmR3YXJlLXNwZWNpZmljIEV0aGVybmV0IE1BQyBkcml2ZXJzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuQWxyaWdodCwgdGltZSB0byBleGVjdXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjQxLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MjowOC4zNzMwNjE0MTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSBjb25maW5lZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jKS4gVGhpcyBkcml2ZXIgY29udHJvbHMgcGh5c2ljYWwgU29DIGFuZCBzcGVjaWFsaXplZCBQQ0kgRXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VIC8gR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzo1MjowOC4zNzMxMDMxNDZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgjmr5[1] Phase: Running StartedAt: 2026-09-05 17:52:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgjmr5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 17:52:20 +0000 UTC FinishedAt: 2026-09-05 17:52:26 +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,}