Name: series-workflowl8d98 Phase: Failed StartedAt: 2026-07-31 02:52:42 +0000 UTC FinishedAt: 2026-07-31 03:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8d98[0] Phase: Succeeded StartedAt: 2026-07-31 02:52:42 +0000 UTC FinishedAt: 2026-07-31 03:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8d98[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 02:52:42 +0000 UTC FinishedAt: 2026-07-31 03:15:40 +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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhMjVhOTVkMDM3OTNkNzBjZjQxYWEzOWUzM2JiYTc0YmYwNDcyZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzZjExYTk2MjRiOWMwLi42YTE4NDU4OGZmMjM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNTU0LDYgJiM0Mzs1NTQsOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcbiBcdFx0dmRldi1cdTAwM2ViYXJtYXBbYmFyXSA9IElPTUVNX0VSUl9QVFIoLUVOT0RFVik7XG4gXG4mIzQzO1x0XHRpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuIFx0XHRpZiAoIXBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhMjVhOTVkMDM3OTNkNzBjZjQxYWEzOWUzM2JiYTc0YmYwNDcyZTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKaW5kZXggM2YxMWE5NjI0YjljMC4uNmExODQ1ODhmZjIzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKQEAgLTU1NCw2ICYjNDM7NTU0LDkgQEAgc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAKIAkJdmRldi0mZ3Q7YmFybWFwW2Jhcl0gPSBJT01FTV9FUlJfUFRSKC1FTk9ERVYpOwogCiYjNDM7CQlpZiAocGRldi0mZ3Q7bm9uX21hcHBhYmxlX2JhcnMpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiAJCWlmICghcGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSkKIAkJCWNvbnRpbnVlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGFuIGBpZiAocGRldi0mZ3Q7bm9uX21hcHBhYmxlX2JhcnMpIGNvbnRpbnVlO2AgbGluZSB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqIGhlcmUuIFdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb25kaXRpb25hbD8gV2hhdCBhcmUgJiMzNDtub25fbWFwcGFibGVfYmFycywmIzM0OyBhbmQgd2h5IHdvdWxkIHdlIHNraXAgYmFyIG1hcHBpbmcgYmFzZWQgb24gdGhpcyBmbGFnPyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgc28gbGV0JiMzOTtzIGNoZWNrIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiB3aXRoaW4gYHZmaW9fcGNpX2NvcmUuY2AgaXRzZWxmLCBhbmQgbGV0JiMzOTtzIHF1aWNrbHkgZ3JlcCBmb3IgaXQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBzZWN0aW9uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BjaV9jb3JlX21hcF9iYXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTE5PXN0YXRpYyBpbnQgdmZpb19wY2lfY29yZV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ2LSAqL1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTQ3OnN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01OTA9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02NjMtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2NjQ6XHR2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjY1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWRklPIFBDSSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBmcm9tIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBiYXIgbWFwcGluZyBpcyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgY29yZSBlbmFibGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHRlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6b29tIGluIG9uIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAuIEkgd2FudCB0byBzZWUgKmhvdyogaXQgY2FsbHMgYG1hcF9iYXJzYCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhhdCBjYWxsLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsIHdpbGwgcHJvdmlkZSBzaWduaWZpY2FudCBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNoZWNrcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGJhciBtYXBwaW5nPyBXaGF0JiMzOTtzIHRoZSBjb250cm9sIGZsb3c/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGhlcmUuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgVkZJTy1QQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNjaGVtZSBhbmQgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQkFScyBhcmUgbWFwcGVkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvaW50cyBmb3IgZnVydGhlciBvcHRpbWl6YXRpb24sIG9yIHBvdGVudGlhbCBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19wY2lfY29yZV9lbmFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MTktXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1MjA6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUyMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTUwPXN0YXRpYyBpbnQgaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy01OS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzo2MDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTYxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzMjM9c3RhdGljIGludCBtbHg1dmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTMyOS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTMzMDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xNzM9c3RhdGljIGludCBudmdyYWNlX2dwdV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xODItXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxODM6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE4NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTkzLVx0ICogR1BVIHJlYWRpbmVzcyBpcyBjaGVja2VkIGJ5IHJlYWRpbmcgdGhlIEJBUjAgcmVnaXN0ZXJzLlxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTk0Olx0ICogVGhlIEJBUiBtYXAgd2FzIGp1c3Qgc2V0IHVwIGJ5IHZmaW9fcGNpX2NvcmVfZW5hYmxlKCksIHNvXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xOTUtXHQgKiBiYWlsIGVhcmx5IGlmIHRoYXQgd2FzbiYjMzk7dCBzdWNjZXNzZnVsOlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTU5PXN0YXRpYyBpbnQgcGRzX3ZmaW9fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTY1LVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYzoxNjY6XHRlcnIgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZShcdTAwMjZwZHNfdmZpby1cdTAwM2V2ZmlvX2NvcmVkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz01OD1zdGF0aWMgaW50IHFhdF92Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTY1LVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjY2Olx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xMDM9c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjExMDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2ZmlvX3BjaV9jb3JlX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01ODktXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1OTA6aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU5MS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjc5LX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjY4MDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2VuYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0yNy1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoyODpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTI5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNTItXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNTM6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE1NC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBWRklPLVBDSSBFbmFibGVtZW50IFNlcXVlbmNlKioKCk9rYXksIHNvIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAgaXMgdHJpZ2dlcmVkIHdoZW4gYSBWRklPLVBDSSBkZXZpY2UgaXMgb3BlbmVkLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGB2ZmlvX3BjaV9vcGVuX2RldmljZWAsIHdoaWNoIGlzIHRoZSBvcGVuIGNhbGxiYWNrIGZvciB0aGUgYHZmaW9fcGNpYCBkcml2ZXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50ISBJJiMzOTttIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byBleGFtaW5pbmcgYHZmaW9fcGNpX29wZW5fZGV2aWNlYCBhbmQgZmlndXJlIG91dCBwcmVjaXNlbHkgaG93IHRoYXQgcGF0aCBsZWFkcyB0byBgdmZpb19wY2lfY29yZV9lbmFibGVgIGJlaW5nIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXRpYWwgY2FsbCBzZXF1ZW5jZSBpcyBmdW5kYW1lbnRhbCB0byBncmFzcCB0aGUgVkZJTy1QQ0kgZW5hYmxlbWVudCBwcm9jZXNzLiBHb3R0YSBzdGFydCB3aXRoIHRoZSBvcGVuLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BjaV9vcGVuX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTQ5Mj1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmX21pZ2ZfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MTMtXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1MTQ6c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUxNS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1ODQtXHQucmVsZWFzZSA9IHZmaW9fcGNpX2NvcmVfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODU6XHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ni1cdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MDUtXHQucmVsZWFzZSA9IHZmaW9fcGNpX2NvcmVfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDY6XHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNy1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9NDU9c3RydWN0IGlzbV92ZmlvX3BjaV9jb3JlX2RldmljZSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQ5LVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjUwOnN0YXRpYyBpbnQgaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTUxLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGlzbV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzgtXHQucmVsZWFzZSA9IGlzbV92ZmlvX3BjaV9yZWxlYXNlX2RldixcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozMzk6XHQub3Blbl9kZXZpY2UgPSBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzQwLVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz04NT1zdGF0aWMgYm9vbCB2ZmlvX3BjaV9pc19kZW55bGlzdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMDItXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTAzOnN0YXRpYyBpbnQgdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA0LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTUyLVx0LnJlbGVhc2VcdD0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNTM6XHQub3Blbl9kZXZpY2VcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU0LVx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgeGVfdmZpb19wY2lfZXJyX2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE0NS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjE0NjpzdGF0aWMgaW50IHhlX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTQ3LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNS1cdC5yZWxlYXNlID0geGVfdmZpb19wY2lfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MjY6XHQub3Blbl9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNy1cdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIFBDSSBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGlzIFZGSU8gUENJIGRyaXZlciBjb2RlLiBJIGtub3cgdXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIGl0IHRocm91Z2ggdGhvc2UgYC9kZXYvdmZpby9gIGRldmljZXMuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gUUVNVSDigJMgZG9lcyBRRU1VIGVtdWxhdGUgUENJIGRldmljZXMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFZGSU8gcGFzc3Rocm91Z2g/IEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgaXQsIHNwZWNpZmljYWxseSB3aXRoIGBzeXpfa3ZtX3NldHVwX2NwdWAgYW5kIG90aGVyIFZGSU8gcHNldWRvLXN5c2NhbGxzIGluIHN5emthbGxlci4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIFZGSU8gUENJIGZyb20gd2l0aGluIGEgVk0sIG9yIGFyZSB0aGVyZSBsaW1pdGF0aW9ucyB0aGVyZT8KClJpZ2h0LCBzeXprYWxsZXIgZG9lcyBoYXZlIFZGSU8gZnV6emluZyBzdXBwb3J0LiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYD8gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCB0YXJnZXQ7IGl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIHRoZSBWRklPIFBDSSBjb3JlIGFuZCBkZWFscyB3aXRoIG1hcHBpbmcgUENJIEJhc2UgQWRkcmVzcyBSZWdpc3RlcnMgKEJBUnMpLiBJcyB0aGlzIGEgd29ydGh3aGlsZSBmdXp6aW5nIHRhcmdldD8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IGNoYW5nZSBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLgoKSG1tLCB0aGlzIGBwZGV2LSZndDtub25fbWFwcGFibGVfYmFyc2AgdGhpbmfigKYgdGhhdCYjMzk7cyBhIG5ldyBmaWVsZCBpbiB0aGUgYHN0cnVjdCBwY2lfZGV2YD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBpbnRvIHRoZSBgaW5jbHVkZS9saW51eC9wY2kuaGAgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVx0ICovXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5Olx0cGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0zMjA9c3RydWN0IHAycGRtYV9wcm92aWRlciAqcGNpbV9wMnBkbWFfcHJvdmlkZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYsIGJhcikgXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1Olx0ICAgIHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyNzg9X19wY2lfcmVzb3VyY2VfYXR0cl9pc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjg1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvcGNpL3Byb2MuYy0yNTUtXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcdGlmIChkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xOTU9c3RhdGljIHZvaWQgdmZpb19wY2lfcHJvYmVfbW1hcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNjpcdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cdFx0XHRnb3RvIG5vX21tYXA7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU1Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXHRcdFx0Y29udGludWU7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xuLS1cbmluY2x1ZGUvbGludXgvcGNpLmgtNTExLVx0dW5zaWduZWQgaW50XHRyb21fYXR0cl9lbmFibGVkOjE7XHQvKiBEaXNwbGF5IG9mIFJPTSBhdHRyaWJ1dGUgZW5hYmxlZD8gKi9cbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlx0dW5zaWduZWQgaW50XHRub25fbWFwcGFibGVfYmFyczoxO1x0LyogQkFScyBjYW4mIzM5O3QgYmUgbWFwcGVkIGJ5IENQVSBvciBwZWVycyAqL1xuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTE2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTm9uLU1hcHBhYmxlIEJBUnMgaW4gYSBWTSBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgYG5vbl9tYXBwYWJsZV9iYXJzYCBmbGFnIHBvcCB1cCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZS4gSXQmIzM5O3MgcmVsYXRlZCB0byBkZXZpY2VzIGxpa2UgYHpwY2lfaXNtX2Jhcl9ub19tbWFwYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgcmVsZXZhbnQgaW4gYSBnZW5lcmljIHg4NiB2aXJ0dWFsIG1hY2hpbmUgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4KCkxvb2tpbmcgY2xvc2VyLCB0aGlzIHBhdGNoIHNlZW1zIHRvIGludHJvZHVjZSBhIG5ldyBjb25kaXRpb24gd2l0aGluIGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYDogYGlmIChwZGV2LSZndDtub25fbWFwcGFibGVfYmFycykgY29udGludWU7YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgZ2F0ZWtlZXBlciDigJMgaWYgdGhlIGZsYWcgaXMgKm5vdCogc2V0LCB0aGluZ3MgcHJvY2VlZCBhcyB0aGV5IGFsd2F5cyBoYXZlLiBCdXQsIGlmIHRoZSBgbm9uX21hcHBhYmxlX2JhcnNgICppcyogc2V0LCBpdCBjb21wbGV0ZWx5IGJ5cGFzc2VzIG1hcHBpbmcgdGhlIHNwZWNpZmljIEJBUi4gVGhhdOKAmXMgdGhlIGtleS4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICp0cmlnZ2VyKiB0aGlzIGBub25fbWFwcGFibGVfYmFyc2AgZmxhZyBpbiBhIG1vcmUgZ2VuZXJhbGl6ZWQgVk0gc2V0dXA/IFdoZXJlIGlzIHRoaXMgZmxhZyBzZXQ/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCwgSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgaG93IHRoaXMgZmxhZyBpcyBiZWluZyBhc3NpZ25lZCB0byB0aGUgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTEyPXN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTgtXHQgKi9cbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MTk6XHRwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzID0gMTtcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTI2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGEgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGFwcGVhcnMgdG8gYmUgc3BlY2lmaWMgdG8gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLCBhbmQgaXQmIzM5O3MgcmVsYXRlZCB0byBJU00gZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzIG9uIHg4NiBvciBhbm90aGVyIGFyY2hpdGVjdHVyZT8gVGhlIGNvZGUgcGF0aCBoaW5nZXMgb24gYHBkZXYtJmd0O25vbl9tYXBwYWJsZV9iYXJzYCBiZWluZyBzZXQsIHdoaWNoIHRoZSBncmVwIG91dHB1dCBjb25maXJtcyBpcyBvbmx5IHNldCBpbiB0aGF0IG9uZSBzcGVjaWZpYyBmaWxlIGZvciBzMzkwIElTTSBkZXZpY2VzLiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBgaWYgKHBkZXYtJmd0O25vbl9tYXBwYWJsZV9iYXJzKSBjb250aW51ZTtgIHdpbGwgKm9ubHkqIGJlIGV4ZWN1dGVkIG9uIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBvbmx5IGZvciBJU00gZGV2aWNlcy4KCldhaXQsIHN5emthbGxlciAqY2FuKiBmdXp6IHMzOTB4LiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBlbXVsYXRlIHMzOTAgSVNNIGRldmljZXM/IEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlc2UgYXJlIGV2ZW4gZW11bGF0ZWQuIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgaXMgdGhlIGtleSBoZXJlLiBFdmVuIGlmIHN5emthbGxlciBjYW4gcnVuIG9uIHMzOTB4LCB0aGlzIGlzIHN0aWxsIGhhcmR3YXJlLXNwZWNpZmljLgoKVGhlbiwgdGhlIHByYWdtYXRpc3QgaW4gbWUga2lja3MgaW4g4oCTIGlzIHRoaXMgdGlueSBwYXRjaCBldmVuIHdvcnRoIHRoZSBlZmZvcnQ/IEl0JiMzOTtzIGxpdGVyYWxseSBqdXN0IHR3byBsaW5lczoKCmBgYGMKJiM0MzsJCWlmIChwZGV2LSZndDtub25fbWFwcGFibGVfYmFycykKJiM0MzsJCQljb250aW51ZTsKYGBgCgpHaXZlbiB0aGF0IGBub25fbWFwcGFibGVfYmFyc2AgaXMgKm9ubHkqIHNldCB3aXRoaW4gdGhhdCBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZSBhbmQgc3BlY2lmaWNhbGx5IGZvciBJU00gZGV2aWNlcywgdGhpcyBjb2RlIGJyYW5jaCB3aWxsIG5ldmVyIGJlIHRha2VuIG9uIHg4NiwgYXJtNjQsIG9yIGFueSBvdGhlciBhcmNoaXRlY3R1cmVzLiBFdmVuIG9uIHMzOTB4LCBpdOKAmXMgZGVwZW5kZW50IG9uIHRoZSBwcmVzZW5jZSBvZiBhbiBJU00gZGV2aWNlLgoKSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYCBpdHNlbGYgYW5kIHNlZSB3aGF0IGRldmljZXMgaXQgYWN0dWFsbHkgbWF0Y2hlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9pc21fYmFyX25vX21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTEtXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjEyOnN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0xMy17XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0yMT1ERUNMQVJFX1BDSV9GSVhVUF9FQVJMWShQQ0lfVkVORE9SX0lEX0lCTSxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjItXHRcdFx0UENJX0RFVklDRV9JRF9JQk1fSVNNLFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoyMzpcdFx0XHR6cGNpX2lzbV9iYXJfbm9fbW1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzQKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlYWNoYWJpbGl0eSBpbiBhIFN5emthbGxlciBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGlkZW50aWZpZWQgY29kZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBieSBzcGVjaWZpYyBQQ0kgZGV2aWNlIElEczogYFBDSV9WRU5ET1JfSURfSUJNYCwgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZ2V0IHN5emthbGxlciB0byBoaXQgdGhpcz8gQ2FuIGl0IGVtdWxhdGUgdGhpcyBkZXZpY2Ugc29tZWhvdywgbWF5YmUgdGhyb3VnaCBgdmhjaWAsIGBwY2lfZW5kcG9pbnRgLCBvciBldmVuIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgc3l6a2FsbGVyIGdlbmVyYWxseSBoYW5kbGVzIFBDSSBkZXZpY2VzLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYywgYnVpbHQtaW4gZW11bGF0aW9uIGZyYW1ld29yayBsaWtlIGB2aGNpYCBmb3IgVVNCLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IGVtdWxhdGUgZ2VuZXJpYyBQQ0kgZGV2aWNlcy4KCkhtbSwgd2FpdCBhIG1pbnV0ZS4uLiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIGNhcGFibGUgb2YgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyBpbnRvIHRoZSBndWVzdC4gU3VyZSwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGhhY2t5IHZpYSB0aGUgUUVNVSBjb21tYW5kIGxpbmUsIGJ1dCB0aGF0JiMzOTtzIG5vdCBob3cgc3l6a2FsbGVyIG9wZXJhdGVzIGR5bmFtaWNhbGx5IGR1cmluZyBmdXp6aW5nLiBJdCBkb2VzbiYjMzk7dCBhZGQgUENJIGRldmljZXMgb24gdGhlIGZseSB3aXRoIHJhbmRvbSB2ZW5kb3IvZGV2aWNlIElEcy4KClJpZ2h0LCBzbyB0aGlzIGNvZGUgcGF0aCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gVGhpcyBicmFuY2ggd2lsbCAqbmV2ZXIqIGJlIHRha2VuIGluIHRoZSB0eXBpY2FsIEdDRSBvciBRRU1VIGVudmlyb25tZW50cyB0aGF0IHN5emthbGxlciB1c2VzLCB1bmxlc3Mgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIHNvbWUgdmVyeSBzcGVjaWZpYyBRRU1VIGNvbmZpZ3VyYXRpb24gdGhhdCBzeXprYWxsZXIganVzdCBkb2VzbiYjMzk7dCB1c2UuCgpCdXQsIGhvbGQgb24uLi4gaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBjb3VsZCBiZSBzZXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIExldCYjMzk7cyBsb29rIGZvciBvdGhlciBpbnN0YW5jZXMgb2YgYG5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBhdGhzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVx0ICovXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5Olx0cGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0zMjA9c3RydWN0IHAycGRtYV9wcm92aWRlciAqcGNpbV9wMnBkbWFfcHJvdmlkZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYsIGJhcikgXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1Olx0ICAgIHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyNzg9X19wY2lfcmVzb3VyY2VfYXR0cl9pc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjg1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvcGNpL3Byb2MuYy0yNTUtXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcdGlmIChkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xOTU9c3RhdGljIHZvaWQgdmZpb19wY2lfcHJvYmVfbW1hcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNjpcdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cdFx0XHRnb3RvIG5vX21tYXA7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU1Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXHRcdFx0Y29udGludWU7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xuLS1cbmluY2x1ZGUvbGludXgvcGNpLmgtNTExLVx0dW5zaWduZWQgaW50XHRyb21fYXR0cl9lbmFibGVkOjE7XHQvKiBEaXNwbGF5IG9mIFJPTSBhdHRyaWJ1dGUgZW5hYmxlZD8gKi9cbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlx0dW5zaWduZWQgaW50XHRub25fbWFwcGFibGVfYmFyczoxO1x0LyogQkFScyBjYW4mIzM5O3QgYmUgbWFwcGVkIGJ5IENQVSBvciBwZWVycyAqL1xuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI0MQoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgbG9jYWxpemVkIOKAkyBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIG9ubHkgdG91Y2hpbmcgYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBUaGF0IGFsb25lIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgY29uc2lkZXJhYmx5OyB0aGlzIGlzIHNvbWV0aGluZyBkZWRpY2F0ZWQgdG8gczM5MCBJU00gZGV2aWNlcy4gTm93LCB0aGUgcmVhbCBraWNrZXI6IHRoaXMgc2VlbXMgdG8gcmVseSBvbiBwaHlzaWNhbCBvciBlbXVsYXRlZCBzMzkwIElTTSBoYXJkd2FyZS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBzZXR1cCB0aGF0JiMzOTtzICpub3QqIGdvaW5nIHRvIGJlIGZvdW5kIGluIG91ciBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnRzLiBHaXZlbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHRoZSBjb3N0LWJlbmVmaXQgYW5hbHlzaXMganVzdCBkb2VzbiYjMzk7dCBwYW4gb3V0LiBBdHRlbXB0aW5nIHRvIGZ1enogdGhpcyB3b3VsZCBiZSBhIHNpZ25pZmljYW50IGVmZm9ydCB3aXRoIGEgdmVyeSBsb3cgcHJvYmFiaWxpdHkgb2Ygc3VjY2VzcywgZXNwZWNpYWxseSBjb21wYXJlZCB0byB0YXJnZXRzIHdlIGFyZSBjdXJyZW50bHkgcHVyc3VpbmcuIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIHNpbXBseSBub3QgYSBwcm9kdWN0aXZlIGF2ZW51ZSBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cyBhdCB0aGlzIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFyc2AgaW4gdGhlIFZGSU8gUENJIGNvcmUuIFRoaXMgZmxhZyBpcyBvbmx5IHNldCBmb3Igc3BlY2lmaWMgczM5MCBJU00gaGFyZHdhcmUgZGV2aWNlcyAoUENJX1ZFTkRPUl9JRF9JQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgaW4gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgVkZJTyBQQ0kgY29yZS4gVGhpcyBmbGFnIGlzIG9ubHkgc2V0IGZvciBzcGVjaWZpYyBzMzkwIElTTSBoYXJkd2FyZSBkZXZpY2VzIChQQ0lfVkVORE9SX0lEX0lCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzoyOS43NDU4MTE0NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEwNzUwNTkyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgVkZJTyBQQ0kgY29yZS4gVGhpcyBmbGFnIGlzIG9ubHkgc2V0IGZvciBzcGVjaWZpYyBzMzkwIElTTSBoYXJkd2FyZSBkZXZpY2VzIChQQ0lfVkVORE9SX0lEX0lCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjI5Ljc0NTgxNjQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyMTEyNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWEyNWE5NWQwMzc5M2Q3MGNmNDFhYTM5ZTMzYmJhNzRiZjA0NzJlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuaW5kZXggM2YxMWE5NjI0YjljMC4uNmExODQ1ODhmZjIzNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTU1NCw2ICs1NTQsOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4gXFxuIFxcdFxcdHZkZXYtXFx1MDAzZWJhcm1hcFtiYXJdID0gSU9NRU1fRVJSX1BUUigtRU5PREVWKTtcXG4gXFxuK1xcdFxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbiBcXHRcXHRpZiAoIXBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6MzAuMjY4ODkzMjgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwNTUxOTY5NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIGBwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFyc2AgaW4gdGhlIFZGSU8gUENJIGNvcmUuIFRoaXMgZmxhZyBpcyBvbmx5IHNldCBmb3Igc3BlY2lmaWMgczM5MCBJU00gaGFyZHdhcmUgZGV2aWNlcyAoUENJX1ZFTkRPUl9JRF9JQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgaW4gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YTI1YTk1ZDAzNzkzZDcwY2Y0MWFhMzllMzNiYmE3NGJmMDQ3MmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDM6MTM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzZjExYTk2MjRiOWMwLi42YTE4NDU4OGZmMjM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNTU0LDYgKzU1NCw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFxuIFx0XHR2ZGV2LVx1MDAzZWJhcm1hcFtiYXJdID0gSU9NRU1fRVJSX1BUUigtRU5PREVWKTtcbiBcbitcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdGlmICghcGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjMwLjI2ODg5NTQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDM1Nzc4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0J3MgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGFuIGBpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycykgY29udGludWU7YCBsaW5lIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogaGVyZS4gV2hhdCdzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29uZGl0aW9uYWw/IFdoYXQgYXJlIFwibm9uX21hcHBhYmxlX2JhcnMsXCIgYW5kIHdoeSB3b3VsZCB3ZSBza2lwIGJhciBtYXBwaW5nIGJhc2VkIG9uIHRoaXMgZmxhZz8gYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIHNvIGxldCdzIGNoZWNrIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gd2l0aGluIGB2ZmlvX3BjaV9jb3JlLmNgIGl0c2VsZiwgYW5kIGxldCdzIHF1aWNrbHkgZ3JlcCBmb3IgaXQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBzZWN0aW9uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3OCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjM1LjUxMjQ4NDEzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk4MTk5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9tYXBfYmFyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01MTk9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU0Ni0gKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1NDc6c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ4LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTU5MD1pbnQgdmZpb19wY2lfY29yZV9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjYzLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjY2NDpcXHR2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6MzUuNjIyMzA4NDM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNTY5NTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVkZJTyBQQ0kgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBpbnZva2VkIGZyb20gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGJhciBtYXBwaW5nIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBjb3JlIGVuYWJsaW5nIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0dGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHpvb20gaW4gb24gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYC4gSSB3YW50IHRvIHNlZSAqaG93KiBpdCBjYWxscyBgbWFwX2JhcnNgIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGF0IGNhbGwuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgd2lsbCBwcm92aWRlIHNpZ25pZmljYW50IGluc2lnaHQgaW50byB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgY2hlY2tzIGJlZm9yZSBvciBhZnRlciB0aGUgYmFyIG1hcHBpbmc/IFdoYXQncyB0aGUgY29udHJvbCBmbG93PyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGhlcmUuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgVkZJTy1QQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNjaGVtZSBhbmQgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQkFScyBhcmUgbWFwcGVkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvaW50cyBmb3IgZnVydGhlciBvcHRpbWl6YXRpb24sIG9yIHBvdGVudGlhbCBlcnJvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzo0MC4yMjgwMDYxMDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMjAzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2NvcmVfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9wY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTUxND1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTE5LVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTUyMDpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz01MD1zdGF0aWMgaW50IGlzbV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy01OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6NjA6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTYxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzMjM9c3RhdGljIGludCBtbHg1dmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzI5LVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTMzMDpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTE3Mz1zdGF0aWMgaW50IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTgyLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjE4MzpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xODQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE5My1cXHQgKiBHUFUgcmVhZGluZXNzIGlzIGNoZWNrZWQgYnkgcmVhZGluZyB0aGUgQkFSMCByZWdpc3RlcnMuXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTk0OlxcdCAqIFRoZSBCQVIgbWFwIHdhcyBqdXN0IHNldCB1cCBieSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSgpLCBzb1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE5NS1cXHQgKiBiYWlsIGVhcmx5IGlmIHRoYXQgd2Fzbid0IHN1Y2Nlc3NmdWw6XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE1OT1zdGF0aWMgaW50IHBkc192ZmlvX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTY1LVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTY2OlxcdGVyciA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKFxcdTAwMjZwZHNfdmZpby1cXHUwMDNldmZpb19jb3JlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTU4PXN0YXRpYyBpbnQgcWF0X3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02NS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjY6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTAzPXN0YXRpYyBpbnQgdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA5LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMTA6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2ZmlvX3BjaV9jb3JlX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU4OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1OTA6aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01OTEte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjc5LX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2ODA6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lbmFibGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0yNy1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6Mjg6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTI5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE1Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNTM6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTU0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjQwLjM0MTIxMzg2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDMxNDY4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPLVBDSSBFbmFibGVtZW50IFNlcXVlbmNlKipcblxuT2theSwgc28gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhIFZGSU8tUENJIGRldmljZSBpcyBvcGVuZWQuIFRoYXQgbWVhbnMgd2UncmUgbG9va2luZyBhdCBgdmZpb19wY2lfb3Blbl9kZXZpY2VgLCB3aGljaCBpcyB0aGUgb3BlbiBjYWxsYmFjayBmb3IgdGhlIGB2ZmlvX3BjaWAgZHJpdmVyLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50ISBJJ20gZ29pbmcgdG8ganVtcCByaWdodCBpbnRvIGV4YW1pbmluZyBgdmZpb19wY2lfb3Blbl9kZXZpY2VgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhhdCBwYXRoIGxlYWRzIHRvIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBjYWxsIHNlcXVlbmNlIGlzIGZ1bmRhbWVudGFsIHRvIGdyYXNwIHRoZSBWRklPLVBDSSBlbmFibGVtZW50IHByb2Nlc3MuIEdvdHRhIHN0YXJ0IHdpdGggdGhlIG9wZW4sIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBzdGFydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzo0NC4xODQzNjQxMDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA1ODcwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNDkyPXN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfbWlnZl9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTUxNDpzdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUxNS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg0LVxcdC5yZWxlYXNlID0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODU6XFx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg2LVxcdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA1LVxcdC5yZWxlYXNlID0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDY6XFx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz00NT1zdHJ1Y3QgaXNtX3ZmaW9fcGNpX2NvcmVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy00OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6NTA6c3RhdGljIGludCBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaXNtX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzM4LVxcdC5yZWxlYXNlID0gaXNtX3ZmaW9fcGNpX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozMzk6XFx0Lm9wZW5fZGV2aWNlID0gaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDAtXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jPTg1PXN0YXRpYyBib29sIHZmaW9fcGNpX2lzX2RlbnlsaXN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTAyLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMDM6c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1Mi1cXHQucmVsZWFzZVxcdD0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTUzOlxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1NC1cXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTE0MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB4ZV92ZmlvX3BjaV9lcnJfaGFuZGxlcnMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNDUtXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTQ2OnN0YXRpYyBpbnQgeGVfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTUyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB4ZV92ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjUtXFx0LnJlbGVhc2UgPSB4ZV92ZmlvX3BjaV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MjY6XFx0Lm9wZW5fZGV2aWNlID0geGVfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI3LVxcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjQ0LjI0NDk1NjEzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTg1MDA3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBQQ0kgRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgVkZJTyBQQ0kgZHJpdmVyIGNvZGUuIEkga25vdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQgdGhyb3VnaCB0aG9zZSBgL2Rldi92ZmlvL2AgZGV2aWNlcy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBRRU1VIOKAkyBkb2VzIFFFTVUgZW11bGF0ZSBQQ0kgZGV2aWNlcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggVkZJTyBwYXNzdGhyb3VnaD8gSSByZWNhbGwgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBpdCwgc3BlY2lmaWNhbGx5IHdpdGggYHN5el9rdm1fc2V0dXBfY3B1YCBhbmQgb3RoZXIgVkZJTyBwc2V1ZG8tc3lzY2FsbHMgaW4gc3l6a2FsbGVyLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqZnV6eiogVkZJTyBQQ0kgZnJvbSB3aXRoaW4gYSBWTSwgb3IgYXJlIHRoZXJlIGxpbWl0YXRpb25zIHRoZXJlP1xuXG5SaWdodCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBWRklPIGZ1enppbmcgc3VwcG9ydC4gVGhhdCdzIGdvb2QgbmV3cy4gTGV0J3Mgc2VlLi4uIHdoYXQgYWJvdXQgYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgPyBUaGF0IHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldDsgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgVkZJTyBQQ0kgY29yZSBhbmQgZGVhbHMgd2l0aCBtYXBwaW5nIFBDSSBCYXNlIEFkZHJlc3MgUmVnaXN0ZXJzIChCQVJzKS4gSXMgdGhpcyBhIHdvcnRod2hpbGUgZnV6emluZyB0YXJnZXQ/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbGl0eSBjaGFuZ2UgaW4gdGhlIFZGSU8gUENJIGRyaXZlci5cblxuSG1tLCB0aGlzIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCB0aGluZ+KApiB0aGF0J3MgYSBuZXcgZmllbGQgaW4gdGhlIGBzdHJ1Y3QgcGNpX2RldmA/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGxvb2tpbmcgaW50byB0aGUgYGluY2x1ZGUvbGludXgvcGNpLmhgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNjAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6NTAuNTQzNDYwNjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDAwODA1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm9uX21hcHBhYmxlX2JhcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MTI9c3RhdGljIHZvaWQgenBjaV9pc21fYmFyX25vX21tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVxcdCAqL1xcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MTk6XFx0cGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMgPSAxO1xcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjAtfVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM9MjYwPWludCBwY2ltX3AycGRtYV9pbml0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jOjI2NTpcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jPTMyMD1zdHJ1Y3QgcDJwZG1hX3Byb3ZpZGVyICpwY2ltX3AycGRtYV9wcm92aWRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcilcXG4tLVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jLTMyNC1cXHRpZiAoIShwY2lfcmVzb3VyY2VfZmxhZ3MocGRldiwgYmFyKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxcbmRyaXZlcnMvcGNpL3AycGRtYS5jOjMyNTpcXHQgICAgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI2LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTI3OD1fX3BjaV9yZXNvdXJjZV9hdHRyX2lzX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg0LVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEyODU6XFx0aWYgKHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9wY2kvcHJvYy5jLTI1NS1cXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xcbmRyaXZlcnMvcGNpL3Byb2MuYzoyNTY6XFx0aWYgKGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcHJvYy5jLTI1Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE5NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9wcm9iZV9tbWFwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDUtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjA2OlxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDctXFx0XFx0XFx0Z290byBub19tbWFwO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTU2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcXHRcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTU4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaC01MTEtXFx0dW5zaWduZWQgaW50XFx0cm9tX2F0dHJfZW5hYmxlZDoxO1xcdC8qIERpc3BsYXkgb2YgUk9NIGF0dHJpYnV0ZSBlbmFibGVkPyAqL1xcbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlxcdHVuc2lnbmVkIGludFxcdG5vbl9tYXBwYWJsZV9iYXJzOjE7XFx0LyogQkFScyBjYW4ndCBiZSBtYXBwZWQgYnkgQ1BVIG9yIHBlZXJzICovXFxuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXFx0cGNpX2Rldl9mbGFnc190IGRldl9mbGFncztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6NTMuNTQzNTQ3ODkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MjAzOTk1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBOb24tTWFwcGFibGUgQkFScyBpbiBhIFZNIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoaXMgYG5vbl9tYXBwYWJsZV9iYXJzYCBmbGFnIHBvcCB1cCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZS4gSXQncyByZWxhdGVkIHRvIGRldmljZXMgbGlrZSBgenBjaV9pc21fYmFyX25vX21tYXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSByZWxldmFudCBpbiBhIGdlbmVyaWMgeDg2IHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBoZXJlLlxuXG5Mb29raW5nIGNsb3NlciwgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgY29uZGl0aW9uIHdpdGhpbiBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2A6IGBpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycykgY29udGludWU7YC4gRXNzZW50aWFsbHksIGl0J3MgYSBnYXRla2VlcGVyIOKAkyBpZiB0aGUgZmxhZyBpcyAqbm90KiBzZXQsIHRoaW5ncyBwcm9jZWVkIGFzIHRoZXkgYWx3YXlzIGhhdmUuIEJ1dCwgaWYgdGhlIGBub25fbWFwcGFibGVfYmFyc2AgKmlzKiBzZXQsIGl0IGNvbXBsZXRlbHkgYnlwYXNzZXMgbWFwcGluZyB0aGUgc3BlY2lmaWMgQkFSLiBUaGF04oCZcyB0aGUga2V5LlxuXG5TbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqdHJpZ2dlciogdGhpcyBgbm9uX21hcHBhYmxlX2JhcnNgIGZsYWcgaW4gYSBtb3JlIGdlbmVyYWxpemVkIFZNIHNldHVwPyBXaGVyZSBpcyB0aGlzIGZsYWcgc2V0PyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgSSdtIGdvaW5nIHRvIGRldGVybWluZSBob3cgdGhpcyBmbGFnIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTE2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjU5LjE2Mzk1MTQ4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2ODUxOTg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub25fbWFwcGFibGVfYmFycyA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTEyPXN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0xOC1cXHQgKi9cXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5OlxcdHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzID0gMTtcXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTQ6MDEuNjMyNDc5MTI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDM1NzA4MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYXBwZWFycyB0byBiZSBzcGVjaWZpYyB0byBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AsIGFuZCBpdCdzIHJlbGF0ZWQgdG8gSVNNIGRldmljZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBvbiB4ODYgb3IgYW5vdGhlciBhcmNoaXRlY3R1cmU/IFRoZSBjb2RlIHBhdGggaGluZ2VzIG9uIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBiZWluZyBzZXQsIHdoaWNoIHRoZSBncmVwIG91dHB1dCBjb25maXJtcyBpcyBvbmx5IHNldCBpbiB0aGF0IG9uZSBzcGVjaWZpYyBmaWxlIGZvciBzMzkwIElTTSBkZXZpY2VzLiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBgaWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpIGNvbnRpbnVlO2Agd2lsbCAqb25seSogYmUgZXhlY3V0ZWQgb24gczM5MCBhcmNoaXRlY3R1cmUgYW5kIG9ubHkgZm9yIElTTSBkZXZpY2VzLlxuXG5XYWl0LCBzeXprYWxsZXIgKmNhbiogZnV6eiBzMzkweC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSBzMzkwIElTTSBkZXZpY2VzPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXNlIGFyZSBldmVuIGVtdWxhdGVkLiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIGlzIHRoZSBrZXkgaGVyZS4gRXZlbiBpZiBzeXprYWxsZXIgY2FuIHJ1biBvbiBzMzkweCwgdGhpcyBpcyBzdGlsbCBoYXJkd2FyZS1zcGVjaWZpYy5cblxuVGhlbiwgdGhlIHByYWdtYXRpc3QgaW4gbWUga2lja3MgaW4g4oCTIGlzIHRoaXMgdGlueSBwYXRjaCBldmVuIHdvcnRoIHRoZSBlZmZvcnQ/IEl0J3MgbGl0ZXJhbGx5IGp1c3QgdHdvIGxpbmVzOlxuXG5gYGBjXG4rXHRcdGlmIChwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxuK1x0XHRcdGNvbnRpbnVlO1xuYGBgXG5cbkdpdmVuIHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBpcyAqb25seSogc2V0IHdpdGhpbiB0aGF0IGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgZm9yIElTTSBkZXZpY2VzLCB0aGlzIGNvZGUgYnJhbmNoIHdpbGwgbmV2ZXIgYmUgdGFrZW4gb24geDg2LCBhcm02NCwgb3IgYW55IG90aGVyIGFyY2hpdGVjdHVyZXMuIEV2ZW4gb24gczM5MHgsIGl04oCZcyBkZXBlbmRlbnQgb24gdGhlIHByZXNlbmNlIG9mIGFuIElTTSBkZXZpY2UuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgaXRzZWxmIGFuZCBzZWUgd2hhdCBkZXZpY2VzIGl0IGFjdHVhbGx5IG1hdGNoZXMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MjYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTQ6MTkuNjY4MTkwNDU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTIyOTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6cGNpX2lzbV9iYXJfbm9fbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTEtXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoxMjpzdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTEzLXtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MjE9REVDTEFSRV9QQ0lfRklYVVBfRUFSTFkoUENJX1ZFTkRPUl9JRF9JQk0sXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0yMi1cXHRcXHRcXHRQQ0lfREVWSUNFX0lEX0lCTV9JU00sXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoyMzpcXHRcXHRcXHR6cGNpX2lzbV9iYXJfbm9fbW1hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjE0OjE5LjczMzQyNDY3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczNzA1MjYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhY2hhYmlsaXR5IGluIGEgU3l6a2FsbGVyIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgY29kZSB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIFBDSSBkZXZpY2UgSURzOiBgUENJX1ZFTkRPUl9JRF9JQk1gLCBgUENJX0RFVklDRV9JRF9JQk1fSVNNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBnZXQgc3l6a2FsbGVyIHRvIGhpdCB0aGlzPyBDYW4gaXQgZW11bGF0ZSB0aGlzIGRldmljZSBzb21laG93LCBtYXliZSB0aHJvdWdoIGB2aGNpYCwgYHBjaV9lbmRwb2ludGAsIG9yIGV2ZW4gYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBub3QgaG93IHN5emthbGxlciBnZW5lcmFsbHkgaGFuZGxlcyBQQ0kgZGV2aWNlcy4gVW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYywgYnVpbHQtaW4gZW11bGF0aW9uIGZyYW1ld29yayBsaWtlIGB2aGNpYCBmb3IgVVNCLCBzeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgZW11bGF0ZSBnZW5lcmljIFBDSSBkZXZpY2VzLlxuXG5IbW0sIHdhaXQgYSBtaW51dGUuLi4gc3l6a2FsbGVyICpkb2Vzbid0KiBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIGNhcGFibGUgb2YgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyBpbnRvIHRoZSBndWVzdC4gU3VyZSwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGhhY2t5IHZpYSB0aGUgUUVNVSBjb21tYW5kIGxpbmUsIGJ1dCB0aGF0J3Mgbm90IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMgZHluYW1pY2FsbHkgZHVyaW5nIGZ1enppbmcuIEl0IGRvZXNuJ3QgYWRkIFBDSSBkZXZpY2VzIG9uIHRoZSBmbHkgd2l0aCByYW5kb20gdmVuZG9yL2RldmljZSBJRHMuXG5cblJpZ2h0LCBzbyB0aGlzIGNvZGUgcGF0aCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gVGhpcyBicmFuY2ggd2lsbCAqbmV2ZXIqIGJlIHRha2VuIGluIHRoZSB0eXBpY2FsIEdDRSBvciBRRU1VIGVudmlyb25tZW50cyB0aGF0IHN5emthbGxlciB1c2VzLCB1bmxlc3Mgd2UncmUgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBoYXJkd2FyZSwgb3Igc29tZSB2ZXJ5IHNwZWNpZmljIFFFTVUgY29uZmlndXJhdGlvbiB0aGF0IHN5emthbGxlciBqdXN0IGRvZXNuJ3QgdXNlLlxuXG5CdXQsIGhvbGQgb24uLi4gaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBjb3VsZCBiZSBzZXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIExldCdzIGxvb2sgZm9yIG90aGVyIGluc3RhbmNlcyBvZiBgbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBjb2RlLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcGF0aHMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTc0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjE1OjAwLjQ3MDQ4MDAxNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NzI3ODQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub25fbWFwcGFibGVfYmFyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTgtXFx0ICovXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoxOTpcXHRwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0yMC19XFxuLS1cXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjQtXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1OlxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM9MzIwPXN0cnVjdCBwMnBkbWFfcHJvdmlkZXIgKnBjaW1fcDJwZG1hX3Byb3ZpZGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBiYXIpIFxcdTAwMjYgSU9SRVNPVVJDRV9NRU0pIHx8XFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1OlxcdCAgICBwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjc4PV9fcGNpX3Jlc291cmNlX2F0dHJfaXNfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI4NTpcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTI4Ni1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYz0yNDQ9c3RhdGljIGludCBwcm9jX2J1c19wY2lfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU1LVxcdC8qIFNraXAgZGV2aWNlcyB3aXRoIG5vbi1tYXBwYWJsZSBCQVJzICovXFxuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcXHRpZiAoZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTk1PXN0YXRpYyB2b2lkIHZmaW9fcGNpX3Byb2JlX21tYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMDY6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cXHRcXHRcXHRnb3RvIG5vX21tYXA7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01NDc9c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTYtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTU3OlxcdFxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oPTM1Mj1zdHJ1Y3QgcGNpX2RldiB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTUxMS1cXHR1bnNpZ25lZCBpbnRcXHRyb21fYXR0cl9lbmFibGVkOjE7XFx0LyogRGlzcGxheSBvZiBST00gYXR0cmlidXRlIGVuYWJsZWQ/ICovXFxuaW5jbHVkZS9saW51eC9wY2kuaDo1MTI6XFx0dW5zaWduZWQgaW50XFx0bm9uX21hcHBhYmxlX2JhcnM6MTtcXHQvKiBCQVJzIGNhbid0IGJlIG1hcHBlZCBieSBDUFUgb3IgcGVlcnMgKi9cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTUxMy1cXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxNTowMy4xNjc3NzI1ODZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MzA1MzQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQncyBsb2NhbGl6ZWQg4oCTIHNwZWNpZmljYWxseSwgaXQncyBvbmx5IHRvdWNoaW5nIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gVGhhdCBhbG9uZSBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseTsgdGhpcyBpcyBzb21ldGhpbmcgZGVkaWNhdGVkIHRvIHMzOTAgSVNNIGRldmljZXMuIE5vdywgdGhlIHJlYWwga2lja2VyOiB0aGlzIHNlZW1zIHRvIHJlbHkgb24gcGh5c2ljYWwgb3IgZW11bGF0ZWQgczM5MCBJU00gaGFyZHdhcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBzZXR1cCB0aGF0J3MgKm5vdCogZ29pbmcgdG8gYmUgZm91bmQgaW4gb3VyIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIEdpdmVuIHRob3NlIGRlcGVuZGVuY2llcywgdGhlIGNvc3QtYmVuZWZpdCBhbmFseXNpcyBqdXN0IGRvZXNuJ3QgcGFuIG91dC4gQXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgd291bGQgYmUgYSBzaWduaWZpY2FudCBlZmZvcnQgd2l0aCBhIHZlcnkgbG93IHByb2JhYmlsaXR5IG9mIHN1Y2Nlc3MsIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gdGFyZ2V0cyB3ZSBhcmUgY3VycmVudGx5IHB1cnN1aW5nLiBUaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3Mgc2ltcGx5IG5vdCBhIHByb2R1Y3RpdmUgYXZlbnVlIGZvciBvdXIgZnV6emluZyBlZmZvcnRzIGF0IHRoaXMgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDEsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTU6MTAuODIwODI4NTg1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowl8d98[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 02:52:42 +0000 UTC FinishedAt: 2026-07-31 03:15:11 +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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhMjVhOTVkMDM3OTNkNzBjZjQxYWEzOWUzM2JiYTc0YmYwNDcyZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzZjExYTk2MjRiOWMwLi42YTE4NDU4OGZmMjM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNTU0LDYgJiM0Mzs1NTQsOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbiBcbiBcdFx0dmRldi1cdTAwM2ViYXJtYXBbYmFyXSA9IElPTUVNX0VSUl9QVFIoLUVOT0RFVik7XG4gXG4mIzQzO1x0XHRpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuIFx0XHRpZiAoIXBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhMjVhOTVkMDM3OTNkNzBjZjQxYWEzOWUzM2JiYTc0YmYwNDcyZTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKaW5kZXggM2YxMWE5NjI0YjljMC4uNmExODQ1ODhmZjIzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMKQEAgLTU1NCw2ICYjNDM7NTU0LDkgQEAgc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpCiAKIAkJdmRldi0mZ3Q7YmFybWFwW2Jhcl0gPSBJT01FTV9FUlJfUFRSKC1FTk9ERVYpOwogCiYjNDM7CQlpZiAocGRldi0mZ3Q7bm9uX21hcHBhYmxlX2JhcnMpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiAJCWlmICghcGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSkKIAkJCWNvbnRpbnVlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGFuIGBpZiAocGRldi0mZ3Q7bm9uX21hcHBhYmxlX2JhcnMpIGNvbnRpbnVlO2AgbGluZSB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqIGhlcmUuIFdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb25kaXRpb25hbD8gV2hhdCBhcmUgJiMzNDtub25fbWFwcGFibGVfYmFycywmIzM0OyBhbmQgd2h5IHdvdWxkIHdlIHNraXAgYmFyIG1hcHBpbmcgYmFzZWQgb24gdGhpcyBmbGFnPyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIGhlcmUgc28gbGV0JiMzOTtzIGNoZWNrIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiB3aXRoaW4gYHZmaW9fcGNpX2NvcmUuY2AgaXRzZWxmLCBhbmQgbGV0JiMzOTtzIHF1aWNrbHkgZ3JlcCBmb3IgaXQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBzZWN0aW9uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BjaV9jb3JlX21hcF9iYXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTE5PXN0YXRpYyBpbnQgdmZpb19wY2lfY29yZV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ2LSAqL1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTQ3OnN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ4LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01OTA9aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02NjMtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2NjQ6XHR2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjY1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWRklPIFBDSSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBmcm9tIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBiYXIgbWFwcGluZyBpcyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgY29yZSBlbmFibGluZyBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHRlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6b29tIGluIG9uIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAuIEkgd2FudCB0byBzZWUgKmhvdyogaXQgY2FsbHMgYG1hcF9iYXJzYCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhhdCBjYWxsLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsIHdpbGwgcHJvdmlkZSBzaWduaWZpY2FudCBpbnNpZ2h0IGludG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNoZWNrcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGJhciBtYXBwaW5nPyBXaGF0JiMzOTtzIHRoZSBjb250cm9sIGZsb3c/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGhlcmUuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgVkZJTy1QQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNjaGVtZSBhbmQgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQkFScyBhcmUgbWFwcGVkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvaW50cyBmb3IgZnVydGhlciBvcHRpbWl6YXRpb24sIG9yIHBvdGVudGlhbCBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19wY2lfY29yZV9lbmFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1MTQ9c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MTktXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1MjA6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUyMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTUwPXN0YXRpYyBpbnQgaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy01OS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzo2MDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTYxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzMjM9c3RhdGljIGludCBtbHg1dmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTMyOS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTMzMDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xNzM9c3RhdGljIGludCBudmdyYWNlX2dwdV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xODItXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxODM6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE4NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTkzLVx0ICogR1BVIHJlYWRpbmVzcyBpcyBjaGVja2VkIGJ5IHJlYWRpbmcgdGhlIEJBUjAgcmVnaXN0ZXJzLlxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTk0Olx0ICogVGhlIEJBUiBtYXAgd2FzIGp1c3Qgc2V0IHVwIGJ5IHZmaW9fcGNpX2NvcmVfZW5hYmxlKCksIHNvXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xOTUtXHQgKiBiYWlsIGVhcmx5IGlmIHRoYXQgd2FzbiYjMzk7dCBzdWNjZXNzZnVsOlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTU5PXN0YXRpYyBpbnQgcGRzX3ZmaW9fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTY1LVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYzoxNjY6XHRlcnIgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZShcdTAwMjZwZHNfdmZpby1cdTAwM2V2ZmlvX2NvcmVkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xNjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz01OD1zdGF0aWMgaW50IHFhdF92Zl9wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTY1LVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjY2Olx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xMDM9c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA5LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjExMDpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2ZmlvX3BjaV9jb3JlX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01ODktXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1OTA6aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU5MS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjc5LX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjY4MDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2VuYWJsZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy02ODEtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTIxPXN0YXRpYyBpbnQgdmlydGlvdmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0yNy1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoyODpcdHJldCA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTI5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNTItXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNTM6XHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE1NC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBWRklPLVBDSSBFbmFibGVtZW50IFNlcXVlbmNlKioKCk9rYXksIHNvIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAgaXMgdHJpZ2dlcmVkIHdoZW4gYSBWRklPLVBDSSBkZXZpY2UgaXMgb3BlbmVkLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGB2ZmlvX3BjaV9vcGVuX2RldmljZWAsIHdoaWNoIGlzIHRoZSBvcGVuIGNhbGxiYWNrIGZvciB0aGUgYHZmaW9fcGNpYCBkcml2ZXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50ISBJJiMzOTttIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byBleGFtaW5pbmcgYHZmaW9fcGNpX29wZW5fZGV2aWNlYCBhbmQgZmlndXJlIG91dCBwcmVjaXNlbHkgaG93IHRoYXQgcGF0aCBsZWFkcyB0byBgdmZpb19wY2lfY29yZV9lbmFibGVgIGJlaW5nIGNhbGxlZC4gVW5kZXJzdGFuZGluZyB0aGlzIGluaXRpYWwgY2FsbCBzZXF1ZW5jZSBpcyBmdW5kYW1lbnRhbCB0byBncmFzcCB0aGUgVkZJTy1QQ0kgZW5hYmxlbWVudCBwcm9jZXNzLiBHb3R0YSBzdGFydCB3aXRoIHRoZSBvcGVuLCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BjaV9vcGVuX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTQ5Mj1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmX21pZ2ZfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MTMtXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1MTQ6c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUxNS17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1ODQtXHQucmVsZWFzZSA9IHZmaW9fcGNpX2NvcmVfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODU6XHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ni1cdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MDUtXHQucmVsZWFzZSA9IHZmaW9fcGNpX2NvcmVfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDY6XHQub3Blbl9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwNy1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9NDU9c3RydWN0IGlzbV92ZmlvX3BjaV9jb3JlX2RldmljZSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQ5LVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjUwOnN0YXRpYyBpbnQgaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTUxLXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM9MzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGlzbV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zMzgtXHQucmVsZWFzZSA9IGlzbV92ZmlvX3BjaV9yZWxlYXNlX2RldixcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozMzk6XHQub3Blbl9kZXZpY2UgPSBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzQwLVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz04NT1zdGF0aWMgYm9vbCB2ZmlvX3BjaV9pc19kZW55bGlzdGVkKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xMDItXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTAzOnN0YXRpYyBpbnQgdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA0LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTUyLVx0LnJlbGVhc2VcdD0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNTM6XHQub3Blbl9kZXZpY2VcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU0LVx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgeGVfdmZpb19wY2lfZXJyX2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE0NS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjE0NjpzdGF0aWMgaW50IHhlX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTQ3LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNS1cdC5yZWxlYXNlID0geGVfdmZpb19wY2lfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MjY6XHQub3Blbl9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNy1cdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWRklPIFBDSSBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGlzIFZGSU8gUENJIGRyaXZlciBjb2RlLiBJIGtub3cgdXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIGl0IHRocm91Z2ggdGhvc2UgYC9kZXYvdmZpby9gIGRldmljZXMuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gUUVNVSDigJMgZG9lcyBRRU1VIGVtdWxhdGUgUENJIGRldmljZXMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFZGSU8gcGFzc3Rocm91Z2g/IEkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgaXQsIHNwZWNpZmljYWxseSB3aXRoIGBzeXpfa3ZtX3NldHVwX2NwdWAgYW5kIG90aGVyIFZGSU8gcHNldWRvLXN5c2NhbGxzIGluIHN5emthbGxlci4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIFZGSU8gUENJIGZyb20gd2l0aGluIGEgVk0sIG9yIGFyZSB0aGVyZSBsaW1pdGF0aW9ucyB0aGVyZT8KClJpZ2h0LCBzeXprYWxsZXIgZG9lcyBoYXZlIFZGSU8gZnV6emluZyBzdXBwb3J0LiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYD8gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCB0YXJnZXQ7IGl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIHRoZSBWRklPIFBDSSBjb3JlIGFuZCBkZWFscyB3aXRoIG1hcHBpbmcgUENJIEJhc2UgQWRkcmVzcyBSZWdpc3RlcnMgKEJBUnMpLiBJcyB0aGlzIGEgd29ydGh3aGlsZSBmdXp6aW5nIHRhcmdldD8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsaXR5IGNoYW5nZSBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLgoKSG1tLCB0aGlzIGBwZGV2LSZndDtub25fbWFwcGFibGVfYmFyc2AgdGhpbmfigKYgdGhhdCYjMzk7cyBhIG5ldyBmaWVsZCBpbiB0aGUgYHN0cnVjdCBwY2lfZGV2YD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBpbnRvIHRoZSBgaW5jbHVkZS9saW51eC9wY2kuaGAgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVx0ICovXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5Olx0cGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0zMjA9c3RydWN0IHAycGRtYV9wcm92aWRlciAqcGNpbV9wMnBkbWFfcHJvdmlkZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYsIGJhcikgXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1Olx0ICAgIHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyNzg9X19wY2lfcmVzb3VyY2VfYXR0cl9pc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjg1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvcGNpL3Byb2MuYy0yNTUtXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcdGlmIChkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xOTU9c3RhdGljIHZvaWQgdmZpb19wY2lfcHJvYmVfbW1hcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNjpcdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cdFx0XHRnb3RvIG5vX21tYXA7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU1Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXHRcdFx0Y29udGludWU7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xuLS1cbmluY2x1ZGUvbGludXgvcGNpLmgtNTExLVx0dW5zaWduZWQgaW50XHRyb21fYXR0cl9lbmFibGVkOjE7XHQvKiBEaXNwbGF5IG9mIFJPTSBhdHRyaWJ1dGUgZW5hYmxlZD8gKi9cbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlx0dW5zaWduZWQgaW50XHRub25fbWFwcGFibGVfYmFyczoxO1x0LyogQkFScyBjYW4mIzM5O3QgYmUgbWFwcGVkIGJ5IENQVSBvciBwZWVycyAqL1xuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTE2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTm9uLU1hcHBhYmxlIEJBUnMgaW4gYSBWTSBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoaXMgYG5vbl9tYXBwYWJsZV9iYXJzYCBmbGFnIHBvcCB1cCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZS4gSXQmIzM5O3MgcmVsYXRlZCB0byBkZXZpY2VzIGxpa2UgYHpwY2lfaXNtX2Jhcl9ub19tbWFwYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgcmVsZXZhbnQgaW4gYSBnZW5lcmljIHg4NiB2aXJ0dWFsIG1hY2hpbmUgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4KCkxvb2tpbmcgY2xvc2VyLCB0aGlzIHBhdGNoIHNlZW1zIHRvIGludHJvZHVjZSBhIG5ldyBjb25kaXRpb24gd2l0aGluIGB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzYDogYGlmIChwZGV2LSZndDtub25fbWFwcGFibGVfYmFycykgY29udGludWU7YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgZ2F0ZWtlZXBlciDigJMgaWYgdGhlIGZsYWcgaXMgKm5vdCogc2V0LCB0aGluZ3MgcHJvY2VlZCBhcyB0aGV5IGFsd2F5cyBoYXZlLiBCdXQsIGlmIHRoZSBgbm9uX21hcHBhYmxlX2JhcnNgICppcyogc2V0LCBpdCBjb21wbGV0ZWx5IGJ5cGFzc2VzIG1hcHBpbmcgdGhlIHNwZWNpZmljIEJBUi4gVGhhdOKAmXMgdGhlIGtleS4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICp0cmlnZ2VyKiB0aGlzIGBub25fbWFwcGFibGVfYmFyc2AgZmxhZyBpbiBhIG1vcmUgZ2VuZXJhbGl6ZWQgVk0gc2V0dXA/IFdoZXJlIGlzIHRoaXMgZmxhZyBzZXQ/IEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCwgSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgaG93IHRoaXMgZmxhZyBpcyBiZWluZyBhc3NpZ25lZCB0byB0aGUgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMgPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTEyPXN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTgtXHQgKi9cbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MTk6XHRwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzID0gMTtcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTI2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGEgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGFwcGVhcnMgdG8gYmUgc3BlY2lmaWMgdG8gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLCBhbmQgaXQmIzM5O3MgcmVsYXRlZCB0byBJU00gZGV2aWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzIG9uIHg4NiBvciBhbm90aGVyIGFyY2hpdGVjdHVyZT8gVGhlIGNvZGUgcGF0aCBoaW5nZXMgb24gYHBkZXYtJmd0O25vbl9tYXBwYWJsZV9iYXJzYCBiZWluZyBzZXQsIHdoaWNoIHRoZSBncmVwIG91dHB1dCBjb25maXJtcyBpcyBvbmx5IHNldCBpbiB0aGF0IG9uZSBzcGVjaWZpYyBmaWxlIGZvciBzMzkwIElTTSBkZXZpY2VzLiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBgaWYgKHBkZXYtJmd0O25vbl9tYXBwYWJsZV9iYXJzKSBjb250aW51ZTtgIHdpbGwgKm9ubHkqIGJlIGV4ZWN1dGVkIG9uIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBvbmx5IGZvciBJU00gZGV2aWNlcy4KCldhaXQsIHN5emthbGxlciAqY2FuKiBmdXp6IHMzOTB4LiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBlbXVsYXRlIHMzOTAgSVNNIGRldmljZXM/IEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlc2UgYXJlIGV2ZW4gZW11bGF0ZWQuIEludGVybmFsIFNoYXJlZCBNZW1vcnkgKElTTSkgaXMgdGhlIGtleSBoZXJlLiBFdmVuIGlmIHN5emthbGxlciBjYW4gcnVuIG9uIHMzOTB4LCB0aGlzIGlzIHN0aWxsIGhhcmR3YXJlLXNwZWNpZmljLgoKVGhlbiwgdGhlIHByYWdtYXRpc3QgaW4gbWUga2lja3MgaW4g4oCTIGlzIHRoaXMgdGlueSBwYXRjaCBldmVuIHdvcnRoIHRoZSBlZmZvcnQ/IEl0JiMzOTtzIGxpdGVyYWxseSBqdXN0IHR3byBsaW5lczoKCmBgYGMKJiM0MzsJCWlmIChwZGV2LSZndDtub25fbWFwcGFibGVfYmFycykKJiM0MzsJCQljb250aW51ZTsKYGBgCgpHaXZlbiB0aGF0IGBub25fbWFwcGFibGVfYmFyc2AgaXMgKm9ubHkqIHNldCB3aXRoaW4gdGhhdCBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZSBhbmQgc3BlY2lmaWNhbGx5IGZvciBJU00gZGV2aWNlcywgdGhpcyBjb2RlIGJyYW5jaCB3aWxsIG5ldmVyIGJlIHRha2VuIG9uIHg4NiwgYXJtNjQsIG9yIGFueSBvdGhlciBhcmNoaXRlY3R1cmVzLiBFdmVuIG9uIHMzOTB4LCBpdOKAmXMgZGVwZW5kZW50IG9uIHRoZSBwcmVzZW5jZSBvZiBhbiBJU00gZGV2aWNlLgoKSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYCBpdHNlbGYgYW5kIHNlZSB3aGF0IGRldmljZXMgaXQgYWN0dWFsbHkgbWF0Y2hlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enBjaV9pc21fYmFyX25vX21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTEtXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjEyOnN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0xMy17XG4tLVxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0yMT1ERUNMQVJFX1BDSV9GSVhVUF9FQVJMWShQQ0lfVkVORE9SX0lEX0lCTSxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjItXHRcdFx0UENJX0RFVklDRV9JRF9JQk1fSVNNLFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoyMzpcdFx0XHR6cGNpX2lzbV9iYXJfbm9fbW1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NzQKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlYWNoYWJpbGl0eSBpbiBhIFN5emthbGxlciBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGlkZW50aWZpZWQgY29kZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBieSBzcGVjaWZpYyBQQ0kgZGV2aWNlIElEczogYFBDSV9WRU5ET1JfSURfSUJNYCwgYFBDSV9ERVZJQ0VfSURfSUJNX0lTTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZ2V0IHN5emthbGxlciB0byBoaXQgdGhpcz8gQ2FuIGl0IGVtdWxhdGUgdGhpcyBkZXZpY2Ugc29tZWhvdywgbWF5YmUgdGhyb3VnaCBgdmhjaWAsIGBwY2lfZW5kcG9pbnRgLCBvciBldmVuIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgc3l6a2FsbGVyIGdlbmVyYWxseSBoYW5kbGVzIFBDSSBkZXZpY2VzLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYywgYnVpbHQtaW4gZW11bGF0aW9uIGZyYW1ld29yayBsaWtlIGB2aGNpYCBmb3IgVVNCLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IGVtdWxhdGUgZ2VuZXJpYyBQQ0kgZGV2aWNlcy4KCkhtbSwgd2FpdCBhIG1pbnV0ZS4uLiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIGNhcGFibGUgb2YgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyBpbnRvIHRoZSBndWVzdC4gU3VyZSwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGhhY2t5IHZpYSB0aGUgUUVNVSBjb21tYW5kIGxpbmUsIGJ1dCB0aGF0JiMzOTtzIG5vdCBob3cgc3l6a2FsbGVyIG9wZXJhdGVzIGR5bmFtaWNhbGx5IGR1cmluZyBmdXp6aW5nLiBJdCBkb2VzbiYjMzk7dCBhZGQgUENJIGRldmljZXMgb24gdGhlIGZseSB3aXRoIHJhbmRvbSB2ZW5kb3IvZGV2aWNlIElEcy4KClJpZ2h0LCBzbyB0aGlzIGNvZGUgcGF0aCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gVGhpcyBicmFuY2ggd2lsbCAqbmV2ZXIqIGJlIHRha2VuIGluIHRoZSB0eXBpY2FsIEdDRSBvciBRRU1VIGVudmlyb25tZW50cyB0aGF0IHN5emthbGxlciB1c2VzLCB1bmxlc3Mgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIHNvbWUgdmVyeSBzcGVjaWZpYyBRRU1VIGNvbmZpZ3VyYXRpb24gdGhhdCBzeXprYWxsZXIganVzdCBkb2VzbiYjMzk7dCB1c2UuCgpCdXQsIGhvbGQgb24uLi4gaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBjb3VsZCBiZSBzZXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIExldCYjMzk7cyBsb29rIGZvciBvdGhlciBpbnN0YW5jZXMgb2YgYG5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBhdGhzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9uX21hcHBhYmxlX2JhcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVx0ICovXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5Olx0cGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0zMjA9c3RydWN0IHAycGRtYV9wcm92aWRlciAqcGNpbV9wMnBkbWFfcHJvdmlkZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpXG4tLVxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVx0aWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYsIGJhcikgXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1Olx0ICAgIHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXHRcdHJldHVybiBOVUxMO1xuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jPTEyNzg9X19wY2lfcmVzb3VyY2VfYXR0cl9pc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYzoxMjg1Olx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvcGNpL3Byb2MuYy0yNTUtXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcdGlmIChkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xOTU9c3RhdGljIHZvaWQgdmZpb19wY2lfcHJvYmVfbW1hcHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNjpcdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cdFx0XHRnb3RvIG5vX21tYXA7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU1Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXHRcdFx0Y29udGludWU7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xuLS1cbmluY2x1ZGUvbGludXgvcGNpLmgtNTExLVx0dW5zaWduZWQgaW50XHRyb21fYXR0cl9lbmFibGVkOjE7XHQvKiBEaXNwbGF5IG9mIFJPTSBhdHRyaWJ1dGUgZW5hYmxlZD8gKi9cbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlx0dW5zaWduZWQgaW50XHRub25fbWFwcGFibGVfYmFyczoxO1x0LyogQkFScyBjYW4mIzM5O3QgYmUgbWFwcGVkIGJ5IENQVSBvciBwZWVycyAqL1xuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI0MQoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgbG9jYWxpemVkIOKAkyBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIG9ubHkgdG91Y2hpbmcgYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBUaGF0IGFsb25lIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgY29uc2lkZXJhYmx5OyB0aGlzIGlzIHNvbWV0aGluZyBkZWRpY2F0ZWQgdG8gczM5MCBJU00gZGV2aWNlcy4gTm93LCB0aGUgcmVhbCBraWNrZXI6IHRoaXMgc2VlbXMgdG8gcmVseSBvbiBwaHlzaWNhbCBvciBlbXVsYXRlZCBzMzkwIElTTSBoYXJkd2FyZS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBzZXR1cCB0aGF0JiMzOTtzICpub3QqIGdvaW5nIHRvIGJlIGZvdW5kIGluIG91ciBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnRzLiBHaXZlbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHRoZSBjb3N0LWJlbmVmaXQgYW5hbHlzaXMganVzdCBkb2VzbiYjMzk7dCBwYW4gb3V0LiBBdHRlbXB0aW5nIHRvIGZ1enogdGhpcyB3b3VsZCBiZSBhIHNpZ25pZmljYW50IGVmZm9ydCB3aXRoIGEgdmVyeSBsb3cgcHJvYmFiaWxpdHkgb2Ygc3VjY2VzcywgZXNwZWNpYWxseSBjb21wYXJlZCB0byB0YXJnZXRzIHdlIGFyZSBjdXJyZW50bHkgcHVyc3VpbmcuIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIHNpbXBseSBub3QgYSBwcm9kdWN0aXZlIGF2ZW51ZSBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cyBhdCB0aGlzIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFyc2AgaW4gdGhlIFZGSU8gUENJIGNvcmUuIFRoaXMgZmxhZyBpcyBvbmx5IHNldCBmb3Igc3BlY2lmaWMgczM5MCBJU00gaGFyZHdhcmUgZGV2aWNlcyAoUENJX1ZFTkRPUl9JRF9JQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgaW4gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgVkZJTyBQQ0kgY29yZS4gVGhpcyBmbGFnIGlzIG9ubHkgc2V0IGZvciBzcGVjaWZpYyBzMzkwIElTTSBoYXJkd2FyZSBkZXZpY2VzIChQQ0lfVkVORE9SX0lEX0lCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzoyOS43NDU4MTE0NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEwNzUwNTkyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBpbiB0aGUgVkZJTyBQQ0kgY29yZS4gVGhpcyBmbGFnIGlzIG9ubHkgc2V0IGZvciBzcGVjaWZpYyBzMzkwIElTTSBoYXJkd2FyZSBkZXZpY2VzIChQQ0lfVkVORE9SX0lEX0lCTSwgUENJX0RFVklDRV9JRF9JQk1fSVNNKSBpbiBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjI5Ljc0NTgxNjQ2NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyMTEyNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWEyNWE5NWQwMzc5M2Q3MGNmNDFhYTM5ZTMzYmJhNzRiZjA0NzJlOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzoxMzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuaW5kZXggM2YxMWE5NjI0YjljMC4uNmExODQ1ODhmZjIzNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXFxuQEAgLTU1NCw2ICs1NTQsOSBAQCBzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4gXFxuIFxcdFxcdHZkZXYtXFx1MDAzZWJhcm1hcFtiYXJdID0gSU9NRU1fRVJSX1BUUigtRU5PREVWKTtcXG4gXFxuK1xcdFxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbiBcXHRcXHRpZiAoIXBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6MzAuMjY4ODkzMjgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAwNTUxOTY5NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIGBwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFyc2AgaW4gdGhlIFZGSU8gUENJIGNvcmUuIFRoaXMgZmxhZyBpcyBvbmx5IHNldCBmb3Igc3BlY2lmaWMgczM5MCBJU00gaGFyZHdhcmUgZGV2aWNlcyAoUENJX1ZFTkRPUl9JRF9JQk0sIFBDSV9ERVZJQ0VfSURfSUJNX0lTTSkgaW4gYGFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmNgLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YTI1YTk1ZDAzNzkzZDcwY2Y0MWFhMzllMzNiYmE3NGJmMDQ3MmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDM6MTM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCAzZjExYTk2MjRiOWMwLi42YTE4NDU4OGZmMjM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtNTU0LDYgKzU1NCw5IEBAIHN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuIFxuIFx0XHR2ZGV2LVx1MDAzZWJhcm1hcFtiYXJdID0gSU9NRU1fRVJSX1BUUigtRU5PREVWKTtcbiBcbitcdFx0aWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXG4rXHRcdFx0Y29udGludWU7XG4rXG4gXHRcdGlmICghcGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjMwLjI2ODg5NTQ2M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDM1Nzc4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTy1QQ0kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0J3MgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGFuIGBpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycykgY29udGludWU7YCBsaW5lIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogaGVyZS4gV2hhdCdzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29uZGl0aW9uYWw/IFdoYXQgYXJlIFwibm9uX21hcHBhYmxlX2JhcnMsXCIgYW5kIHdoeSB3b3VsZCB3ZSBza2lwIGJhciBtYXBwaW5nIGJhc2VkIG9uIHRoaXMgZmxhZz8gYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIHNvIGxldCdzIGNoZWNrIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gd2l0aGluIGB2ZmlvX3BjaV9jb3JlLmNgIGl0c2VsZiwgYW5kIGxldCdzIHF1aWNrbHkgZ3JlcCBmb3IgaXQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSBzZWN0aW9uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3OCwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjM1LjUxMjQ4NDEzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk4MTk5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9tYXBfYmFyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01MTk9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU0Ni0gKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1NDc6c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTQ4LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTU5MD1pbnQgdmZpb19wY2lfY29yZV9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjYzLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjY2NDpcXHR2ZmlvX3BjaV9jb3JlX21hcF9iYXJzKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6MzUuNjIyMzA4NDM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNTY5NTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVkZJTyBQQ0kgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKlxuXG5Pa2F5LCBzbyBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2AgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBpbnZva2VkIGZyb20gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGJhciBtYXBwaW5nIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBjb3JlIGVuYWJsaW5nIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0dGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHpvb20gaW4gb24gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYC4gSSB3YW50IHRvIHNlZSAqaG93KiBpdCBjYWxscyBgbWFwX2JhcnNgIGFuZCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGF0IGNhbGwuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgd2lsbCBwcm92aWRlIHNpZ25pZmljYW50IGluc2lnaHQgaW50byB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgY2hlY2tzIGJlZm9yZSBvciBhZnRlciB0aGUgYmFyIG1hcHBpbmc/IFdoYXQncyB0aGUgY29udHJvbCBmbG93PyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGhlcmUuIFRoaXMgd2lsbCBoZWxwIGNsYXJpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgVkZJTy1QQ0kgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNjaGVtZSBhbmQgaWYgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQkFScyBhcmUgbWFwcGVkIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvaW50cyBmb3IgZnVydGhlciBvcHRpbWl6YXRpb24sIG9yIHBvdGVudGlhbCBlcnJvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzo0MC4yMjgwMDYxMDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMjAzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2NvcmVfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9wY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTUxND1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTE5LVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTUyMDpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1MjEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz01MD1zdGF0aWMgaW50IGlzbV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy01OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6NjA6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTYxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jPTEzMjM9c3RhdGljIGludCBtbHg1dmZfcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzI5LVxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTMzMDpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTE3Mz1zdGF0aWMgaW50IG52Z3JhY2VfZ3B1X29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTgyLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjE4MzpcXHRyZXQgPSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xODQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE5My1cXHQgKiBHUFUgcmVhZGluZXNzIGlzIGNoZWNrZWQgYnkgcmVhZGluZyB0aGUgQkFSMCByZWdpc3RlcnMuXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTk0OlxcdCAqIFRoZSBCQVIgbWFwIHdhcyBqdXN0IHNldCB1cCBieSB2ZmlvX3BjaV9jb3JlX2VuYWJsZSgpLCBzb1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTE5NS1cXHQgKiBiYWlsIGVhcmx5IGlmIHRoYXQgd2Fzbid0IHN1Y2Nlc3NmdWw6XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE1OT1zdGF0aWMgaW50IHBkc192ZmlvX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMTY1LVxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTY2OlxcdGVyciA9IHZmaW9fcGNpX2NvcmVfZW5hYmxlKFxcdTAwMjZwZHNfdmZpby1cXHUwMDNldmZpb19jb3JlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTU4PXN0YXRpYyBpbnQgcWF0X3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02NS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjY6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTAzPXN0YXRpYyBpbnQgdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA5LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMTA6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTExMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB2ZmlvX3BjaV9jb3JlX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTU4OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo1OTA6aW50IHZmaW9fcGNpX2NvcmVfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01OTEte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNjc5LX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo2ODA6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lbmFibGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0yMT1zdGF0aWMgaW50IHZpcnRpb3ZmX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0yNy1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6Mjg6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTI5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz0xNDY9c3RhdGljIGludCB4ZV92ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTE1Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzoxNTM6XFx0cmV0ID0gdmZpb19wY2lfY29yZV9lbmFibGUodmRldik7XFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTU0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjQwLjM0MTIxMzg2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDMxNDY4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPLVBDSSBFbmFibGVtZW50IFNlcXVlbmNlKipcblxuT2theSwgc28gYHZmaW9fcGNpX2NvcmVfZW5hYmxlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhIFZGSU8tUENJIGRldmljZSBpcyBvcGVuZWQuIFRoYXQgbWVhbnMgd2UncmUgbG9va2luZyBhdCBgdmZpb19wY2lfb3Blbl9kZXZpY2VgLCB3aGljaCBpcyB0aGUgb3BlbiBjYWxsYmFjayBmb3IgdGhlIGB2ZmlvX3BjaWAgZHJpdmVyLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50ISBJJ20gZ29pbmcgdG8ganVtcCByaWdodCBpbnRvIGV4YW1pbmluZyBgdmZpb19wY2lfb3Blbl9kZXZpY2VgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhhdCBwYXRoIGxlYWRzIHRvIGB2ZmlvX3BjaV9jb3JlX2VuYWJsZWAgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBjYWxsIHNlcXVlbmNlIGlzIGZ1bmRhbWVudGFsIHRvIGdyYXNwIHRoZSBWRklPLVBDSSBlbmFibGVtZW50IHByb2Nlc3MuIEdvdHRhIHN0YXJ0IHdpdGggdGhlIG9wZW4sIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBzdGFydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NDYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxMzo0NC4xODQzNjQxMDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA1ODcwMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfb3Blbl9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNDkyPXN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfbWlnZl9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTUxNDpzdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTUxNS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg0LVxcdC5yZWxlYXNlID0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODU6XFx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg2LVxcdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA1LVxcdC5yZWxlYXNlID0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDY6XFx0Lm9wZW5fZGV2aWNlID0gaGlzaV9hY2NfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz00NT1zdHJ1Y3QgaXNtX3ZmaW9fcGNpX2NvcmVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy00OS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6NTA6c3RhdGljIGludCBpc21fdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaXNtX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzM4LVxcdC5yZWxlYXNlID0gaXNtX3ZmaW9fcGNpX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozMzk6XFx0Lm9wZW5fZGV2aWNlID0gaXNtX3ZmaW9fcGNpX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDAtXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jPTg1PXN0YXRpYyBib29sIHZmaW9fcGNpX2lzX2RlbnlsaXN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTAyLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxMDM6c3RhdGljIGludCB2ZmlvX3BjaV9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1Mi1cXHQucmVsZWFzZVxcdD0gdmZpb19wY2lfY29yZV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MTUzOlxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1NC1cXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTE0MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB4ZV92ZmlvX3BjaV9lcnJfaGFuZGxlcnMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy0xNDUtXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6MTQ2OnN0YXRpYyBpbnQgeGVfdmZpb19wY2lfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTUyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB4ZV92ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYy01MjUtXFx0LnJlbGVhc2UgPSB4ZV92ZmlvX3BjaV9yZWxlYXNlX2RldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MjY6XFx0Lm9wZW5fZGV2aWNlID0geGVfdmZpb19wY2lfb3Blbl9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI3LVxcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjQ0LjI0NDk1NjEzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyOTg1MDA3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBQQ0kgRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgVkZJTyBQQ0kgZHJpdmVyIGNvZGUuIEkga25vdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQgdGhyb3VnaCB0aG9zZSBgL2Rldi92ZmlvL2AgZGV2aWNlcy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBRRU1VIOKAkyBkb2VzIFFFTVUgZW11bGF0ZSBQQ0kgZGV2aWNlcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggVkZJTyBwYXNzdGhyb3VnaD8gSSByZWNhbGwgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBpdCwgc3BlY2lmaWNhbGx5IHdpdGggYHN5el9rdm1fc2V0dXBfY3B1YCBhbmQgb3RoZXIgVkZJTyBwc2V1ZG8tc3lzY2FsbHMgaW4gc3l6a2FsbGVyLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSAqZnV6eiogVkZJTyBQQ0kgZnJvbSB3aXRoaW4gYSBWTSwgb3IgYXJlIHRoZXJlIGxpbWl0YXRpb25zIHRoZXJlP1xuXG5SaWdodCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBWRklPIGZ1enppbmcgc3VwcG9ydC4gVGhhdCdzIGdvb2QgbmV3cy4gTGV0J3Mgc2VlLi4uIHdoYXQgYWJvdXQgYHZmaW9fcGNpX2NvcmVfbWFwX2JhcnNgPyBUaGF0IHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldDsgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgVkZJTyBQQ0kgY29yZSBhbmQgZGVhbHMgd2l0aCBtYXBwaW5nIFBDSSBCYXNlIEFkZHJlc3MgUmVnaXN0ZXJzIChCQVJzKS4gSXMgdGhpcyBhIHdvcnRod2hpbGUgZnV6emluZyB0YXJnZXQ/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbGl0eSBjaGFuZ2UgaW4gdGhlIFZGSU8gUENJIGRyaXZlci5cblxuSG1tLCB0aGlzIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCB0aGluZ+KApiB0aGF0J3MgYSBuZXcgZmllbGQgaW4gdGhlIGBzdHJ1Y3QgcGNpX2RldmA/IEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGxvb2tpbmcgaW50byB0aGUgYGluY2x1ZGUvbGludXgvcGNpLmhgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNjAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6NTAuNTQzNDYwNjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDAwODA1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm9uX21hcHBhYmxlX2JhcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MTI9c3RhdGljIHZvaWQgenBjaV9pc21fYmFyX25vX21tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTE4LVxcdCAqL1xcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM6MTk6XFx0cGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMgPSAxO1xcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMjAtfVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM9MjYwPWludCBwY2ltX3AycGRtYV9pbml0KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY0LVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jOjI2NTpcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMjY2LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jPTMyMD1zdHJ1Y3QgcDJwZG1hX3Byb3ZpZGVyICpwY2ltX3AycGRtYV9wcm92aWRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcilcXG4tLVxcbmRyaXZlcnMvcGNpL3AycGRtYS5jLTMyNC1cXHRpZiAoIShwY2lfcmVzb3VyY2VfZmxhZ3MocGRldiwgYmFyKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSB8fFxcbmRyaXZlcnMvcGNpL3AycGRtYS5jOjMyNTpcXHQgICAgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI2LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM9MTI3OD1fX3BjaV9yZXNvdXJjZV9hdHRyX2lzX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYy0xMjg0LVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jOjEyODU6XFx0aWYgKHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL3BjaS9wcm9jLmM9MjQ0PXN0YXRpYyBpbnQgcHJvY19idXNfcGNpX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9wY2kvcHJvYy5jLTI1NS1cXHQvKiBTa2lwIGRldmljZXMgd2l0aCBub24tbWFwcGFibGUgQkFScyAqL1xcbmRyaXZlcnMvcGNpL3Byb2MuYzoyNTY6XFx0aWYgKGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcHJvYy5jLTI1Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE5NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9wcm9iZV9tbWFwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDUtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjA2OlxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDctXFx0XFx0XFx0Z290byBub19tbWFwO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NTQ3PXN0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfbWFwX2JhcnMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTU2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjU1NzpcXHRcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTU4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaD0zNTI9c3RydWN0IHBjaV9kZXYge1xcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaC01MTEtXFx0dW5zaWduZWQgaW50XFx0cm9tX2F0dHJfZW5hYmxlZDoxO1xcdC8qIERpc3BsYXkgb2YgUk9NIGF0dHJpYnV0ZSBlbmFibGVkPyAqL1xcbmluY2x1ZGUvbGludXgvcGNpLmg6NTEyOlxcdHVuc2lnbmVkIGludFxcdG5vbl9tYXBwYWJsZV9iYXJzOjE7XFx0LyogQkFScyBjYW4ndCBiZSBtYXBwZWQgYnkgQ1BVIG9yIHBlZXJzICovXFxuaW5jbHVkZS9saW51eC9wY2kuaC01MTMtXFx0cGNpX2Rldl9mbGFnc190IGRldl9mbGFncztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTM6NTMuNTQzNTQ3ODkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MjAzOTk1MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBOb24tTWFwcGFibGUgQkFScyBpbiBhIFZNIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoaXMgYG5vbl9tYXBwYWJsZV9iYXJzYCBmbGFnIHBvcCB1cCwgc3BlY2lmaWNhbGx5IGluIHRoZSBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgZmlsZS4gSXQncyByZWxhdGVkIHRvIGRldmljZXMgbGlrZSBgenBjaV9pc21fYmFyX25vX21tYXBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHRoaXMgZXZlbiBiZSByZWxldmFudCBpbiBhIGdlbmVyaWMgeDg2IHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBoZXJlLlxuXG5Mb29raW5nIGNsb3NlciwgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgY29uZGl0aW9uIHdpdGhpbiBgdmZpb19wY2lfY29yZV9tYXBfYmFyc2A6IGBpZiAocGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycykgY29udGludWU7YC4gRXNzZW50aWFsbHksIGl0J3MgYSBnYXRla2VlcGVyIOKAkyBpZiB0aGUgZmxhZyBpcyAqbm90KiBzZXQsIHRoaW5ncyBwcm9jZWVkIGFzIHRoZXkgYWx3YXlzIGhhdmUuIEJ1dCwgaWYgdGhlIGBub25fbWFwcGFibGVfYmFyc2AgKmlzKiBzZXQsIGl0IGNvbXBsZXRlbHkgYnlwYXNzZXMgbWFwcGluZyB0aGUgc3BlY2lmaWMgQkFSLiBUaGF04oCZcyB0aGUga2V5LlxuXG5TbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqdHJpZ2dlciogdGhpcyBgbm9uX21hcHBhYmxlX2JhcnNgIGZsYWcgaW4gYSBtb3JlIGdlbmVyYWxpemVkIFZNIHNldHVwPyBXaGVyZSBpcyB0aGlzIGZsYWcgc2V0PyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgSSdtIGdvaW5nIHRvIGRldGVybWluZSBob3cgdGhpcyBmbGFnIGlzIGJlaW5nIGFzc2lnbmVkIHRvIHRoZSBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTE2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjEzOjU5LjE2Mzk1MTQ4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2ODUxOTg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub25fbWFwcGFibGVfYmFycyA9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jPTEyPXN0YXRpYyB2b2lkIHpwY2lfaXNtX2Jhcl9ub19tbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0xOC1cXHQgKi9cXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jOjE5OlxcdHBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzID0gMTtcXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTIwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTQ6MDEuNjMyNDc5MTI3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDM1NzA4MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYXBwZWFycyB0byBiZSBzcGVjaWZpYyB0byBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AsIGFuZCBpdCdzIHJlbGF0ZWQgdG8gSVNNIGRldmljZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcyBvbiB4ODYgb3IgYW5vdGhlciBhcmNoaXRlY3R1cmU/IFRoZSBjb2RlIHBhdGggaGluZ2VzIG9uIGBwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzYCBiZWluZyBzZXQsIHdoaWNoIHRoZSBncmVwIG91dHB1dCBjb25maXJtcyBpcyBvbmx5IHNldCBpbiB0aGF0IG9uZSBzcGVjaWZpYyBmaWxlIGZvciBzMzkwIElTTSBkZXZpY2VzLiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBgaWYgKHBkZXYtXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpIGNvbnRpbnVlO2Agd2lsbCAqb25seSogYmUgZXhlY3V0ZWQgb24gczM5MCBhcmNoaXRlY3R1cmUgYW5kIG9ubHkgZm9yIElTTSBkZXZpY2VzLlxuXG5XYWl0LCBzeXprYWxsZXIgKmNhbiogZnV6eiBzMzkweC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSBzMzkwIElTTSBkZXZpY2VzPyBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXNlIGFyZSBldmVuIGVtdWxhdGVkLiBJbnRlcm5hbCBTaGFyZWQgTWVtb3J5IChJU00pIGlzIHRoZSBrZXkgaGVyZS4gRXZlbiBpZiBzeXprYWxsZXIgY2FuIHJ1biBvbiBzMzkweCwgdGhpcyBpcyBzdGlsbCBoYXJkd2FyZS1zcGVjaWZpYy5cblxuVGhlbiwgdGhlIHByYWdtYXRpc3QgaW4gbWUga2lja3MgaW4g4oCTIGlzIHRoaXMgdGlueSBwYXRjaCBldmVuIHdvcnRoIHRoZSBlZmZvcnQ/IEl0J3MgbGl0ZXJhbGx5IGp1c3QgdHdvIGxpbmVzOlxuXG5gYGBjXG4rXHRcdGlmIChwZGV2LVx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxuK1x0XHRcdGNvbnRpbnVlO1xuYGBgXG5cbkdpdmVuIHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBpcyAqb25seSogc2V0IHdpdGhpbiB0aGF0IGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgZm9yIElTTSBkZXZpY2VzLCB0aGlzIGNvZGUgYnJhbmNoIHdpbGwgbmV2ZXIgYmUgdGFrZW4gb24geDg2LCBhcm02NCwgb3IgYW55IG90aGVyIGFyY2hpdGVjdHVyZXMuIEV2ZW4gb24gczM5MHgsIGl04oCZcyBkZXBlbmRlbnQgb24gdGhlIHByZXNlbmNlIG9mIGFuIElTTSBkZXZpY2UuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRpdmUgaW50byBgYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuY2AgaXRzZWxmIGFuZCBzZWUgd2hhdCBkZXZpY2VzIGl0IGFjdHVhbGx5IG1hdGNoZXMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MjYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTQ6MTkuNjY4MTkwNDU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTIyOTQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6cGNpX2lzbV9iYXJfbm9fbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTEtXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoxMjpzdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5hcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jLTEzLXtcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmM9MjE9REVDTEFSRV9QQ0lfRklYVVBfRUFSTFkoUENJX1ZFTkRPUl9JRF9JQk0sXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0yMi1cXHRcXHRcXHRQQ0lfREVWSUNFX0lEX0lCTV9JU00sXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoyMzpcXHRcXHRcXHR6cGNpX2lzbV9iYXJfbm9fbW1hcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjE0OjE5LjczMzQyNDY3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczNzA1MjYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhY2hhYmlsaXR5IGluIGEgU3l6a2FsbGVyIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGlkZW50aWZpZWQgY29kZSB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIFBDSSBkZXZpY2UgSURzOiBgUENJX1ZFTkRPUl9JRF9JQk1gLCBgUENJX0RFVklDRV9JRF9JQk1fSVNNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBnZXQgc3l6a2FsbGVyIHRvIGhpdCB0aGlzPyBDYW4gaXQgZW11bGF0ZSB0aGlzIGRldmljZSBzb21laG93LCBtYXliZSB0aHJvdWdoIGB2aGNpYCwgYHBjaV9lbmRwb2ludGAsIG9yIGV2ZW4gYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBub3QgaG93IHN5emthbGxlciBnZW5lcmFsbHkgaGFuZGxlcyBQQ0kgZGV2aWNlcy4gVW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYywgYnVpbHQtaW4gZW11bGF0aW9uIGZyYW1ld29yayBsaWtlIGB2aGNpYCBmb3IgVVNCLCBzeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgZW11bGF0ZSBnZW5lcmljIFBDSSBkZXZpY2VzLlxuXG5IbW0sIHdhaXQgYSBtaW51dGUuLi4gc3l6a2FsbGVyICpkb2Vzbid0KiBoYXZlIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIGNhcGFibGUgb2YgaW5qZWN0aW5nIGFyYml0cmFyeSBQQ0kgZGV2aWNlcyBpbnRvIHRoZSBndWVzdC4gU3VyZSwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIGhhY2t5IHZpYSB0aGUgUUVNVSBjb21tYW5kIGxpbmUsIGJ1dCB0aGF0J3Mgbm90IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMgZHluYW1pY2FsbHkgZHVyaW5nIGZ1enppbmcuIEl0IGRvZXNuJ3QgYWRkIFBDSSBkZXZpY2VzIG9uIHRoZSBmbHkgd2l0aCByYW5kb20gdmVuZG9yL2RldmljZSBJRHMuXG5cblJpZ2h0LCBzbyB0aGlzIGNvZGUgcGF0aCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBWTS4gVGhpcyBicmFuY2ggd2lsbCAqbmV2ZXIqIGJlIHRha2VuIGluIHRoZSB0eXBpY2FsIEdDRSBvciBRRU1VIGVudmlyb25tZW50cyB0aGF0IHN5emthbGxlciB1c2VzLCB1bmxlc3Mgd2UncmUgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBoYXJkd2FyZSwgb3Igc29tZSB2ZXJ5IHNwZWNpZmljIFFFTVUgY29uZmlndXJhdGlvbiB0aGF0IHN5emthbGxlciBqdXN0IGRvZXNuJ3QgdXNlLlxuXG5CdXQsIGhvbGQgb24uLi4gaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IHRoYXQgYG5vbl9tYXBwYWJsZV9iYXJzYCBjb3VsZCBiZSBzZXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2suIExldCdzIGxvb2sgZm9yIG90aGVyIGluc3RhbmNlcyBvZiBgbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBjb2RlLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcGF0aHMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTc0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjE1OjAwLjQ3MDQ4MDAxNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5NzI3ODQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub25fbWFwcGFibGVfYmFyc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYz0xMj1zdGF0aWMgdm9pZCB6cGNpX2lzbV9iYXJfbm9fbW1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmFyY2gvczM5MC9wY2kvcGNpX2ZpeHVwLmMtMTgtXFx0ICovXFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYzoxOTpcXHRwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycyA9IDE7XFxuYXJjaC9zMzkwL3BjaS9wY2lfZml4dXAuYy0yMC19XFxuLS1cXG5kcml2ZXJzL3BjaS9wMnBkbWEuYz0yNjA9aW50IHBjaW1fcDJwZG1hX2luaXQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjQtXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MjY1OlxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0yNjYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmM9MzIwPXN0cnVjdCBwMnBkbWFfcHJvdmlkZXIgKnBjaW1fcDJwZG1hX3Byb3ZpZGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKVxcbi0tXFxuZHJpdmVycy9wY2kvcDJwZG1hLmMtMzI0LVxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBiYXIpIFxcdTAwMjYgSU9SRVNPVVJDRV9NRU0pIHx8XFxuZHJpdmVycy9wY2kvcDJwZG1hLmM6MzI1OlxcdCAgICBwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wMnBkbWEuYy0zMjYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYz0xMjc4PV9fcGNpX3Jlc291cmNlX2F0dHJfaXNfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaS1zeXNmcy5jLTEyODQtXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmM6MTI4NTpcXHRpZiAocGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnMpXFxuZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMtMTI4Ni1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvcGNpL3Byb2MuYz0yNDQ9c3RhdGljIGludCBwcm9jX2J1c19wY2lfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU1LVxcdC8qIFNraXAgZGV2aWNlcyB3aXRoIG5vbi1tYXBwYWJsZSBCQVJzICovXFxuZHJpdmVycy9wY2kvcHJvYy5jOjI1NjpcXHRpZiAoZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3BjaS9wcm9jLmMtMjU3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTk1PXN0YXRpYyB2b2lkIHZmaW9fcGNpX3Byb2JlX21tYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMDY6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXBkZXYtXFx1MDAzZW5vbl9tYXBwYWJsZV9iYXJzKVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNy1cXHRcXHRcXHRnb3RvIG5vX21tYXA7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz01NDc9c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9tYXBfYmFycyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTYtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NTU3OlxcdFxcdGlmIChwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy01NTgtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oPTM1Mj1zdHJ1Y3QgcGNpX2RldiB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTUxMS1cXHR1bnNpZ25lZCBpbnRcXHRyb21fYXR0cl9lbmFibGVkOjE7XFx0LyogRGlzcGxheSBvZiBST00gYXR0cmlidXRlIGVuYWJsZWQ/ICovXFxuaW5jbHVkZS9saW51eC9wY2kuaDo1MTI6XFx0dW5zaWduZWQgaW50XFx0bm9uX21hcHBhYmxlX2JhcnM6MTtcXHQvKiBCQVJzIGNhbid0IGJlIG1hcHBlZCBieSBDUFUgb3IgcGVlcnMgKi9cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTUxMy1cXHRwY2lfZGV2X2ZsYWdzX3QgZGV2X2ZsYWdzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzoxNTowMy4xNjc3NzI1ODZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MzA1MzQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQncyBsb2NhbGl6ZWQg4oCTIHNwZWNpZmljYWxseSwgaXQncyBvbmx5IHRvdWNoaW5nIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gVGhhdCBhbG9uZSBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseTsgdGhpcyBpcyBzb21ldGhpbmcgZGVkaWNhdGVkIHRvIHMzOTAgSVNNIGRldmljZXMuIE5vdywgdGhlIHJlYWwga2lja2VyOiB0aGlzIHNlZW1zIHRvIHJlbHkgb24gcGh5c2ljYWwgb3IgZW11bGF0ZWQgczM5MCBJU00gaGFyZHdhcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBzZXR1cCB0aGF0J3MgKm5vdCogZ29pbmcgdG8gYmUgZm91bmQgaW4gb3VyIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIEdpdmVuIHRob3NlIGRlcGVuZGVuY2llcywgdGhlIGNvc3QtYmVuZWZpdCBhbmFseXNpcyBqdXN0IGRvZXNuJ3QgcGFuIG91dC4gQXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgd291bGQgYmUgYSBzaWduaWZpY2FudCBlZmZvcnQgd2l0aCBhIHZlcnkgbG93IHByb2JhYmlsaXR5IG9mIHN1Y2Nlc3MsIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gdGFyZ2V0cyB3ZSBhcmUgY3VycmVudGx5IHB1cnN1aW5nLiBUaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3Mgc2ltcGx5IG5vdCBhIHByb2R1Y3RpdmUgYXZlbnVlIGZvciBvdXIgZnV6emluZyBlZmZvcnRzIGF0IHRoaXMgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDEsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6MTU6MTAuODIwODI4NTg1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgcGRldi1cXHUwMDNlbm9uX21hcHBhYmxlX2JhcnNgIGluIHRoZSBWRklPIFBDSSBjb3JlLiBUaGlzIGZsYWcgaXMgb25seSBzZXQgZm9yIHNwZWNpZmljIHMzOTAgSVNNIGhhcmR3YXJlIGRldmljZXMgKFBDSV9WRU5ET1JfSURfSUJNLCBQQ0lfREVWSUNFX0lEX0lCTV9JU00pIGluIGBhcmNoL3MzOTAvcGNpL3BjaV9maXh1cC5jYC4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowl8d98[1] Phase: Running StartedAt: 2026-07-31 03:15:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8d98[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-31 03:15:40 +0000 UTC FinishedAt: 2026-07-31 03:15:59 +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,}