Name: series-workflowfbrg6 Phase: Succeeded StartedAt: 2026-08-05 08:10:02 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[0] Phase: Succeeded StartedAt: 2026-08-05 08:10:02 +0000 UTC FinishedAt: 2026-08-05 08:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 08:10:02 +0000 UTC FinishedAt: 2026-08-05 08:38:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "5f442b7e-c9ec-4b95-88b5-066e3ea45bbb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_phy_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBwaHlfcGFja2FnZSBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdGF0ZSwgcmVwbGFjaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBsb2dpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uIChlLmcuLCBzbXNjOTV4eCwgbGFuNzh4eCksIHdoaWNoIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgY2FuIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgYmluZGluZyBvZiB0aGlzIGRyaXZlci4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSwgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHByb2JlIG9yIHdoZW4gbXVsdGlwbGUgUEhZcyBhcmUgaW5zdGFudGlhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2JlMjQxZDdhYmY3OGIzY2M5MmM2YjNkMGUxYTBmYTc2OTBhOGJhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDg6MzY6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjdiZDEzMGY3Nzk0ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcJiMzNDs6IFwmIzM0OyBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS9kZXZyZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG5AQCAtMjEsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtkcDgzNjQwX3JlZy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3BoeWxpYi5oXCYjMzQ7XG4gXG4gI2RlZmluZSBEUDgzNjQwX1BIWV9JRFx0MHgyMDAwNWNlMVxuICNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG5AQCAtMTI4LDEwICYjNDM7MTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XG4gfTtcbiBcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4tXHQvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICYjMzk7cGh5dGVyX2Nsb2NrcyYjMzk7IGxpc3QgKi9cbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi1cdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gXHQvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqL1xuIFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xuIFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cbkBAIC0xNDYsNiAmIzQzOzE0NCw3IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDtcbiBcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XG4mIzQzO1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgJiM0MzsyMDUsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gXHR9XG4gfVxuIFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xuLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7XG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xuQEAgLTk1MywxMyAmIzQzOzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4mIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiYjNDM7XHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cdTAwM2VwaW5fY29uZmlnO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5vd25lciA9IFRISVNfTU9EVUxFO1xuIFx0c3ByaW50ZihjbG9jay1cdTAwM2VjYXBzLm5hbWUsIFwmIzM0O2RwODM2NDAgdGltZXJcJiMzNDspO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICYjNDM7OTcxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdGNsb2NrLVx1MDAzZWNhcHMuc2V0dGltZTY0XHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLmVuYWJsZVx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLnZlcmlmeVx0PSBwdHBfZHA4MzY0MF92ZXJpZnk7XG4tXHQvKlxuLVx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxuLVx0ICovXG4mIzQzO1x0LyogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gdGhlIHBpbiBjb25maWd1cmF0aW9uLiAqL1xuIFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHQvKlxuLVx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxuLVx0ICovXG4tXHRnZXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG5AQCAtOTk5LDU4ICYjNDM7OTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTM5OCwyMiAmIzQzOzEzMzQsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAgPSBkYXRhO1xuJiM0MztcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbiBcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbiYjNDM7XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuJiM0MztcbiYjNDM7XHRjbG9jayA9IGRwODM2NDAtXHUwMDNlY2xvY2s7XG4mIzQzO1x0cGh5ZGV2ID0gZHA4MzY0MC1cdTAwM2VwaHlkZXY7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4mIzQzO1x0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4mIzQzO1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuJiM0MztcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiYjNDM7XHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiYjNDM7XHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4mIzQzO1x0XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbiYjNDM7XHRcdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcbiYjNDM7XHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4mIzQzO1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4mIzQzO1x0a2ZyZWUoZHA4MzY0MCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbiYjNDM7XHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG4mIzQzO1x0XHRcdFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XG4mIzQzO1x0aWYgKGVycilcbiBcdFx0Z290byBub19jbG9jaztcbiBcbiYjNDM7XHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4mIzQzO1x0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7XHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuJiM0MztcdFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4mIzQzO1x0aWYgKCFkcDgzNjQwKSB7XG4mIzQzO1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbiYjNDM7XHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDY4ICYjNDM7MTQzNCwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiBub19yZWdpc3RlcjpcbiBcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4mIzQzO1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIG5vX2Nsb2NrOlxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbi1cdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbi1cdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XG4tXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4gXG4gXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuLVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuLVxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbi1cbi1cdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuLVx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuLVx0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuLVx0fSBlbHNlIHtcbi1cdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbi1cdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuLVx0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuLVx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH1cbi1cdH1cbi1cbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuLVx0a2ZyZWUoZHA4MzY0MCk7XG4tXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbiYjNDM7XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNiZTI0MWQ3YWJmNzhiM2NjOTJjNmIzZDBlMWEwZmE3NjkwYThiYTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjM2OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKaW5kZXggOTg0NzJhYmRkMzkyMC4uN2JkMTMwZjc3OTRmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgJiMzNDs6ICYjMzQ7IGZtdAogCiAjaW5jbHVkZSAmbHQ7bGludXgvY3JjMzIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZGV2aWNlL2RldnJlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CkBAIC0yMSw2ICYjNDM7MjIsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3BoeWxpYi5oJiMzNDsKIAogI2RlZmluZSBEUDgzNjQwX1BIWV9JRAkweDIwMDA1Y2UxCiAjZGVmaW5lIFBBR0VTRUwJCTB4MTMKQEAgLTEyOCwxMCAmIzQzOzEzMCw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgewogfTsKIAogc3RydWN0IGRwODM2NDBfY2xvY2sgewotCS8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqLwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQkvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovCi0Jc3RydWN0IG1paV9idXMgKmJ1czsKIAkvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLwogCXN0cnVjdCBtdXRleCBleHRyZWdfbG9jazsKIAkvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqLwpAQCAtMTQ2LDYgJiM0MzsxNDQsNyBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7CiAJc3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0OwogCS8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovCiAJc3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrOwomIzQzOwlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdOwogfTsKIAogLyogZ2xvYmFscyAqLwpAQCAtMjA2LDEwICYjNDM7MjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKQogCX0KIH0KIAotLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovCi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpOwotc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spOwotCiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovCkBAIC05NTMsMTMgJiM0Mzs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLAogCX0KIH0KIAotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQogewotCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCWNsb2NrLSZndDtidXMgPSBidXM7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KTsKJiM0MzsJY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGNsb2NrLSZndDtwaW5fY29uZmlnOwogCWNsb2NrLSZndDtjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7CiAJc3ByaW50ZihjbG9jay0mZ3Q7Y2Fwcy5uYW1lLCAmIzM0O2RwODM2NDAgdGltZXImIzM0Oyk7CiAJY2xvY2stJmd0O2NhcHMubWF4X2Fkagk9IDE5NTMxMjQ7CkBAIC05NzcsMTQgJiM0Mzs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCWNsb2NrLSZndDtjYXBzLnNldHRpbWU2NAk9IHB0cF9kcDgzNjQwX3NldHRpbWU7CiAJY2xvY2stJmd0O2NhcHMuZW5hYmxlCT0gcHRwX2RwODM2NDBfZW5hYmxlOwogCWNsb2NrLSZndDtjYXBzLnZlcmlmeQk9IHB0cF9kcDgzNjQwX3ZlcmlmeTsKLQkvKgotCSAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi4KLQkgKi8KJiM0MzsJLyogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gdGhlIHBpbiBjb25maWd1cmF0aW9uLiAqLwogCWRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkvKgotCSAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS4KLQkgKi8KLQlnZXRfZGV2aWNlKCZhbXA7YnVzLSZndDtkZXYpOwogfQogCiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCkBAIC05OTksNTggJiM0Mzs5ODcsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCWlmIChjbG9jaykKLQkJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQlyZXR1cm4gY2xvY2s7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLgotICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cykKLXsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCWxpc3RfZm9yX2VhY2godGhpcywgJmFtcDtwaHl0ZXJfY2xvY2tzKSB7Ci0JCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpOwotCQlpZiAodG1wLSZndDtidXMgPT0gYnVzKSB7Ci0JCQljbG9jayA9IHRtcDsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTsKLQlpZiAoIWNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYywKLQkJCQkJICAgICAgRFA4MzY0MF9OX1BJTlMpOwotCWlmICghY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZykgewotCQlrZnJlZShjbG9jayk7Ci0JCWNsb2NrID0gTlVMTDsKLQkJZ290byBvdXQ7Ci0JfQotCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTsKLQlsaXN0X2FkZF90YWlsKCZhbXA7Y2xvY2stJmd0O2xpc3QsICZhbXA7cGh5dGVyX2Nsb2Nrcyk7Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCXJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci19Ci0KIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IHJldDsKQEAgLTEzOTgsMjIgJiM0MzsxMzM0LDcwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKQogewomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTsKJiM0MzsJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CXBoeWRldiA9IGRwODM2NDAtJmd0O3BoeWRldjsKJiM0MzsJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkcDgzNjQwLSZndDt0c193b3JrKTsKJiM0MzsJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwomIzQzOwlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwomIzQzOwkJY2xvY2stJmd0O3B0cF9jbG9jayA9IE5VTEw7CiYjNDM7CQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCAmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSB7CiYjNDM7CQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKJiM0MzsJCQlpZiAodG1wID09IGRwODM2NDApIHsKJiM0MzsJCQkJbGlzdF9kZWxfaW5pdCgmYW1wO3RtcC0mZ3Q7bGlzdCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7ZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKJiM0MzsJa2ZyZWUoZHA4MzY0MCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKJiM0MzsJZXJyID0gZGV2bV9waHlfcGFja2FnZV9qb2luKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgcGh5ZGV2LAomIzQzOwkJCQkgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTsKJiM0MzsJaWYgKGVycikKIAkJZ290byBub19jbG9jazsKIAomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0MzsJaWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSkKJiM0MzsJCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKIAlkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7Ci0JaWYgKCFkcDgzNjQwKQomIzQzOwlpZiAoIWRwODM2NDApIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gbm9fbWVtb3J5OwomIzQzOwl9CiAKIAlkcDgzNjQwLSZndDtwaHlkZXYgPSBwaHlkZXY7CiAJZHA4MzY0MC0mZ3Q7bWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDsKQEAgLTE0NTAsNjggJiM0MzsxNDM0LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCX0gZWxzZQogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZHA4MzY0MC0mZ3Q7bGlzdCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiAKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwKJiM0MzsJCQkJICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlyZXR1cm4gMDsKIAogbm9fcmVnaXN0ZXI6CiAJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7CiYjNDM7CWNsb2NrLSZndDtwdHBfY2xvY2sgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O2RlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7CiYjNDM7CXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKIAlrZnJlZShkcDgzNjQwKTsKIG5vX21lbW9yeToKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIG5vX2Nsb2NrOgogCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7Ci0Jc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0OwotCXN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtJmd0O3ByaXY7Ci0JYm9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTsKLQogCWlmIChwaHlkZXYtJmd0O21kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUikKIAkJcmV0dXJuOwogCiAJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwogCiAJZW5hYmxlX3N0YXR1c19mcmFtZXMocGh5ZGV2LCBmYWxzZSk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZHA4MzY0MC0mZ3Q7dHNfd29yayk7Ci0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDtyeF9xdWV1ZSk7Ci0Jc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7dHhfcXVldWUpOwotCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLSZndDtjbG9jayk7Ci0KLQlpZiAoZHA4MzY0MCA9PSBjbG9jay0mZ3Q7Y2hvc2VuKSB7Ci0JCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwotCQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKLQl9IGVsc2UgewotCQlsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkgewotCQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKLQkJCWlmICh0bXAgPT0gZHA4MzY0MCkgewotCQkJCWxpc3RfZGVsX2luaXQoJmFtcDt0bXAtJmd0O2xpc3QpOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQotCi0JaWYgKCFjbG9jay0mZ3Q7Y2hvc2VuICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSkKLQkJcmVtb3ZlX2Nsb2NrID0gdHJ1ZTsKLQotCWRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTsKLQlrZnJlZShkcDgzNjQwKTsKLQotCWlmIChyZW1vdmVfY2xvY2spIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0JCWxpc3RfZGVsKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCQlwdXRfZGV2aWNlKCZhbXA7Y2xvY2stJmd0O2J1cy0mZ3Q7ZGV2KTsKLQkJa2ZyZWUoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JCWtmcmVlKGNsb2NrKTsKLQl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWcKaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFkKIAlkZXBlbmRzIG9uIFBIWUxJQgogCWRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sKIAlzZWxlY3QgQ1JDMzIKJiM0MzsJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscAogCSAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLgogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MDkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBkcDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciAoYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgKS4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyB0aGUgY2xvY2sgaXMgaGFuZGxlZC4gVGhleSYjMzk7cmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgb2xkIGdsb2JhbCBjbG9jayBtYW5hZ2VtZW50IGFuZCB1c2luZyBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCB0byBoYW5kbGUgc2hhcmVkIGNsb2NrIHN0YXRlIHdpdGhpbiBhICYjMzQ7cGFja2FnZSYjMzQ7IG9yIGJ1cyDigJMgdGhhdCYjMzk7cyBhIG11Y2ggY2xlYW5lciBhcHByb2FjaC4gVGhleSYjMzk7dmUgYWxzbyByZW1vdmVkIHRoZSBvbGQgZ2xvYmFsIGxpc3QgYW5kIGxvY2sgKGBwaHl0ZXJfY2xvY2tzYCBhbmQgYHBoeXRlcl9jbG9ja3NfbG9ja2ApLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gVGhlIGludHJvZHVjdGlvbiBvZiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgYXMgYSBkZXZtIGFjdGlvbiBpbmRpY2F0ZXMgYmV0dGVyIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgc3VnZ2VzdCBhIGNvbXBsZXRlIGludGVncmF0aW9uIG9mIHRoZXNlIGNoYW5nZXMuCgpCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBhY2Nlc3NpYmxlIGlzIHRoaXMgY29kZSBpbiB0aGUgdGVzdGluZyBjb250ZXh0PyBJcyB0aGlzIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gSXQmIzM5O3MgYSBQSFkgZHJpdmVyLCB3aGljaCBtZWFucyBpdCByZWxpZXMgb24gYmVpbmcgcHJvYmVkIGJ5IGFuIE1ESU8gYnVzLiBJbiBRRU1VLCB3ZSAqY2FuKiBlbXVsYXRlIE1ESU8gYnVzZXMgYW5kIFBIWXMsIGJ1dCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBoYXZlIGEgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBkcml2ZXIgYXZhaWxhYmxlLCBvciBhIHdheSB0byBpbmplY3QgTURJTyBkZXZpY2VzLgoKV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21kaW9fYnVzYD8gTm8sIGJ1dCB0aGVyZSYjMzk7cyB0aGUgcG9zc2liaWxpdHkgb2YgdXNpbmcgdmlydHVhbCBNRElPIGJ1c2VzLCBvciBtYXliZSB1c2luZyBgbWFjYmAgb3Igb3RoZXIgZW11bGF0ZWQgTklDcyB3aGljaCBoYXZlIGJ1aWx0LWluIE1ESU8gYnVzZXMsIGFuZCB3ZSBjYW4gYmluZCBQSFkgZHJpdmVycyB0byB0aG9zZS4gQWN0dWFsbHksIHN5emthbGxlciAqZG9lcyogZnV6eiBQSFkgZHJpdmVycyBpZiB0aGV5IGFyZSByZWdpc3RlcmVkIGFuZCBjYW4gYmUgYm91bmQsIHdoaWNoIG1lYW5zIHdlIG1pZ2h0IGJlIGFibGUgdG8gdGFyZ2V0IHRoaXMuIENhbiB3ZSBiaW5kIGEgUEhZIGRyaXZlciB0aHJvdWdoIHN5c2ZzPyBZZXMsIGlmIHdlIGhhdmUgYW4gTURJTyBidXMuCgpPa2F5LCBzbyB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGVyZSBhIHZpYWJsZSBwYXRoIHRvIHRyaWdnZXIgYW5kIHRlc3QgdGhpcyBtb2RpZmllZCBjb2RlPyBMZXQmIzM5O3MgdmVyaWZ5IGlmIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgZnV6emFibGUuIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggaW4gdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGBEUDgzNjQwX1BIWWAuIFRoYXQgd2lsbCBnaXZlIHVzIGEgY2xlYXIgYW5zd2VyIGFib3V0IHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz0xMzc9Q09ORklHX1NQSV9QTDAyMj15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy0xMzktQ09ORklHX0dQSU9MSUI9eVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQmIzQzOz0gZGF2aWNvbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVx0JiM0Mzs9IGRwODM2NDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoyNzojZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI4LSNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDY5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcwLXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MTpcdC5waHlfaWRcdFx0PSBEUDgzNjQwX1BIWV9JRCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3Mi1cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0OTE6XHR7IERQODM2NDBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTItXHR7IH1cbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBTeXprYWxsZXImIzM5O3MgUEhZIERyaXZlciBSZWFjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgLiBJdCYjMzk7cyBhIFBIWSBkcml2ZXIsIGNsZWFybHkuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgc3RhdGUsIGFjdHVhbGx5ICpnZXQqIHRvIHRoaXMgdGhpbmc/IENhbiBpdCB0ZXN0IHRoZSBgZHA4MzY0MC5jYCBkcml2ZXI/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIHRoZW9yZXRpY2FsbHksIGlmIFN5emthbGxlciBjYW4gc29tZWhvdyBjcmVhdGUgYW4gTURJTyBidXMgYW5kIHRoZW4gcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIHRoYXQgYnVzLiBUaGF0JiMzOTtzIHRoZSBiYXNpYyByZXF1aXJlbWVudC4KCkkgcmVtZW1iZXIgYHN5el9nZW5ldGxpbmtgIGFuZCBvdGhlciBtZXRob2RzIGFyZSBhdCBTeXprYWxsZXImIzM5O3MgZGlzcG9zYWwsIGJ1dCBJ4oCZbSBzcGVjaWZpY2FsbHkgd29uZGVyaW5nIGFib3V0IHRoZSBNRElPIGluc3RhbnRpYXRpb24gcGFydC4gRG9lcyBpdCBvZmZlciBhIGRpcmVjdCB3YXkgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcz8gSG1tLCB0aGVyZSYjMzk7cyB0aGUgYG1kaW9gIGJ1cyBpbiBzeXNmcy4gQnV0IGNhbiBTeXprYWxsZXIgKmNyZWF0ZSogZGV2aWNlcyBvbiB0aGF0IGJ1cz8gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiBpdC4KCkxldCBtZSB0aGlua+KApiBJIG5lZWQgdG8gY29uc2lkZXIgdmlydHVhbCBNRElPIGJ1cyBvcHRpb25zLCBvciBwZXJoYXBzIHdoZXRoZXIgZGV2aWNlcyBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gIHByb3ZpZGUgYSBzaWRlLWVmZmVjdCBNRElPIGJ1cy4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCBsb29rcyBsaWtlIGBkc2FgIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBpcyBwcm9taXNpbmcsIGFzIGl0IGNyZWF0ZXMgTURJTyBidXNlcy4gVGhlIG90aGVyIHBhdGggaGVyZSBpcyB0aGUgYGZpeGVkLXBoeWAgZHJpdmVyLCBidXQgSSByZWNhbGwgdGhhdCBkb2VzbiYjMzk7dCB1dGlsaXplIHRoZSBzdGFuZGFyZCBQSFkgZHJpdmVycywgc28gdGhhdCB3b27igJl0IGhlbHAgaGVyZS4KCldhaXQgYSBzZWNvbmTigKYgd2hhdCBhYm91dCBTeXprYWxsZXImIzM5O3MgdXNlIG9mIGB2aGNpYCBvciBgbmV0ZGV2c2ltYD8gQ291bGQgZWl0aGVyIG9mIHRob3NlIG9mZmVyIGFuIE1ESU8gYnVzPyBUaGF0JiMzOTtzIHRoZSBhbmdsZSBJJiMzOTttIG1vc3QgaW50ZXJlc3RlZCBpbiBwdXJzdWluZy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXRkZXZzaW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0IGhhcyBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGF0aCB0byB0ZXN0aW5nIHRoaXMgcGFydGljdWxhciBQSFkgZHJpdmVyIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IENvbnNpZGVyaW5nIERhdGEgU3RydWN0dXJlIGFuZCBBbGdvcml0aG0gQ2hvaWNlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvICYjMzQ7d2hhdCBhYm91dCBgZHNhYD8mIzM0Oy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCB0aG91Z2h0OyBpdCYjMzk7cyBhIGRlZXBseSBpbmdyYWluZWQgcmVmbGV4LiBUaGUgd2hvbGUgcHJvYmxlbSBzcGFjZSBJJiMzOTttIGFwcHJvYWNoaW5nIGlzIHNjcmVhbWluZyBmb3IgYSBzdHJ1Y3R1cmVkIGFsZ29yaXRobWljIGFwcHJvYWNoLiBUaGUgdHlwZSBvZiBzb2x1dGlvbiBJIG5lZWQgYWxtb3N0IGNlcnRhaW5seSBoaW5nZXMgb24gY2FyZWZ1bCBkYXRhIHN0cnVjdHVyZSBzZWxlY3Rpb24gYW5kIGFsZ29yaXRobSBkZXNpZ24uIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIC0tIHRyZWVzLCBncmFwaHMsIGhlYXBzLCBoYXNoIHRhYmxlcyAtLSBzZWVpbmcgd2hpY2ggb25lcyBtaWdodCBvZmZlciB0aGUgYmVzdCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIGdpdmVuIHRoZSB0eXBpY2FsIGlucHV0cyBJJiMzOTttIGV4cGVjdGluZy4gVGhlICYjMzQ7ZHNhJiMzNDsgc2hvcnRoYW5kLCBmb3IgbWUsIGlzbiYjMzk7dCBqdXN0IGEgZ2VuZXJpYyB0ZXJtOyBpdCYjMzk7cyBhIGZyYW1ld29yayBmb3IgdGhpbmtpbmcgYWJvdXQgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5LCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIG92ZXJhbGwgZWZmaWNpZW5jeS4gU28sIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIHBvdGVudGlhbCBjb25zdHJhaW50cywgdGhlIGV4cGVjdGVkIHNjYWxlIG9mIHRoZSBkYXRhLCBhbmQgc3RhcnQgZm9ybXVsYXRpbmcgY29uY3JldGUgYWxnb3JpdGhtaWMgaWRlYXMuIFRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgaXRlcmF0ZSB0aHJvdWdoIHBvc3NpYmlsaXRpZXMgYW5kIGRpc2NhcmQgdGhlIG9uZXMgdGhhdCB3b24mIzM5O3Qgc2NhbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9kc2EuYz02MjE9c3RhdGljIGludCBkc2Ffc3dpdGNoX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5uZXQvZHNhL2RzYS5jLTY1My1cdGlmICghZHMtXHUwMDNldXNlcl9taWlfYnVzIFx1MDAyNlx1MDAyNiBkcy1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWQpIHtcbm5ldC9kc2EvZHNhLmM6NjU0Olx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5uZXQvZHNhL2RzYS5jLTY1NS1cdFx0aWYgKCFkcy1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5uZXQvZHNhL2RzYS5jLTY2MS1cbm5ldC9kc2EvZHNhLmM6NjYyOlx0XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY2My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvZHNhL2RzYS5jLTY3My1cdGlmIChkcy1cdTAwM2V1c2VyX21paV9idXMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZClcbm5ldC9kc2EvZHNhLmM6Njc0Olx0XHRtZGlvYnVzX2ZyZWUoZHMtXHUwMDNldXNlcl9taWlfYnVzKTtcbm5ldC9kc2EvZHNhLmMtNjc1LXRlYXJkb3duOlxuLS1cbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNjkyLVx0aWYgKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyBcdTAwMjZcdTAwMjYgZHMtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKSB7XG5uZXQvZHNhL2RzYS5jOjY5MzpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jOjY5NDpcdFx0bWRpb2J1c19mcmVlKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY5NS1cdFx0ZHMtXHUwMDNldXNlcl9taWlfYnVzID0gTlVMTDtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG5uZXQvZHNhL3BvcnQuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvcG9ydC5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxubmV0L2RzYS9wb3J0LmM9MTcyNj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE3OTYtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfU01TQ19MQU45MzAzX01ESU8pXG5uZXQvZHNhL3BvcnQuYzoxNzk3Olx0XCYjMzQ7c21zYyxsYW45MzAzLW1kaW9cJiMzNDssXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxuLS1cbm5ldC9kc2EvdXNlci5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG5uZXQvZHNhL3VzZXIuYzoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvdXNlci5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxubmV0L2RzYS91c2VyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L3J0bmV0bGluay5oXHUwMDNlXG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY0Mi1cbm5ldC9kc2EvdXNlci5jOjI2NDM6XHR1c2VyX2Rldi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkoZHMtXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcbm5ldC9kc2EvdXNlci5jLTI2NDQtXHRpZiAoIXVzZXJfZGV2LVx1MDAzZXBoeWRldikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NzYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXImIzM5O3MgUEhZIERyaXZlciBDb3ZlcmFnZSoqCgpIbW0sIHNvICpTeXprYWxsZXIqIG9jY2FzaW9uYWxseSBkYWJibGVzIGluIFBIWSBkcml2ZXJzLCBkb2VzbiYjMzk7dCBpdD8gSSBoYXZlIGEgdmFndWUgcmVjb2xsZWN0aW9uIG9mIHNlZWluZyBzb21lIG1lbnRpb25zLi4uIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byBrbm93IHRoZSBleHRlbnQgb2YgaXRzIGNvdmVyYWdlLiBUaGUgaW50ZWdyaXR5IG9mIG91ciBuZXR3b3JrIHN0YWNrIGRlcGVuZHMgb24gdGhvcm91Z2ggdGVzdGluZywgYW5kIGlmIFN5emthbGxlciBpcyBsZWF2aW5nIGEgYmxpbmQgc3BvdCBpbiB0aGUgUEhZIGxheWVyLCB3ZSBuZWVkIHRvIGFkZHJlc3MgaXQuCgpSaWdodCwgbGV0JiMzOTtzIGN1dCB0aGUgc3BlY3VsYXRpb24uIEluc3RlYWQgb2YgcmVseWluZyBvbiBtZW1vcnksIGxldCYjMzk7cyBnZXQgY29uY3JldGUuIEkmIzM5O2xsIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggdGhlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRlc2NyaXB0b3JzIHJlbGF0ZWQgdG8gTURJTyBvciwgbW9yZSBicm9hZGx5LCBQSFkgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgc3l6a2FsbGVyIGludGVyZmFjZXMgZGVkaWNhdGVkIHRvIHRob3NlLiBIb3BlZnVsbHkgd2UmIzM5O2xsIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgY292ZXJhZ2Ugc29vbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExX2h3c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE1OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipFeHBsb3JpbmcgUEhZIERyaXZlciBBY2Nlc3MqKgoKSG1tLCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBpbnRlcmFjdCB3aXRoIFBIWSBkcml2ZXJzIGJleW9uZCB3aGF0IEkmIzM5O20gY3VycmVudGx5IHVzaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIHBhdGhzIEkgbWlnaHQgYmUgb3Zlcmxvb2tpbmc/IFBlcmhhcHMgSSBjb3VsZCBsZXZlcmFnZSBzb21lIGV4aXN0aW5nIERTQSBmcmFtZXdvcmsgY2FwYWJpbGl0aWVzLgoKQWgsIHJpZ2h0LCB0aGVyZSYjMzk7cyBgZHNhX2xvb3BgLiBUaGUgbG9vcGJhY2sgRFNBIGRyaXZlci4uLiB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZS4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSBhbmQgc2VlIGlmIGl0IGNhbiBiZSBhZGFwdGVkIG9yIGlmIGl0IHByZXNlbnRzIGFueSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBtZSB0byBleHBsb3JlLiBJdCBjb3VsZCBvZmZlciBhIGNsZXZlciB3YXkgdG8gdGVzdCBvciBpbnRlcmFjdCB3aXRoIHRoZSBQSFkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzQ9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZzW1BIWV9NQVhfQUREUl07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NTpzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE4ND1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTkwOlx0cmV0ID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCByZWdudW0pO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTkxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xOTk9c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDY6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCByZWdudW0sIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjUwPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2My1cdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI2NDpcdG1kaW9idXNfcmVhZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCBNSUlfQk1TUik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjgzPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5Mi1cdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MzpcdG1kaW9idXNfcmVhZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCBNSUlfQk1TUik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3Olx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTgtXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY1Olx0ZHMgPSBkZXZtX2t6YWxsb2MoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHNpemVvZigqZHMpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2Ni1cdGlmICghZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY5Olx0ZHMtXHUwMDNlZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzAtXHRkcy1cdTAwM2VudW1fcG9ydHMgPSBEU0FfTE9PUF9OVU1fUE9SVFM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNzI6XHRwcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzczLVx0aWYgKCFwcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODI6XHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4My1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcdHBzLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg3Olx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkwLVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTE6XHRcdGRldl9pbmZvKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogMHglMHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTItXHRcdFx0IHBkYXRhLVx1MDAzZW5hbWUsIHBkYXRhLVx1MDAzZWVuYWJsZWRfcG9ydHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTk6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAwLVx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMzpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIwOlx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjQ6XHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI1LVx0XHQubmFtZVx0PSBcJiMzNDtkc2EtbG9vcFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00MzI9c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XHRyZXR1cm4gZHJ2ID09IFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDM4PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDYyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDYzOlx0YnVzID0gbWRpb19maW5kX2J1cyhcJiMzNDtmaXhlZC0wXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cdGlmIChXQVJOX09OKCFidXMpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY4Olx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjktXHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZkc2FfbG9vcF9wZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NDpcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3NS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzY6XHRcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc3LW91dDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk2LVx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NzpcdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5ODpcdFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NTA1PXN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA4LVx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDk6XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEwOlx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQzNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNRElPICZhbXA7IFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIC0gU3l6a2FsbGVyIENoYWxsZW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgZHNhX2xvb3BgIHNpdHVhdGlvbiwgYW5kIGl0IGp1c3QgaGl0IG1lIOKAkyBpdCYjMzk7cyB1c2luZyB0aGUgYGZpeGVkLTBgIGJ1cywgd2hpY2ggaGFzIHRocm93biBtZSBvZmYgdHJhY2suIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmFjdHVhbGx5KiByZWdpc3RlciBhIFBIWSBkZXZpY2Ugb24gYW4gTURJTyBidXMgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2U/IFRoZSB0aG91Z2h0IHByb2Nlc3MgaXMgYSBjYXNjYWRlIG9mIGlmL3RoZW4gcXVlc3Rpb25zLCBsaWtlIGFuIGVuZ2luZWVyIGRlYnVnZ2luZyBjb2RlLgoKTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB1c2UgYERQODM2NDBfUEhZYCwgYXMgSSBzZWUgdGhpcyBkcml2ZXIgaW4gdGhlIHNvdXJjZSwgYnV0IGl0JiMzOTtzIGEgKmhhcmR3YXJlKiBQSFkgZHJpdmVyLiBIb3cgY2FuIHdlIHBvc3NpYmx5IGluamVjdCB0aGF0IGludG8gdGhlIHN5c3RlbSwgZXNwZWNpYWxseSB1c2luZyBzeXprYWxsZXIsIHVubGVzcyB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgd2hlcmUgd2UgY2FuIHJlZ2lzdGVyIGFueSBhcmJpdHJhcnkgUEhZIElELCBhIHRlc3QgY2FzZSBwZXJoYXBzPwoKSG9sZCBvbi4uLiBkb2VzIHN5emthbGxlciBldmVuICpoYXZlKiBhIGBzeXpfbWRpb19idXNgIGNhbGw/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uLCBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBtZWNoYW5pc21zIHJlbGF0ZWQgdG8gTURJTyBvciBQSFkgZGV2aWNlcy4gSSYjMzk7bSBhc3N1bWluZyBzdWNoIHRvb2xzIGFyZSBsaWtlbHkgdG8gZXhpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBTZWFyY2ggQ29uc3RyYWludHMqKgoKT2theSwgc28gSSBjYW4mIzM5O3QganVzdCB0aHJvdyBhIGBncmVwYCBmb3IgYHN5el9gIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0bHk7IHRoYXQmIzM5O3MgYSByb29raWUgbWlzdGFrZS4gVGhlIGhpbnQgYWJvdXQgYHN5ei1ncmVwcGVyYCBhbmQgYHJlYWQtc3l6LXNwZWNgIGlzIGEgZ29vZCByZW1pbmRlci4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBkb24mIzM5O3Qgc2VlIHRob3NlIHRvb2xzIGluIG15IGF2YWlsYWJsZSBsaXN0ISBJJiMzOTttIG9ubHkgc2VlaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCwgYGRlZmF1bHRfYXBpOmNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAsIGFuZCBgZGVmYXVsdF9hcGk6c2V0LXJlc3VsdHNgLiBTbywgY2xlYXJseSwgSSYjMzk7bSBzdHVjayB3aXRoIHdoYXQgSSYjMzk7dmUgZ290LCBhbmQgdGhhdCBtZWFucyBubyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgU3l6a2FsbGVyIHNwZWNzIGRpcmVjdGx5LiBJJiMzOTtsbCBoYXZlIHRvIGZpbmQgYW5vdGhlciB3YXkgdG8gaW52ZXN0aWdhdGUgdGhpcyBpc3N1ZS4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGBEUDgzNjQwX1BIWWAuIFRoaXMgaXMgYSBoYXJkd2FyZSBQSFkgZHJpdmVyLCBhbmQgdGhhdCByYWlzZXMgc29tZSBpbW1lZGlhdGUgcXVlc3Rpb25zLiBSZWFjaGluZyB0aGVzZSBpbiBRRU1VIGlzIHVzdWFsbHkgYSBwcm9ibGVtLiBVbmxlc3MgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZXMgdGhhdCBwYXJ0aWN1bGFyIFBIWSwgb3IgdGhlcmUmIzM5O3MgYSBzb2Z0d2FyZS1iYXNlZCBpbnN0YW50aWF0aW9uIG1ldGhvZCwgaXTigJlzIGdvaW5nIHRvIGJlIHRyaWNreS4gQ2FuIEkgY3JlYXRlIGl0IHZpYSBzb2Z0d2FyZT8gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc3lzZnMgbWFnaWMgdGhhdCBjb3VsZCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIGFuZCBodW50IGZvciBzeXNmcyBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGNsdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBQSFkgRGV2aWNlIElzc3VlKioKCkhtbSwgSSYjMzk7bSB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBuZXR3b3JraW5nIGlzc3VlLiBPa2F5LCB3aGVyZSBkbyBJIGV2ZW4gc3RhcnQgd2l0aCB0aGlzIG9uZT8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGlzIGEgY29tbW9uIHBvaW50IG9mIGZhaWx1cmUuIFRoZSBkZXZpY2UgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIGlzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIExldCYjMzk7cyBzZWUuLi4gU3BlY2lmaWNhbGx5LCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhhdCBnZW5lcmFsIGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgdHJlZTogYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciBhIGxvdCBvZiBjb3JlIFBIWSBtYW5hZ2VtZW50LCBpbml0aWFsaXphdGlvbiwgYW5kIGNvbnRyb2wgbG9naWMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrIGFuZCB0aGUgc3BlY2lmaWMgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGEgZnJlcXVlbnQgc291cmNlIG9mIHRyaWNreSBidWdzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hhdCB0byBsb29rIGZvciwgYnV0IHRoYXQmIzM5O3MgdGhlIGxpa2VseSBzcG90IHRvIGludmVzdGlnYXRlIGZpcnN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBpcyBiZWluZyBkZXRlY3RlZCwgaW5pdGlhbGl6ZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGZpbGUuIFdoYXQgaGFwcGVucyBpZiB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaGFzIGFuIGlzc3VlPyBJcyB0aGVyZSBzb21lIGtpbmQgb2YgaW5pdGlhbGl6YXRpb24gcHJvYmxlbSBoYXBwZW5pbmcgdGhlcmU/IFRoYXQgc291bmRzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ld19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4MzkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBQSFkgRGV2aWNlIENyZWF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZmVhc2libGUgdG8gY3JhZnQgYSBQSFkgZGV2aWNlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgd2hldGhlciB0aGVyZSYjMzk7cyBhIG1lY2hhbmlzbSBhdmFpbGFibGUgdG8gYnlwYXNzIHRoZSBrZXJuZWwgZW50aXJlbHksIG9yIGF0IGxlYXN0IHNpZ25pZmljYW50bHkgaW50ZXJhY3Qgd2l0aCB0aGUgUEhZLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGF2YWlsYWJsZSBpbnRlcmZhY2VzLgoKVGhlIGZpcnN0IGFwcHJvYWNoIHRoYXQganVtcHMgdG8gbWluZCBpcyB0byBzZWUgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIE1ESU8gaW50ZXJmYWNlIHRocm91Z2ggZWl0aGVyIGFuIGBpb2N0bGAgb3IgYG5ldGxpbmtgIG1ldGhvZC4gTXkgZXhwZXJpZW5jZSBkaWN0YXRlcyB0aGF0IHRoaXMgaXMgdXN1YWxseSB0aGUgcHJpbWFyeSBhdmVudWUgZm9yIGxvdy1sZXZlbCBQSFkgY29udHJvbC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcmVsZXZhbnQga2VybmVsIGhlYWRlcnMuIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IGV4cG9zaW5nIE1ESU8gcmVnaXN0ZXJzIGluIGEgd2F5IHRoYXTigJlzIGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLiBGaW5kaW5nIGEgcmVsaWFibGUsIHVzZXItc3BhY2UgaW50ZXJmYWNlIHdvdWxkIGJlIGlkZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9ydG5ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTA1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVtdWxhdGluZyBhIERQODM2NDAgUEhZIHdpdGggc3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBtYWNiYCBkcml2ZXIgYW5kIFFFTVUuIFFFTVUgZW11bGF0ZXMgdGhlIGBtYWNiYCB3aGljaCwgb2YgY291cnNlLCBoYXMgYW4gTURJTyBidXMuIENhbiBRRU1VIGVtdWxhdGUgdGhlIERQODM2NDAgUEhZIGRpcmVjdGx5PyBQcm9iYWJseSBub3Qgd2l0aG91dCBkaXZpbmcgaW50byB0aGUgc291cmNlLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIHNvIEkgbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5LgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyISBJdCBoYXMgdGhhdCBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLiBJIHJlbWVtYmVyIHRoYXQgZW11bGF0ZXMgVVNCIGRldmljZXMuIE5vdywgaXMgdGhlcmUgYW55IFVTQiB0byBNRElPIGJyaWRnZSB0aGF0IG1pZ2h0IGJlIHVzZWZ1bD8KCkFoYSEgTG9va2luZyBhdCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgYW5kIGBkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguY2AsIEkgc2VlIHRoZXkgYm90aCBoYXZlIE1ESU8gaW1wbGVtZW50YXRpb25zLiBUaGlzIGlzIGludGVyZXN0aW5nLiBJZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCBzcGVjaWZpY2FsbHkgb25lIHRoYXQgKnByZXNlbnRzKiBhbiBNRElPIGJ1cywgd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuCgpTbywgaWYgd2UgZW11bGF0ZSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHNvbWV0aGluZyBsaWtlIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgb3IgZXZlbiBgYXg4ODE3OV8xNzhhYCwgdGhlIGRyaXZlciB3b3VsZCB0aGVuIHJlYWQgdGhlIFBIWSBJRCBmcm9tIHRoYXQgZW11bGF0ZWQgTURJTyBidXMuIEJyaWxsaWFudCEgVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciAqY29udHJvbHMqIHRoZSBVU0IgcmVzcG9uc2VzLiBXZSBjYW4gbWFrZSB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlcG9ydCBhIHNwZWNpZmljIFBIWSBJRC4KCklmIHdlIGZlZWQgaXQgdGhlIERQODM2NDAmIzM5O3MgUEhZIElELCB3aGljaCBJIGJlbGlldmUgaXMgYDB4MjAwMDVjZTFgLCB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIE1JSV9QSFlTSUQxIGFuZCBNSUlfUEhZU0lEMiByZWdpc3RlcnMsIGl0IHNob3VsZCB3b3JrLgoKV2hlbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyB0aGUgTURJTyBidXMgYW5kIHNjYW5zIGl0LCBpdCB3aWxsIGVuY291bnRlciB0aGUgUEhZIElEIHdlIGFyZSBwcmVzZW50aW5nLiBUaGUgTURJTyBjb3JlIHNob3VsZCBtYXRjaCB0aGlzIElELCB0cmlnZ2VyaW5nIHRoZSBiaW5kaW5nIG9mIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlci4gQm9vbSEKClRoaXMgaXMgYSByZWFsbHkgY2xldmVyIHRlY2huaXF1ZS4gSXQmIzM5O3MgYSB2ZXJ5IGNvbW1vbiBhcHByb2FjaCB3aXRoIHN5emthbGxlci4gWW91IGVzc2VudGlhbGx5IGVtdWxhdGUgYSBVU0IgZGV2aWNlIHRoYXQmIzM5O3MgYWN0aW5nIGFzIGEgTURJTyBidXMgYW5kIGluamVjdCB0aGUgYXJiaXRyYXJ5IFBIWSBJRCB0byB0cmljayB0aGUga2VybmVsIGludG8gbG9hZGluZyBkaWZmZXJlbnQgUEhZIGRyaXZlcnMuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCBgbGFuNzh4eGAgYW5kIHNpbWlsYXIgZHJpdmVycyBhY3R1YWxseSB1c2UgYG1kaW9idXNfcmVnaXN0ZXJgIGFuZCByZWFkIHRob3NlIFBIWSBJRHMuIFRoYXQmIzM5O3MgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgdGhpcyBpcyBleGNpdGluZy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGBkcDgzNjQwYCBkcml2ZXImIzM5O3MgYGRwODM2NDBfcHJvYmVgIGZ1bmN0aW9uIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBgc21zYzk1eHhgLCBgbGFuNzh4eGAsIGFuZCBgYXNpeGAgZHJpdmVycyBhbGwgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCB0aGUgYG1kaW9idXNfcmVnaXN0ZXJgIGNhbGwgc2NhbnMgdGhlIGJ1cyB1c2luZyBNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIuIFN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGNvbnRyb2wgVVNCIGVuZHBvaW50IHJlc3BvbnNlcyBtZWFucyB3ZSBjYW4gZmVlZCBpdCB0aGUgRFA4MzY0MCBQSFkgSUQuIEZhbnRhc3RpYyEKCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBmb2N1c2VkIG9uIHJlZmFjdG9yaW5nIGhvdyB0aGUgYGRwODM2NDBfY2xvY2tgICh3aGljaCBpcyBjcml0aWNhbCBmb3IgUFRQKSBpcyBtYW5hZ2VkLiBQcmV2aW91c2x5LCB0aGV5IHdlcmUgdXNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoZSBwYXRjaCYjMzk7cyBtb3ZlZCBpdCB0byBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCwgcGVyLVBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEl0JiMzOTtzIHJlbW92aW5nIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgIGFuZCBgZHA4MzY0MF9jbG9ja19wdXRgIHdoaWxlIGFkZGluZyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgYXMgYSBkZXZtIGFjdGlvbiBmb3IgY2xlYW51cC4gQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgZXNzZW50aWFsbHkgYSBsaWZlY3ljbGUgb3ZlcmhhdWwgb2YgdGhlIGBkcDgzNjQwX2Nsb2NrYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyB0aGUgcHJvYmUvcmVtb3ZlIGN5Y2xlLCBlc3BlY2lhbGx5IHdpdGggbXVsdGlwbGUgUEhZcy4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBkcDgzNjQwX2Nsb2NrX2luaXRgLCB0aGUgbmV3IGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYGRwODM2NDBfcHJvYmVgLCBhbmQgYGRwODM2NDBfcmVtb3ZlYC4KCldhaXQgYSBtaW51dGUsIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjay4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IHBhdGNoZXMgdGhhdCAqb25seSogY2hhbmdlIHRlYXJkb3duIGNhbGxiYWNrcy4gQnV0IHRoaXMgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kIGFkZHMgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBTaW5jZSBpdCBhbHNvIG1vZGlmaWVzIGBkcDgzNjQwX3Byb2JlYCwgd2hpY2ggaXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGgsIHRoaXMgaXMgbm90IGp1c3QgdGVhcmRvd24gY2FsbGJhY2tzLiBJJiMzOTttIGdvb2QuIEFuZCBzaW5jZSBTeXprYWxsZXIgaXMgc28gZWZmZWN0aXZlIGF0IGZ1enppbmcgcHJvYmUgZnVuY3Rpb25zIChsaWtlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyksIGBkcDgzNjQwX3Byb2JlYCBpcyBhIGdyZWF0IHRhcmdldC4gIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCBzaW5jZSBpdCYjMzk7cyBhIGRldm0gYWN0aW9uIGNhbGxlZCBvbiBkZXZpY2UgcmVtb3ZhbCBvciBwcm9iZSBmYWlsdXJlLCB3aGljaCBtaWdodCBleHBvc2UgaW50ZXJlc3RpbmcgY29kZSBwYXRocy4gYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkuIEkmIzM5O2xsIGluY2x1ZGUgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9waHlfcmVsZWFzZWAuCgpXaGF0IGFib3V0IGBkcDgzNjQwX2Nsb2NrX2luaXRgPyBJdCYjMzk7cyBtYXJrZWQgYHN0YXRpY2AuIEZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBzbyBJIHdpbGwgbm90IGluY2x1ZGUgaXQsIGBkcDgzNjQwX3Byb2JlYCBpcyBiZXR0ZXIuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSByZXF1aXJlZCBDT05GSUcgb3B0aW9ucy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRvIG1vZGlmeSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AuIFllcywgdGhlIGtleSBpcyBgRFA4MzY0MF9QSFlgLCBhbmQgaXQgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLCBhbmQgc2VsZWN0cyBgQ1JDMzJgIGFuZCBgUEhZX1BBQ0tBR0VgLiAgVGhhdCYjMzk7cyBhbGwgZ29vZCwgSSBrbm93IHdoZXJlIHRvIGxvb2suIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERQODM2NDBfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzcyOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgTGFuZHNjYXBlIG9mIERQODM2NDBfUEhZKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgYXNrZWQuIEl0IHNvdW5kcyBsaWtlIHNvbWVvbmUgd2FudHMgbWUgdG8gYW5hbHl6ZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUDgzNjQwX1BIWWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgbW9kdWxlcyBgRFA4MzY0MF9QSFlgIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uLiBUaGlzIGNvdWxkIGluY2x1ZGUgb3RoZXIgUEhZIGRyaXZlcnMsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgUlRPUyBjb21wb25lbnRzLCBldmVuIHNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zIG9yIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gZXhhbWluZSBhbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBhbmQgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBhbmQgaWRlbnRpZmllcnMgd2l0aGluIHRoZSBjb2RlIHRoYXQgcG9pbnQgdG93YXJkcyBleHRlcm5hbCBlbGVtZW50cyBpdCBpbnRlcmFjdHMgd2l0aC4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIHdhdGNoIGZvciBpbmNsdWRlIHN0YXRlbWVudHMgKGAjaW5jbHVkZWApLCBmdW5jdGlvbiBjYWxscyB0byBvdGhlciBtb2R1bGVzLCBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgc3BlY2lmeSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2VzIG5lZWRlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcywgcnVudGltZSBkZXBlbmRlbmNpZXMsIGFuZCBjb25maWd1cmF0aW9uLXRpbWUgZGVwZW5kZW5jaWVzLgoKSWYgdGhlIGRvY3VtZW50YXRpb24gaXMgbGFja2luZywgb3IgaW5jb21wbGV0ZSwgdGhlIGNvZGUgaXRzZWxmIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBteSBiZXN0IGluc2lnaHRzLiBJIGtub3cgdG8gc2VhcmNoIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHJldmVhbCB0aGlzIG1vZHVsZSYjMzk7cyBpbnRlcmRlcGVuZGVuY2llczogaW5jbHVkZSBoZWFkZXJzLCBtYWtlZmlsZSBkaXJlY3RpdmVzLCBsaW5rZXIgc2NyaXB0cywgb3IgZGV2aWNlIHRyZWUgZW50cmllcywgYW55dGhpbmcgdGhhdCBjYW4gcmV2ZWFsIGEgY29ubmVjdGlvbiB0byBhbm90aGVyIG1vZHVsZSBvciBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBwcmVjaXNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcW9yaXEuXG4gIDcxOlx0XG4gIDcyOlx0Y29tbWVudCBcJiMzNDtFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cJiMzNDtcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgRFA4MzY0MF9QSFlcbiAgNzY6XHRcdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiAgNzc6XHRcdGRlcGVuZHMgb24gTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gIDc4Olx0XHRkZXBlbmRzIG9uIFBIWUxJQlxuICA3OTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA4MDpcdFx0c2VsZWN0IENSQzMyXG4gIDgxOlx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXG4gIDg2Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxuICA4NzpcdFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xuICA4ODpcdFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MTMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgbWVudGFsIGNoZWNrbGlzdCBpcyB0aWNraW5nIGF3YXkgaGVyZS4KCioqRGVwZW5kZW5jaWVzIGFuZCBUcmFjaW5nIHRoZSBSb290KioKClJpZ2h0LCBzbyBgRFA4MzY0MF9QSFlgLCBhcyBJIHJlY2FsbCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCB0aGUgdGltZXN0YW1waW5nIGFuZCBQVFAgZWxlbWVudHMgYXJlIGtleSB0byB0aGF0IFBIWSYjMzk7cyBmdW5jdGlvbmFsaXR5LiBOb3csIEkgd2FudCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGxpZXMuIE5lZWQgdG8ga25vdyB3aGF0ICppdCogcmVsaWVzIG9uIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzMwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYXNwZWN0IG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGJldHRlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9LY29uZmlnYCwgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGxpbmUgMTU0IGlzIGxpa2VseSBhIGdvb2QgcG9pbnQgdG8gYmVnaW47IGl0IG1pZ2h0IGRlZmluZSBhIG1vZHVsZSBvciBhIGZlYXR1cmUuIE9mdGVuLCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkIGxpbmVhcmx5LCBhbmQgdGhlIGtleSBkZWZpbml0aW9ucyBhcmUgZ3JvdXBlZCB0b2dldGhlciBsb2dpY2FsbHkuIFNvLCBzdGFydGluZyB0aGVyZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTUwOlx0XG4gMTUxOlx0Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcbiAxNTI6XHRcdGRlZl9ib29sIG5cbiAxNTM6XHRcbiAxNTQ6XHRjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMTU1Olx0XHRib29sIFwmIzM0O1RpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1wmIzM0O1xuIDE1NjpcdFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcbiAxNTc6XHRcdGhlbHBcbiAxNTg6XHRcdCAgVGhpcyBhbGxvd3MgdGltZXN0YW1waW5nIG9mIG5ldHdvcmsgcGFja2V0cyBieSBQSFlzIChvclxuIDE1OTpcdFx0ICBvdGhlciBNSUkgYnVzIHNub29waW5nIGRldmljZXMpIHdpdGggaGFyZHdhcmUgdGltZXN0YW1waW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlF1aWNrIE5ldHdvcmsgVGltZXN0YW1waW5nIENoZWNrKioKClJpZ2h0LCBzbywgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuLi4gbm8gc3BlY2lmaWMsIHVudXN1YWwgZGVwZW5kZW5jaWVzIGp1bXAgb3V0IGF0IG1lIGltbWVkaWF0ZWx5LiBUaGF0JiMzOTtzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24g4oCTIGFuZCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGlzIHRvcC1vZi1taW5kIOKAkyBpcywgd2hhdCBhYm91dCBgUEhZTElCYD8gSXMgdGhpcyBmdW5jdGlvbmFsaXR5IGltcGFjdGVkIGluIGFueSB3YXk/IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhpcyB0aWVzIGludG8gdGhlIHBoeXNpY2FsIGxheWVyIGxpYnJhcnkuIEFyZSB3ZSBsZXZlcmFnaW5nIGV4aXN0aW5nIGBQSFlMSUJgIGNhcGFiaWxpdGllcyBvciBjaXJjdW12ZW50aW5nIHRoZW0/IElzIHRoaXMgYSBzdGFuZGFyZCBvcGVyYXRpb24sIG9yIGEgY3VzdG9tIG9uZSB0aGF0IGludHJvZHVjZXMgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgZm9yIHRoZSB1c2VyIHRvIGNvbnNpZGVyPyBJdCBjb3VsZCBpbXBhY3QgdGhpbmdzIGxpa2UgUEhZIGRyaXZlcnMgYW5kIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBvbiB0aGF0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFBIWSBDb25maWd1cmF0aW9uIFNwYWNlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBsaWtlbHkgY2FuZGlkYXRlOiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMaW5lIDE1IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIG9yaWVudCBteXNlbGYgd2l0aGluIHRoZSBmaWxlJiMzOTtzIHN0cnVjdHVyZS4gSG9wZWZ1bGx5LCBpdCBkZWZpbmVzIG9yIGluY2x1ZGVzIHRoZSBicm9hZGVyIGZyYW1ld29yayBmb3IgUEhZIGRyaXZlcnMgYW5kIHRoZWlyIHNldHRpbmdzLiBJIGV4cGVjdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGd1aWRlIG1lIHRocm91Z2ggaG93IHZhcmlvdXMgUEhZIHR5cGVzIGFyZSBzZWxlY3RlZCwgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCwgYWxsb3dpbmcgbWUgdG8gc3RhcnQgbXkgbW9yZSBpbi1kZXB0aCBhbmFseXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUEhZTElCIERlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIG92ZXIgdGhpcyBjb2RlLCBJJiMzOTttIG5vdCBzcG90dGluZyBhbnkgdW51c3VhbCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBQSFlMSUJgIGNvbXBvbmVudC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQsIHRoYXQgcHJvbXB0cyBhIHNlY29uZGFyeSB0aG91Z2h0OiB3aGF0IGFib3V0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBjbG9jaywgc3BlY2lmaWNhbGx5IGBQVFBfMTU4OF9DTE9DS2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlZ3JhdGlvbiBwb2ludHMgb3Igc2hhcmVkIHJlc291cmNlcyBJIHNob3VsZCBiZSBtaW5kZnVsIG9mLiBXZSB1c2UgYFBIWUxJQmAgYSBsb3QgaW4gdGltaW5nIHNlbnNpdGl2ZSBzeXN0ZW1zLCBzbyB0aGVyZSBjb3VsZCBlYXNpbHkgYmUgc29tZSBpbnRlcmFjdGlvbiBJJiMzOTttIG1pc3NpbmcgYXQgZmlyc3QgZ2xhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cbmRyaXZlcnMvcHRwL0tjb25maWc6OTM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTAzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzU6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTUxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cdHRyaXN0YXRlIFwmIzM0O0lEVCA4MlAzM3h4eCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjUtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3Njpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXHR0cmlzdGF0ZSBcJiMzNDtSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcbmRyaXZlcnMvcHRwL0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cdHRyaXN0YXRlIFwmIzM0O09wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgOC4KCioqRXhhbWluaW5nIHRoZSBQVFAgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgb24gbGluZSA4LCBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhlIGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSBmb3IgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgZHJpdmVycyBpbiB0aGUga2VybmVsLiBLbm93aW5nIHRoZSBmaWxlIHN0cnVjdHVyZSBmcm9tIHBhc3QgZXhwZXJpZW5jZXMsIEkgZXhwZWN0IHRoaXMgdG8gYmUgdGhlIHBvaW50IHdoZXJlIHRoZSBicm9hZCBmZWF0dXJlIHNldCBpcyBkZWZpbmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEkmIzM5O20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1haW4gS2NvbmZpZyBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb3IgcG9zc2libGUgZGVmYXVsdHMgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhlIFBUUCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCBmcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBzbyBJIGNhbiBiZXR0ZXIgZ3Jhc3AgaG93IHRvIHRhaWxvciBteSBzeXN0ZW1zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmluZXIgZGV0YWlscyBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUFRQIGNsb2NrIHN1cHBvcnQgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IFBPU0lYX1RJTUVSU1xuICAxMTpcdFx0ZGVmYXVsdCBFVEhFUk5FVFxuICAxMjpcdFx0c2VsZWN0IFBQU1xuICAxMzpcdFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxMAoJCQkJCQkJb3V0cHV0OiAyMjcKCQkJCQkJCXRob3VnaHRzOiAxMDAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIGZvciBSZWZhY3RvcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGRwODM2NDBgIFBIWSBkcml2ZXIuICBJdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYE5FVGAgYW5kIGBQT1NJWF9USU1FUlNgLCB3aGljaCBhcmUgcHJldHR5IHN0YW5kYXJkIHN0dWZmLiAgVG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgdGhlIGtleSBjb25maWdzIGFyZSBkZWZpbml0ZWx5IGBEUDgzNjQwX1BIWWAsIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuICBBaGEsIGBEUDgzNjQwX1BIWWAgaXMgdGhlIG1haW4gb25lOyBpdCBicmluZ3MgYFBIWV9QQUNLQUdFYCBpbiB3aXRoIGl0LiBTbywgbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluZGVlZCBiZTogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgaW1wb3J0YW50IHN5bWJvbHMgZm9yIHRoaXMuIEkgc2VlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGp1bXAgb3V0LiBXYWl0IGEgbWludXRlLi4uIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYywgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLiBJcyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgc3RhdGljPyBZZXMsIGBzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpYC4gQWgsIGl0JiMzOTtzIHBhc3NlZCB0byBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YCwgd2hpY2ggbWVhbnMgaXQgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoZSBwcm9tcHQgc2F5cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGF0IGd1aWRlbGluZSwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjay4KCk9rYXksIGxldCYjMzk7cyBsb29rIGF0IGBkcDgzNjQwX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AuICBZdXAsIGl0JiMzOTtzIHN0YXRpYyEgQnV0IGl0JiMzOTtzIHBhcnQgb2YgdGhlIGBwaHlfZHJpdmVyYCBzdHJ1Y3QsIHNvIGl0IGlzIGFuIEFQSSBlbnRyeSBwb2ludDoKCmBgYGMKc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7CnsKCS5waHlfaWQJCT0gRFA4MzY0MF9QSFlfSUQsCgkucGh5X2lkX21hc2sJPSAweGZmZmZmZmYwLAoJLm5hbWUJCT0gJiMzNDtOYXRTZW1pIERQODM2NDAmIzM0OywKCS8qIFBIWV9CQVNJQ19GRUFUVVJFUyAqLwoJLnByb2JlCQk9IGRwODM2NDBfcHJvYmUsCgkucmVtb3ZlCQk9IGRwODM2NDBfcmVtb3ZlLAouLi4KYGBgCgpTbywgYGRwODM2NDBfcHJvYmVgIGlzIHRvdGFsbHkgZmluZSBhcyBhIGZvY3VzIHN5bWJvbC4gQW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGZpbmUsIGFzIGl0JiMzOTtzIGEgZGV2bSBhY3Rpb24gY2FsbGJhY2suCgpMZXQmIzM5O3MgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiAgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgZHA4MzY0MF9wcm9iZWAsIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjayBhbmQgZGVmaW5pdGVseSBtb2RpZmllZC4gIEFuZCB0aGUgY2xvY2sgZnVuY3Rpb25zIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19wdXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfZ2V0YCBoYXZlIGFsbCBiZWVuIHJlbW92ZWQuCgpTbywgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIGJlY29tZXM6IGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgLgoKTGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbiAtIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYWxsIG9mIHRoZW0gaW4gdGhlIGBFbmFibGVDb25maWdzYC4KCk9rYXksIHRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZC4gVGhlIGNoYW5nZSBpcyBhYm91dCBsZXZlcmFnaW5nIGBwaHlfcGFja2FnZWAgZm9yIHNoYXJlZCBjbG9jayBzdGF0ZSwgd2hpY2ggcmVwbGFjZXMgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguICBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBXZSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uICh0aGluayBgc21zYzk1eHhgLCBgbGFuNzh4eGAgc2NlbmFyaW9zKSwgd2hpY2ggcmVnaXN0ZXIgYW4gTURJTyBidXMgYW5kIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBhdGggaGVyZSBuZWNlc3NpdGF0ZXMgZnV6emluZyB0byByb290IG91dCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4gSSYjMzk7bGwgbmVlZCB0byB3cml0ZSB1cCB0aGUgZmluYWwgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIG5ldHdvcmsgYWRhcHRlciBlbXVsYXRpb24gKGUuZy4sIHNtc2M5NXh4LCBsYW43OHh4KSwgd2hpY2ggcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCBjYW4gcmVwb3J0IHRoZSBEUDgzNjQwIFBIWSBJRCB0byB0cmlnZ2VyIHRoZSBiaW5kaW5nIG9mIHRoaXMgZHJpdmVyLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgcHJvYmUgb3Igd2hlbiBtdWx0aXBsZSBQSFlzIGFyZSBpbnN0YW50aWF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo0Mi4xMDk3MDg1NDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk5NTA2NDYyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuMTA5NzE2NjA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU4NTcyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjYmUyNDFkN2FiZjc4YjNjYzkyYzZiM2QwZTFhMGZhNzY5MGE4YmE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMDg6MzY6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi43YmQxMzBmNzc5NGZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXFxcIjogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcmMzMi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuQEAgLTIxLDYgKzIyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJkcDgzNjQwX3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicGh5bGliLmhcXFwiXFxuIFxcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXFx0MHgyMDAwNWNlMVxcbiAjZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuQEAgLTEyOCwxMCArMTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XFxuLVxcdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXFxuLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIFxcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXFxuIFxcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcXG4gXFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cXG5AQCAtMTQ2LDYgKzE0NCw3IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xcbiBcXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xcbiBcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XFxuK1xcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XFxuIH07XFxuIFxcbiAvKiBnbG9iYWxzICovXFxuQEAgLTIwNiwxMCArMjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiBcXHR9XFxuIH1cXG4gXFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xcbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xcbkBAIC05NTMsMTMgKzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4ge1xcbi1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZWxpc3QpO1xcbi1cXHRjbG9jay1cXHUwMDNlYnVzID0gYnVzO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlZXh0cmVnX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuK1xcdGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cXHUwMDNlcGluX2NvbmZpZztcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcXG4gXFx0c3ByaW50ZihjbG9jay1cXHUwMDNlY2Fwcy5uYW1lLCBcXFwiZHA4MzY0MCB0aW1lclxcXCIpO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5tYXhfYWRqXFx0PSAxOTUzMTI0O1xcbkBAIC05NzcsMTQgKzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnNldHRpbWU2NFxcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMuZW5hYmxlXFx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnZlcmlmeVxcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xcbi1cXHQvKlxcbi1cXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXFxuLVxcdCAqL1xcbitcXHQvKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byB0aGUgcGluIGNvbmZpZ3VyYXRpb24uICovXFxuIFxcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcXG4tXFx0LypcXG4tXFx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxcbi1cXHQgKi9cXG4tXFx0Z2V0X2RldmljZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLXtcXG4tXFx0aWYgKGNsb2NrKVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuLVxcdHJldHVybiBjbG9jaztcXG4tfVxcbi1cXG4tLypcXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cXG4tICovXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLXtcXG4tXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbi1cXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFxcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XFxuLVxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xcbi1cXHRcXHRpZiAodG1wLVxcdTAwM2VidXMgPT0gYnVzKSB7XFxuLVxcdFxcdFxcdGNsb2NrID0gdG1wO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0XFx0Y2xvY2sgPSBOVUxMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuQEAgLTEzOTgsMjIgKzEzMzQsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcXG4rXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcXG4gXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbitcXG4rXFx0Y2xvY2sgPSBkcDgzNjQwLVxcdTAwM2VjbG9jaztcXG4rXFx0cGh5ZGV2ID0gZHA4MzY0MC1cXHUwMDNlcGh5ZGV2O1xcbitcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHNfd29yayk7XFxuK1xcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbitcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4rXFx0XFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdFxcdGNsb2NrLVxcdTAwM2VjaG9zZW4gPSBOVUxMO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSB7XFxuK1xcdFxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XFxuK1xcdFxcdFxcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0bXAtXFx1MDAzZWxpc3QpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IE5VTEw7XFxuK1xcdGtmcmVlKGRwODM2NDApO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbiBcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xcbi1cXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcXG4rXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRpbnQgZXJyLCBpO1xcbiBcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cXHUwMDNlbWRpby5idXMpO1xcbi1cXHRpZiAoIWNsb2NrKVxcbitcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gbm9fY2xvY2s7XFxuIFxcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCw2OCArMTQzNCwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4rXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIG5vX3JlZ2lzdGVyOlxcbiBcXHRjbG9jay1cXHUwMDNlY2hvc2VuID0gTlVMTDtcXG4rXFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdHBoeWRldi1cXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtaWlfdHMgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRrZnJlZShkcDgzNjQwKTtcXG4gbm9fbWVtb3J5Olxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBub19jbG9jazpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbi1cXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xcbi1cXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuIFxcbiBcXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2V0c193b3JrKTtcXG4tXFxuLVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4tXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cXHUwMDNlY2xvY2spO1xcbi1cXG4tXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbi1cXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4tXFx0XFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpIHtcXG4tXFx0XFx0XFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcXG4tXFx0XFx0XFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XFxuLVxcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2hvc2VuIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSlcXG4tXFx0XFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcXG4tXFxuLVxcdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcXG4tXFx0a2ZyZWUoZHA4MzY0MCk7XFxuLVxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWdcXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXFxuIFxcdGRlcGVuZHMgb24gUEhZTElCXFxuIFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gXFx0c2VsZWN0IENSQzMyXFxuK1xcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbiBcXHRoZWxwXFxuIFxcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuNjY2MzI2ODgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE5Mzk0MDE5MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBwaHlfcGFja2FnZSBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdGF0ZSwgcmVwbGFjaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIG5ldHdvcmsgYWRhcHRlciBlbXVsYXRpb24gKGUuZy4sIHNtc2M5NXh4LCBsYW43OHh4KSwgd2hpY2ggcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCBjYW4gcmVwb3J0IHRoZSBEUDgzNjQwIFBIWSBJRCB0byB0cmlnZ2VyIHRoZSBiaW5kaW5nIG9mIHRoaXMgZHJpdmVyLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgcHJvYmUgb3Igd2hlbiBtdWx0aXBsZSBQSFlzIGFyZSBpbnN0YW50aWF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNiZTI0MWQ3YWJmNzhiM2NjOTJjNmIzZDBlMWEwZmE3NjkwYThiYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjM2OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjdiZDEzMGY3Nzk0ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtOCw2ICs4LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwiOiBcIiBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbkBAIC0yMSw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJkcDgzNjQwX3JlZy5oXCJcbisjaW5jbHVkZSBcInBoeWxpYi5oXCJcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgKzEzMCw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICsxNDQsNyBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuK1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbitcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCJkcDgzNjQwIHRpbWVyXCIpO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbitcdC8qIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIHRoZSBwaW4gY29uZmlndXJhdGlvbi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTM5OCwyMiArMTMzNCw3MCBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxuIHtcbitcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAgPSBkYXRhO1xuK1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xuK1x0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuK1xuK1x0Y2xvY2sgPSBkcDgzNjQwLVx1MDAzZWNsb2NrO1xuK1x0cGh5ZGV2ID0gZHA4MzY0MC1cdTAwM2VwaHlkZXY7XG4rXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbitcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuK1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuK1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuK1x0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuK1x0XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuK1x0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0fSBlbHNlIHtcbitcdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbitcdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuK1x0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZXByaXYgPSBOVUxMO1xuK1x0a2ZyZWUoZHA4MzY0MCk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbiBcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDA7XG4tXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcbitcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbitcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbitcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbitcdFx0XHRcdCAgICBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpO1xuK1x0aWYgKGVycilcbiBcdFx0Z290byBub19jbG9jaztcbiBcbitcdGNsb2NrID0gcGh5X3BhY2thZ2VfZ2V0X3ByaXYocGh5ZGV2KTtcbitcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbitcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbitcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4rXHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4rXHRpZiAoIWRwODM2NDApIHtcbitcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBub19tZW1vcnk7XG4rXHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDY4ICsxNDM0LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0fSBlbHNlXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHA4MzY0MC1cdTAwM2VsaXN0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiBcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcbitcdGVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4rXHRcdFx0XHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4gbm9fcmVnaXN0ZXI6XG4gXHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gbm9fY2xvY2s6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuLVx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbi1cbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiBcbiBcdGVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4tXG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0eF9xdWV1ZSk7XG4tXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtXHUwMDNlY2xvY2spO1xuLVxuLVx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4tXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4tXHRcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4tXHR9IGVsc2Uge1xuLVx0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuLVx0XHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XG4tXHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4tXHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdH1cbi1cdFx0fVxuLVx0fVxuLVxuLVx0aWYgKCFjbG9jay1cdTAwM2VjaG9zZW4gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkpXG4tXHRcdHJlbW92ZV9jbG9jayA9IHRydWU7XG4tXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tXHRrZnJlZShkcDgzNjQwKTtcbi1cbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXG4gXHRkZXBlbmRzIG9uIFBIWUxJQlxuIFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIFx0c2VsZWN0IENSQzMyXG4rXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuNjY2MzI4MTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg1MjM1NTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGRwODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciAoYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgKS4gU2VlbXMgbGlrZSBpdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBjbG9jayBpcyBoYW5kbGVkLiBUaGV5J3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG9sZCBnbG9iYWwgY2xvY2sgbWFuYWdlbWVudCBhbmQgdXNpbmcgYGRldm1fcGh5X3BhY2thZ2Vfam9pbmAgYW5kIGBwaHlfcGFja2FnZV9nZXRfcHJpdmAgdG8gaGFuZGxlIHNoYXJlZCBjbG9jayBzdGF0ZSB3aXRoaW4gYSBcInBhY2thZ2VcIiBvciBidXMg4oCTIHRoYXQncyBhIG11Y2ggY2xlYW5lciBhcHByb2FjaC4gVGhleSd2ZSBhbHNvIHJlbW92ZWQgdGhlIG9sZCBnbG9iYWwgbGlzdCBhbmQgbG9jayAoYHBoeXRlcl9jbG9ja3NgIGFuZCBgcGh5dGVyX2Nsb2Nrc19sb2NrYCksIHdoaWNoIGlzIGdvb2QgaG91c2VrZWVwaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBhcyBhIGRldm0gYWN0aW9uIGluZGljYXRlcyBiZXR0ZXIgcmVzb3VyY2UgbWFuYWdlbWVudCwgYW5kIHRoZSBtb2RpZmljYXRpb25zIHRvIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBzdWdnZXN0IGEgY29tcGxldGUgaW50ZWdyYXRpb24gb2YgdGhlc2UgY2hhbmdlcy5cblxuQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgYWNjZXNzaWJsZSBpcyB0aGlzIGNvZGUgaW4gdGhlIHRlc3RpbmcgY29udGV4dD8gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IEl0J3MgYSBQSFkgZHJpdmVyLCB3aGljaCBtZWFucyBpdCByZWxpZXMgb24gYmVpbmcgcHJvYmVkIGJ5IGFuIE1ESU8gYnVzLiBJbiBRRU1VLCB3ZSAqY2FuKiBlbXVsYXRlIE1ESU8gYnVzZXMgYW5kIFBIWXMsIGJ1dCBzeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IGhhdmUgYSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZHJpdmVyIGF2YWlsYWJsZSwgb3IgYSB3YXkgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcy5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21kaW9fYnVzYD8gTm8sIGJ1dCB0aGVyZSdzIHRoZSBwb3NzaWJpbGl0eSBvZiB1c2luZyB2aXJ0dWFsIE1ESU8gYnVzZXMsIG9yIG1heWJlIHVzaW5nIGBtYWNiYCBvciBvdGhlciBlbXVsYXRlZCBOSUNzIHdoaWNoIGhhdmUgYnVpbHQtaW4gTURJTyBidXNlcywgYW5kIHdlIGNhbiBiaW5kIFBIWSBkcml2ZXJzIHRvIHRob3NlLiBBY3R1YWxseSwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBIWSBkcml2ZXJzIGlmIHRoZXkgYXJlIHJlZ2lzdGVyZWQgYW5kIGNhbiBiZSBib3VuZCwgd2hpY2ggbWVhbnMgd2UgbWlnaHQgYmUgYWJsZSB0byB0YXJnZXQgdGhpcy4gQ2FuIHdlIGJpbmQgYSBQSFkgZHJpdmVyIHRocm91Z2ggc3lzZnM/IFllcywgaWYgd2UgaGF2ZSBhbiBNRElPIGJ1cy5cblxuT2theSwgc28gdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhlcmUgYSB2aWFibGUgcGF0aCB0byB0cmlnZ2VyIGFuZCB0ZXN0IHRoaXMgbW9kaWZpZWQgY29kZT8gTGV0J3MgdmVyaWZ5IGlmIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgZnV6emFibGUuIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggaW4gdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGBEUDgzNjQwX1BIWWAuIFRoYXQgd2lsbCBnaXZlIHVzIGEgY2xlYXIgYW5zd2VyIGFib3V0IHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MDksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1MC41MTg2ODY4ODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyNDgyODg4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTEzNz1DT05GSUdfU1BJX1BMMDIyPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctMTM5LUNPTkZJR19HUElPTElCPXlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXFx0Kz0gZGF2aWNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNTctb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI3OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yOC0jZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0Njk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcwLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NzE6XFx0LnBoeV9pZFxcdFxcdD0gRFA4MzY0MF9QSFlfSUQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcyLVxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDkxOlxcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTItXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXFxcIkVuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo3NTpjb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1Mi44NDM1MjE0NDVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzAxMTkzMzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgU3l6a2FsbGVyJ3MgUEhZIERyaXZlciBSZWFjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jYC4gSXQncyBhIFBIWSBkcml2ZXIsIGNsZWFybHkuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgc3RhdGUsIGFjdHVhbGx5ICpnZXQqIHRvIHRoaXMgdGhpbmc/IENhbiBpdCB0ZXN0IHRoZSBgZHA4MzY0MC5jYCBkcml2ZXI/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIHRoZW9yZXRpY2FsbHksIGlmIFN5emthbGxlciBjYW4gc29tZWhvdyBjcmVhdGUgYW4gTURJTyBidXMgYW5kIHRoZW4gcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIHRoYXQgYnVzLiBUaGF0J3MgdGhlIGJhc2ljIHJlcXVpcmVtZW50LlxuXG5JIHJlbWVtYmVyIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgbWV0aG9kcyBhcmUgYXQgU3l6a2FsbGVyJ3MgZGlzcG9zYWwsIGJ1dCBJ4oCZbSBzcGVjaWZpY2FsbHkgd29uZGVyaW5nIGFib3V0IHRoZSBNRElPIGluc3RhbnRpYXRpb24gcGFydC4gRG9lcyBpdCBvZmZlciBhIGRpcmVjdCB3YXkgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcz8gSG1tLCB0aGVyZSdzIHRoZSBgbWRpb2AgYnVzIGluIHN5c2ZzLiBCdXQgY2FuIFN5emthbGxlciAqY3JlYXRlKiBkZXZpY2VzIG9uIHRoYXQgYnVzPyBUaGF0J3MgdGhlIGNydXggb2YgaXQuXG5cbkxldCBtZSB0aGlua+KApiBJIG5lZWQgdG8gY29uc2lkZXIgdmlydHVhbCBNRElPIGJ1cyBvcHRpb25zLCBvciBwZXJoYXBzIHdoZXRoZXIgZGV2aWNlcyBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gIHByb3ZpZGUgYSBzaWRlLWVmZmVjdCBNRElPIGJ1cy4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCBsb29rcyBsaWtlIGBkc2FgIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBpcyBwcm9taXNpbmcsIGFzIGl0IGNyZWF0ZXMgTURJTyBidXNlcy4gVGhlIG90aGVyIHBhdGggaGVyZSBpcyB0aGUgYGZpeGVkLXBoeWAgZHJpdmVyLCBidXQgSSByZWNhbGwgdGhhdCBkb2Vzbid0IHV0aWxpemUgdGhlIHN0YW5kYXJkIFBIWSBkcml2ZXJzLCBzbyB0aGF0IHdvbuKAmXQgaGVscCBoZXJlLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdoYXQgYWJvdXQgU3l6a2FsbGVyJ3MgdXNlIG9mIGB2aGNpYCBvciBgbmV0ZGV2c2ltYD8gQ291bGQgZWl0aGVyIG9mIHRob3NlIG9mZmVyIGFuIE1ESU8gYnVzPyBUaGF0J3MgdGhlIGFuZ2xlIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gcHVyc3VpbmcuIExldCdzIGRpZyBpbnRvIGBuZXRkZXZzaW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0IGhhcyBhbiBNRElPIGJ1cy4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwYXRoIHRvIHRlc3RpbmcgdGhpcyBwYXJ0aWN1bGFyIFBIWSBkcml2ZXIgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NTkuNTQ0NzE3NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ5MTY3MjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1OS42Mzk2NDE4NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE3NDY0MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQ29uc2lkZXJpbmcgRGF0YSBTdHJ1Y3R1cmUgYW5kIEFsZ29yaXRobSBDaG9pY2VzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFwid2hhdCBhYm91dCBgZHNhYD9cIi4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIHRob3VnaHQ7IGl0J3MgYSBkZWVwbHkgaW5ncmFpbmVkIHJlZmxleC4gVGhlIHdob2xlIHByb2JsZW0gc3BhY2UgSSdtIGFwcHJvYWNoaW5nIGlzIHNjcmVhbWluZyBmb3IgYSBzdHJ1Y3R1cmVkIGFsZ29yaXRobWljIGFwcHJvYWNoLiBUaGUgdHlwZSBvZiBzb2x1dGlvbiBJIG5lZWQgYWxtb3N0IGNlcnRhaW5seSBoaW5nZXMgb24gY2FyZWZ1bCBkYXRhIHN0cnVjdHVyZSBzZWxlY3Rpb24gYW5kIGFsZ29yaXRobSBkZXNpZ24uIEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgLS0gdHJlZXMsIGdyYXBocywgaGVhcHMsIGhhc2ggdGFibGVzIC0tIHNlZWluZyB3aGljaCBvbmVzIG1pZ2h0IG9mZmVyIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgZ2l2ZW4gdGhlIHR5cGljYWwgaW5wdXRzIEknbSBleHBlY3RpbmcuIFRoZSBcImRzYVwiIHNob3J0aGFuZCwgZm9yIG1lLCBpc24ndCBqdXN0IGEgZ2VuZXJpYyB0ZXJtOyBpdCdzIGEgZnJhbWV3b3JrIGZvciB0aGlua2luZyBhYm91dCBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgb3ZlcmFsbCBlZmZpY2llbmN5LiBTbywgSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcG90ZW50aWFsIGNvbnN0cmFpbnRzLCB0aGUgZXhwZWN0ZWQgc2NhbGUgb2YgdGhlIGRhdGEsIGFuZCBzdGFydCBmb3JtdWxhdGluZyBjb25jcmV0ZSBhbGdvcml0aG1pYyBpZGVhcy4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBpdGVyYXRlIHRocm91Z2ggcG9zc2liaWxpdGllcyBhbmQgZGlzY2FyZCB0aGUgb25lcyB0aGF0IHdvbid0IHNjYWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzowMi43NTcxMDgxMTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY0NzAyODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvZHNhLmM9NjIxPXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTY1My1cXHRpZiAoIWRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY1NDpcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbm5ldC9kc2EvZHNhLmMtNjU1LVxcdFxcdGlmICghZHMtXFx1MDAzZXVzZXJfbWlpX2J1cykge1xcbi0tXFxubmV0L2RzYS9kc2EuYy02NjEtXFxubmV0L2RzYS9kc2EuYzo2NjI6XFx0XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY2My1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9kc2EvZHNhLmMtNjczLVxcdGlmIChkcy1cXHUwMDNldXNlcl9taWlfYnVzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKVxcbm5ldC9kc2EvZHNhLmM6Njc0OlxcdFxcdG1kaW9idXNfZnJlZShkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY3NS10ZWFyZG93bjpcXG4tLVxcbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy02OTItXFx0aWYgKGRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIoZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxubmV0L2RzYS9kc2EuYzo2OTQ6XFx0XFx0bWRpb2J1c19mcmVlKGRzLVxcdTAwM2V1c2VyX21paV9idXMpO1xcbm5ldC9kc2EvZHNhLmMtNjk1LVxcdFxcdGRzLVxcdTAwM2V1c2VyX21paV9idXMgPSBOVUxMO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcXHUwMDNlXFxubmV0L2RzYS9wb3J0LmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3BvcnQuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNzI2PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNzk2LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1NNU0NfTEFOOTMwM19NRElPKVxcbm5ldC9kc2EvcG9ydC5jOjE3OTc6XFx0XFxcInNtc2MsbGFuOTMwMy1tZGlvXFxcIixcXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbm5ldC9kc2EvdXNlci5jOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxubmV0L2RzYS91c2VyLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3VzZXIuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3J0bmV0bGluay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjQyLVxcbm5ldC9kc2EvdXNlci5jOjI2NDM6XFx0dXNlcl9kZXYtXFx1MDAzZXBoeWRldiA9IG1kaW9idXNfZ2V0X3BoeShkcy1cXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjQ0LVxcdGlmICghdXNlcl9kZXYtXFx1MDAzZXBoeWRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzowMi44NTM1ODIxMzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI5OTg1NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFN5emthbGxlcidzIFBIWSBEcml2ZXIgQ292ZXJhZ2UqKlxuXG5IbW0sIHNvICpTeXprYWxsZXIqIG9jY2FzaW9uYWxseSBkYWJibGVzIGluIFBIWSBkcml2ZXJzLCBkb2Vzbid0IGl0PyBJIGhhdmUgYSB2YWd1ZSByZWNvbGxlY3Rpb24gb2Ygc2VlaW5nIHNvbWUgbWVudGlvbnMuLi4gYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJdCdzIGNydWNpYWwgdG8ga25vdyB0aGUgZXh0ZW50IG9mIGl0cyBjb3ZlcmFnZS4gVGhlIGludGVncml0eSBvZiBvdXIgbmV0d29yayBzdGFjayBkZXBlbmRzIG9uIHRob3JvdWdoIHRlc3RpbmcsIGFuZCBpZiBTeXprYWxsZXIgaXMgbGVhdmluZyBhIGJsaW5kIHNwb3QgaW4gdGhlIFBIWSBsYXllciwgd2UgbmVlZCB0byBhZGRyZXNzIGl0LlxuXG5SaWdodCwgbGV0J3MgY3V0IHRoZSBzcGVjdWxhdGlvbi4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIG1lbW9yeSwgbGV0J3MgZ2V0IGNvbmNyZXRlLiBJJ2xsIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggdGhlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVzY3JpcHRvcnMgcmVsYXRlZCB0byBNRElPIG9yLCBtb3JlIGJyb2FkbHksIFBIWSBmdW5jdGlvbmFsaXR5LiBJJ2xsIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHN5emthbGxlciBpbnRlcmZhY2VzIGRlZGljYXRlZCB0byB0aG9zZS4gSG9wZWZ1bGx5IHdlJ2xsIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgY292ZXJhZ2Ugc29vbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg3NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjA4LjI4MzU3MTEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTE1NDIzOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFfaHdzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjA4LjM2MjczNDA5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkxMjY5NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipFeHBsb3JpbmcgUEhZIERyaXZlciBBY2Nlc3MqKlxuXG5IbW0sIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBpbnRlcmFjdCB3aXRoIFBIWSBkcml2ZXJzIGJleW9uZCB3aGF0IEknbSBjdXJyZW50bHkgdXNpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcGF0aHMgSSBtaWdodCBiZSBvdmVybG9va2luZz8gUGVyaGFwcyBJIGNvdWxkIGxldmVyYWdlIHNvbWUgZXhpc3RpbmcgRFNBIGZyYW1ld29yayBjYXBhYmlsaXRpZXMuXG5cbkFoLCByaWdodCwgdGhlcmUncyBgZHNhX2xvb3BgLiBUaGUgbG9vcGJhY2sgRFNBIGRyaXZlci4uLiB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZS4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSBhbmQgc2VlIGlmIGl0IGNhbiBiZSBhZGFwdGVkIG9yIGlmIGl0IHByZXNlbnRzIGFueSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBtZSB0byBleHBsb3JlLiBJdCBjb3VsZCBvZmZlciBhIGNsZXZlciB3YXkgdG8gdGVzdCBvciBpbnRlcmFjdCB3aXRoIHRoZSBQSFkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTEuNTU0MDA1Nzk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODY1NzcwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03ND1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldnNbUEhZX01BWF9BRERSXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NTpzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE4ND1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTkwOlxcdHJldCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgcmVnbnVtKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xOTk9c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDY6XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjUwPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVxcdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNjQ6XFx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIE1JSV9CTVNSKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTItXFx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MzpcXHRtZGlvYnVzX3JlYWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgTUlJX0JNU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTgtXFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM2NTpcXHRkcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKmRzKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY2LVxcdGlmICghZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY5OlxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MC1cXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gRFNBX0xPT1BfTlVNX1BPUlRTO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNzI6XFx0cHMgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpwcyksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3My1cXHRpZiAoIXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MjpcXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODMtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg1OlxcdHBzLVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NzpcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5MC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTE6XFx0XFx0ZGV2X2luZm8oXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIiVzOiAweCUweFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTItXFx0XFx0XFx0IHBkYXRhLVxcdTAwM2VuYW1lLCBwZGF0YS1cXHUwMDNlZW5hYmxlZF9wb3J0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk5OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDAtXFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDEzOlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIwOlxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI0OlxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNS1cXHRcXHQubmFtZVxcdD0gXFxcImRzYS1sb29wXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzMj1zdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cXHRpZiAoV0FSTl9PTighYnVzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njc6XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY4OlxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2OS1cXHRcXHRnb3RvIG91dDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0OlxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzUtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzY6XFx0XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc3LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ni1cXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTc6XFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTg6XFx0XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTUwNT1zdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA4LVxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwOTpcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMDpcXHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzoxMS44NDA1ODkwNjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzMDMzODE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIFx1MDAyNiBQSFkgRGV2aWNlIFJlZ2lzdHJhdGlvbiAtIFN5emthbGxlciBDaGFsbGVuZ2VzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBkc2FfbG9vcGAgc2l0dWF0aW9uLCBhbmQgaXQganVzdCBoaXQgbWUg4oCTIGl0J3MgdXNpbmcgdGhlIGBmaXhlZC0wYCBidXMsIHdoaWNoIGhhcyB0aHJvd24gbWUgb2ZmIHRyYWNrLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIGFuIE1ESU8gYnVzIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlPyBUaGUgdGhvdWdodCBwcm9jZXNzIGlzIGEgY2FzY2FkZSBvZiBpZi90aGVuIHF1ZXN0aW9ucywgbGlrZSBhbiBlbmdpbmVlciBkZWJ1Z2dpbmcgY29kZS5cblxuTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB1c2UgYERQODM2NDBfUEhZYCwgYXMgSSBzZWUgdGhpcyBkcml2ZXIgaW4gdGhlIHNvdXJjZSwgYnV0IGl0J3MgYSAqaGFyZHdhcmUqIFBIWSBkcml2ZXIuIEhvdyBjYW4gd2UgcG9zc2libHkgaW5qZWN0IHRoYXQgaW50byB0aGUgc3lzdGVtLCBlc3BlY2lhbGx5IHVzaW5nIHN5emthbGxlciwgdW5sZXNzIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzIHdoZXJlIHdlIGNhbiByZWdpc3RlciBhbnkgYXJiaXRyYXJ5IFBIWSBJRCwgYSB0ZXN0IGNhc2UgcGVyaGFwcz9cblxuSG9sZCBvbi4uLiBkb2VzIHN5emthbGxlciBldmVuICpoYXZlKiBhIGBzeXpfbWRpb19idXNgIGNhbGw/IEkgZG9uJ3QgdGhpbmsgc28sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBzeXprYWxsZXIncyBkb2N1bWVudGF0aW9uLCBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBtZWNoYW5pc21zIHJlbGF0ZWQgdG8gTURJTyBvciBQSFkgZGV2aWNlcy4gSSdtIGFzc3VtaW5nIHN1Y2ggdG9vbHMgYXJlIGxpa2VseSB0byBleGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MzYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTYuODcwOTMwMTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5MDY5MjYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTYuOTc1ODQ1MTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDQyMDM4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgU2VhcmNoIENvbnN0cmFpbnRzKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IHRocm93IGEgYGdyZXBgIGZvciBgc3l6X2AgaW50byB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseTsgdGhhdCdzIGEgcm9va2llIG1pc3Rha2UuIFRoZSBoaW50IGFib3V0IGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBpcyBhIGdvb2QgcmVtaW5kZXIuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgZG9uJ3Qgc2VlIHRob3NlIHRvb2xzIGluIG15IGF2YWlsYWJsZSBsaXN0ISBJJ20gb25seSBzZWVpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFNvLCBjbGVhcmx5LCBJJ20gc3R1Y2sgd2l0aCB3aGF0IEkndmUgZ290LCBhbmQgdGhhdCBtZWFucyBubyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgU3l6a2FsbGVyIHNwZWNzIGRpcmVjdGx5LiBJJ2xsIGhhdmUgdG8gZmluZCBhbm90aGVyIHdheSB0byBpbnZlc3RpZ2F0ZSB0aGlzIGlzc3VlLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IGBEUDgzNjQwX1BIWWAuIFRoaXMgaXMgYSBoYXJkd2FyZSBQSFkgZHJpdmVyLCBhbmQgdGhhdCByYWlzZXMgc29tZSBpbW1lZGlhdGUgcXVlc3Rpb25zLiBSZWFjaGluZyB0aGVzZSBpbiBRRU1VIGlzIHVzdWFsbHkgYSBwcm9ibGVtLiBVbmxlc3MgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZXMgdGhhdCBwYXJ0aWN1bGFyIFBIWSwgb3IgdGhlcmUncyBhIHNvZnR3YXJlLWJhc2VkIGluc3RhbnRpYXRpb24gbWV0aG9kLCBpdOKAmXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBDYW4gSSBjcmVhdGUgaXQgdmlhIHNvZnR3YXJlPyBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgc3lzZnMgbWFnaWMgdGhhdCBjb3VsZCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIGFuZCBodW50IGZvciBzeXNmcyBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGNsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODU4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjIzLjI4MDA1MjM1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQwMDc5NjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjIzLjM1NDA2NjU5NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE3NTIwOTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQSFkgRGV2aWNlIElzc3VlKipcblxuSG1tLCBJJ20gdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSByb290IGNhdXNlIG9mIHRoaXMgbmV0d29ya2luZyBpc3N1ZS4gT2theSwgd2hlcmUgZG8gSSBldmVuIHN0YXJ0IHdpdGggdGhpcyBvbmU/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpcyBhIGNvbW1vbiBwb2ludCBvZiBmYWlsdXJlLiBUaGUgZGV2aWNlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBpcyBvZnRlbiB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBMZXQncyBzZWUuLi4gU3BlY2lmaWNhbGx5LCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhhdCBnZW5lcmFsIGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgdHJlZTogYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciBhIGxvdCBvZiBjb3JlIFBIWSBtYW5hZ2VtZW50LCBpbml0aWFsaXphdGlvbiwgYW5kIGNvbnRyb2wgbG9naWMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrIGFuZCB0aGUgc3BlY2lmaWMgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGEgZnJlcXVlbnQgc291cmNlIG9mIHRyaWNreSBidWdzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGF0IHRvIGxvb2sgZm9yLCBidXQgdGhhdCdzIHRoZSBsaWtlbHkgc3BvdCB0byBpbnZlc3RpZ2F0ZSBmaXJzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgaXMgYmVpbmcgZGV0ZWN0ZWQsIGluaXRpYWxpemVkLCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBmaWxlLiBXaGF0IGhhcHBlbnMgaWYgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGhhcyBhbiBpc3N1ZT8gSXMgdGhlcmUgc29tZSBraW5kIG9mIGluaXRpYWxpemF0aW9uIHByb2JsZW0gaGFwcGVuaW5nIHRoZXJlPyBUaGF0IHNvdW5kcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzoyNy45NzE1OTAzODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNzIzNDQ3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjI4LjA1MjMyMjI2NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA0MzA0MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZmVhc2libGUgdG8gY3JhZnQgYSBQSFkgZGV2aWNlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgd2hldGhlciB0aGVyZSdzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBieXBhc3MgdGhlIGtlcm5lbCBlbnRpcmVseSwgb3IgYXQgbGVhc3Qgc2lnbmlmaWNhbnRseSBpbnRlcmFjdCB3aXRoIHRoZSBQSFkuIExldCdzIGRpZyBpbnRvIHRoZSBhdmFpbGFibGUgaW50ZXJmYWNlcy5cblxuVGhlIGZpcnN0IGFwcHJvYWNoIHRoYXQganVtcHMgdG8gbWluZCBpcyB0byBzZWUgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIE1ESU8gaW50ZXJmYWNlIHRocm91Z2ggZWl0aGVyIGFuIGBpb2N0bGAgb3IgYG5ldGxpbmtgIG1ldGhvZC4gTXkgZXhwZXJpZW5jZSBkaWN0YXRlcyB0aGF0IHRoaXMgaXMgdXN1YWxseSB0aGUgcHJpbWFyeSBhdmVudWUgZm9yIGxvdy1sZXZlbCBQSFkgY29udHJvbC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcmVsZXZhbnQga2VybmVsIGhlYWRlcnMuIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IGV4cG9zaW5nIE1ESU8gcmVnaXN0ZXJzIGluIGEgd2F5IHRoYXTigJlzIGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLiBGaW5kaW5nIGEgcmVsaWFibGUsIHVzZXItc3BhY2UgaW50ZXJmYWNlIHdvdWxkIGJlIGlkZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgzOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjMxLjc1NjYyODc1N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI1NzEwNzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvcnRuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjMxLjg0OTIwNzA3NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ3OTY0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyBhIERQODM2NDAgUEhZIHdpdGggc3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgbWFjYmAgZHJpdmVyIGFuZCBRRU1VLiBRRU1VIGVtdWxhdGVzIHRoZSBgbWFjYmAgd2hpY2gsIG9mIGNvdXJzZSwgaGFzIGFuIE1ESU8gYnVzLiBDYW4gUUVNVSBlbXVsYXRlIHRoZSBEUDgzNjQwIFBIWSBkaXJlY3RseT8gUHJvYmFibHkgbm90IHdpdGhvdXQgZGl2aW5nIGludG8gdGhlIHNvdXJjZS4gSSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIHNvIEkgbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5LlxuXG5XYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIhIEl0IGhhcyB0aGF0IGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwuIEkgcmVtZW1iZXIgdGhhdCBlbXVsYXRlcyBVU0IgZGV2aWNlcy4gTm93LCBpcyB0aGVyZSBhbnkgVVNCIHRvIE1ESU8gYnJpZGdlIHRoYXQgbWlnaHQgYmUgdXNlZnVsP1xuXG5BaGEhIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgIGFuZCBgZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmNgLCBJIHNlZSB0aGV5IGJvdGggaGF2ZSBNRElPIGltcGxlbWVudGF0aW9ucy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0ICpwcmVzZW50cyogYW4gTURJTyBidXMsIHdlIG1pZ2h0IGJlIG9udG8gc29tZXRoaW5nLlxuXG5TbywgaWYgd2UgZW11bGF0ZSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHNvbWV0aGluZyBsaWtlIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgb3IgZXZlbiBgYXg4ODE3OV8xNzhhYCwgdGhlIGRyaXZlciB3b3VsZCB0aGVuIHJlYWQgdGhlIFBIWSBJRCBmcm9tIHRoYXQgZW11bGF0ZWQgTURJTyBidXMuIEJyaWxsaWFudCEgVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciAqY29udHJvbHMqIHRoZSBVU0IgcmVzcG9uc2VzLiBXZSBjYW4gbWFrZSB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlcG9ydCBhIHNwZWNpZmljIFBIWSBJRC5cblxuSWYgd2UgZmVlZCBpdCB0aGUgRFA4MzY0MCdzIFBIWSBJRCwgd2hpY2ggSSBiZWxpZXZlIGlzIGAweDIwMDA1Y2UxYCwgd2hlbiB0aGUgZHJpdmVyIHJlYWRzIHRoZSBNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIgcmVnaXN0ZXJzLCBpdCBzaG91bGQgd29yay5cblxuV2hlbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyB0aGUgTURJTyBidXMgYW5kIHNjYW5zIGl0LCBpdCB3aWxsIGVuY291bnRlciB0aGUgUEhZIElEIHdlIGFyZSBwcmVzZW50aW5nLiBUaGUgTURJTyBjb3JlIHNob3VsZCBtYXRjaCB0aGlzIElELCB0cmlnZ2VyaW5nIHRoZSBiaW5kaW5nIG9mIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlci4gQm9vbSFcblxuVGhpcyBpcyBhIHJlYWxseSBjbGV2ZXIgdGVjaG5pcXVlLiBJdCdzIGEgdmVyeSBjb21tb24gYXBwcm9hY2ggd2l0aCBzeXprYWxsZXIuIFlvdSBlc3NlbnRpYWxseSBlbXVsYXRlIGEgVVNCIGRldmljZSB0aGF0J3MgYWN0aW5nIGFzIGEgTURJTyBidXMgYW5kIGluamVjdCB0aGUgYXJiaXRyYXJ5IFBIWSBJRCB0byB0cmljayB0aGUga2VybmVsIGludG8gbG9hZGluZyBkaWZmZXJlbnQgUEhZIGRyaXZlcnMuXG5cbk5vdywgbGV0J3MganVzdCBjb25maXJtIHRoYXQgYGxhbjc4eHhgIGFuZCBzaW1pbGFyIGRyaXZlcnMgYWN0dWFsbHkgdXNlIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgcmVhZCB0aG9zZSBQSFkgSURzLiBUaGF0J3MgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzozOS45OTcxNzU3NTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MjI0NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlbWRpb2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6NDAuMDYxNDA1NDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzODg2NzYzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHRoaXMgaXMgZXhjaXRpbmcuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGBkcDgzNjQwYCBkcml2ZXIncyBgZHA4MzY0MF9wcm9iZWAgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzbXNjOTV4eGAsIGBsYW43OHh4YCwgYW5kIGBhc2l4YCBkcml2ZXJzIGFsbCByZWdpc3RlciBhbiBNRElPIGJ1cywgYW5kIHRoZSBgbWRpb2J1c19yZWdpc3RlcmAgY2FsbCBzY2FucyB0aGUgYnVzIHVzaW5nIE1JSV9QSFlTSUQxIGFuZCBNSUlfUEhZU0lEMi4gU3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBjb250cm9sIFVTQiBlbmRwb2ludCByZXNwb25zZXMgbWVhbnMgd2UgY2FuIGZlZWQgaXQgdGhlIERQODM2NDAgUEhZIElELiBGYW50YXN0aWMhXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgZm9jdXNlZCBvbiByZWZhY3RvcmluZyBob3cgdGhlIGBkcDgzNjQwX2Nsb2NrYCAod2hpY2ggaXMgY3JpdGljYWwgZm9yIFBUUCkgaXMgbWFuYWdlZC4gUHJldmlvdXNseSwgdGhleSB3ZXJlIHVzaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGUgcGF0Y2gncyBtb3ZlZCBpdCB0byBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCwgcGVyLVBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEl0J3MgcmVtb3ZpbmcgYGRwODM2NDBfY2xvY2tfZ2V0X2J1c2AgYW5kIGBkcDgzNjQwX2Nsb2NrX3B1dGAgd2hpbGUgYWRkaW5nIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBhcyBhIGRldm0gYWN0aW9uIGZvciBjbGVhbnVwLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBib3RoIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBlc3NlbnRpYWxseSBhIGxpZmVjeWNsZSBvdmVyaGF1bCBvZiB0aGUgYGRwODM2NDBfY2xvY2tgLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBwcm9iZS9yZW1vdmUgY3ljbGUsIGVzcGVjaWFsbHkgd2l0aCBtdWx0aXBsZSBQSFlzLlxuXG5MZXQncyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGRwODM2NDBfY2xvY2tfaW5pdGAsIHRoZSBuZXcgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9wcm9iZWAsIGFuZCBgZHA4MzY0MF9yZW1vdmVgLlxuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9yZW1vdmVgIGlzIGEgdGVhcmRvd24gY2FsbGJhY2suIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHdlIHNob3VsZG4ndCBmdXp6IHBhdGNoZXMgdGhhdCAqb25seSogY2hhbmdlIHRlYXJkb3duIGNhbGxiYWNrcy4gQnV0IHRoaXMgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kIGFkZHMgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBTaW5jZSBpdCBhbHNvIG1vZGlmaWVzIGBkcDgzNjQwX3Byb2JlYCwgd2hpY2ggaXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGgsIHRoaXMgaXMgbm90IGp1c3QgdGVhcmRvd24gY2FsbGJhY2tzLiBJJ20gZ29vZC4gQW5kIHNpbmNlIFN5emthbGxlciBpcyBzbyBlZmZlY3RpdmUgYXQgZnV6emluZyBwcm9iZSBmdW5jdGlvbnMgKGxpa2UgYnkgZW11bGF0aW5nIFVTQiBkZXZpY2VzKSwgYGRwODM2NDBfcHJvYmVgIGlzIGEgZ3JlYXQgdGFyZ2V0LiAgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGlzIGFsc28gaW1wb3J0YW50IHNpbmNlIGl0J3MgYSBkZXZtIGFjdGlvbiBjYWxsZWQgb24gZGV2aWNlIHJlbW92YWwgb3IgcHJvYmUgZmFpbHVyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBkcDgzNjQwX3Byb2JlYC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkuIEknbGwgaW5jbHVkZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYC5cblxuV2hhdCBhYm91dCBgZHA4MzY0MF9jbG9ja19pbml0YD8gSXQncyBtYXJrZWQgYHN0YXRpY2AuIEZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBzbyBJIHdpbGwgbm90IGluY2x1ZGUgaXQsIGBkcDgzNjQwX3Byb2JlYCBpcyBiZXR0ZXIuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlcXVpcmVkIENPTkZJRyBvcHRpb25zLiBMb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gbW9kaWZ5IGBkcml2ZXJzL3B0cC9LY29uZmlnYC4gWWVzLCB0aGUga2V5IGlzIGBEUDgzNjQwX1BIWWAsIGFuZCBpdCBkZXBlbmRzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AsIGFuZCBzZWxlY3RzIGBDUkMzMmAgYW5kIGBQSFlfUEFDS0FHRWAuICBUaGF0J3MgYWxsIGdvb2QsIEkga25vdyB3aGVyZSB0byBsb29rLiBJJ3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjU0LjQ1MDA4NDE0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MjUzMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUDgzNjQwX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9NzI9Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjU0LjY5NDM0MzU4MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODY4NDQyODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRFA4MzY0MF9QSFkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgYXNrZWQuIEl0IHNvdW5kcyBsaWtlIHNvbWVvbmUgd2FudHMgbWUgdG8gYW5hbHl6ZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUDgzNjQwX1BIWWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgbW9kdWxlcyBgRFA4MzY0MF9QSFlgIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uLiBUaGlzIGNvdWxkIGluY2x1ZGUgb3RoZXIgUEhZIGRyaXZlcnMsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgUlRPUyBjb21wb25lbnRzLCBldmVuIHNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zIG9yIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gZXhhbWluZSBhbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBhbmQgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZmlsZXMuXG5cbkknbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgYW5kIGlkZW50aWZpZXJzIHdpdGhpbiB0aGUgY29kZSB0aGF0IHBvaW50IHRvd2FyZHMgZXh0ZXJuYWwgZWxlbWVudHMgaXQgaW50ZXJhY3RzIHdpdGguIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gd2F0Y2ggZm9yIGluY2x1ZGUgc3RhdGVtZW50cyAoYCNpbmNsdWRlYCksIGZ1bmN0aW9uIGNhbGxzIHRvIG90aGVyIG1vZHVsZXMsIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBzcGVjaWZ5IHRoZSBleHRlcm5hbCByZXNvdXJjZXMgbmVlZGVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBhbmQgY29uZmlndXJhdGlvbi10aW1lIGRlcGVuZGVuY2llcy5cblxuSWYgdGhlIGRvY3VtZW50YXRpb24gaXMgbGFja2luZywgb3IgaW5jb21wbGV0ZSwgdGhlIGNvZGUgaXRzZWxmIGlzIHdoZXJlIEknbGwgZ2V0IG15IGJlc3QgaW5zaWdodHMuIEkga25vdyB0byBzZWFyY2ggZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgcmV2ZWFsIHRoaXMgbW9kdWxlJ3MgaW50ZXJkZXBlbmRlbmNpZXM6IGluY2x1ZGUgaGVhZGVycywgbWFrZWZpbGUgZGlyZWN0aXZlcywgbGlua2VyIHNjcmlwdHMsIG9yIGRldmljZSB0cmVlIGVudHJpZXMsIGFueXRoaW5nIHRoYXQgY2FuIHJldmVhbCBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlciBtb2R1bGUgb3IgZmlsZS4gSSdsbCBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBwcmVjaXNlLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6NTguNTYyNzg5NTY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX3FvcmlxLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBIWUxJQj1uIHx8IE5FVFdPUktfUEhZX1RJTUVTVEFNUElORz1uXFxuICA3NDpcXHRcXG4gIDc1OlxcdGNvbmZpZyBEUDgzNjQwX1BIWVxcbiAgNzY6XFx0XFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQSFlMSUJcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDgwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODE6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXFxuICA4NjpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxcbiAgODc6XFx0XFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xcbiAgODg6XFx0XFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cXG4gIDg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzo1OC41NjI4OTQzNjdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5OTk3NzY4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBtZW50YWwgY2hlY2tsaXN0IGlzIHRpY2tpbmcgYXdheSBoZXJlLlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVHJhY2luZyB0aGUgUm9vdCoqXG5cblJpZ2h0LCBzbyBgRFA4MzY0MF9QSFlgLCBhcyBJIHJlY2FsbCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBsZXZlcmFnZXMgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gTWFrZXMgc2Vuc2UsIHRoZSB0aW1lc3RhbXBpbmcgYW5kIFBUUCBlbGVtZW50cyBhcmUga2V5IHRvIHRoYXQgUEhZJ3MgZnVuY3Rpb25hbGl0eS4gTm93LCBJIHdhbnQgdG8gZHJpbGwgZG93biBhbmQgdW5kZXJzdGFuZCB0aGUgY29yZSBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBtYXR0ZXIgbGllcy4gTmVlZCB0byBrbm93IHdoYXQgKml0KiByZWxpZXMgb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjAxLjU2Mjg3NDI1MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTY1NDI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0xNTE9Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcXG4tLVxcbm5ldC9LY29uZmlnLTE1My1cXG5uZXQvS2NvbmZpZzoxNTQ6Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbm5ldC9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJUaW1lc3RhbXBpbmcgaW4gUEhZIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjAzLjc4ODUzMzg5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjE0NjAwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYXNwZWN0IG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGJldHRlci4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvS2NvbmZpZ2AsIHRoYXQncyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGxpbmUgMTU0IGlzIGxpa2VseSBhIGdvb2QgcG9pbnQgdG8gYmVnaW47IGl0IG1pZ2h0IGRlZmluZSBhIG1vZHVsZSBvciBhIGZlYXR1cmUuIE9mdGVuLCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkIGxpbmVhcmx5LCBhbmQgdGhlIGtleSBkZWZpbml0aW9ucyBhcmUgZ3JvdXBlZCB0b2dldGhlciBsb2dpY2FsbHkuIFNvLCBzdGFydGluZyB0aGVyZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBmbG93LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzMwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MDguNjQ5OTk2MTE0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXG4gMTUxOlxcdGNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuIDE1MjpcXHRcXHRkZWZfYm9vbCBuXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMTU1OlxcdFxcdGJvb2wgXFxcIlRpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1xcXCJcXG4gMTU2OlxcdFxcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXFxuIDE1NzpcXHRcXHRoZWxwXFxuIDE1ODpcXHRcXHQgIFRoaXMgYWxsb3dzIHRpbWVzdGFtcGluZyBvZiBuZXR3b3JrIHBhY2tldHMgYnkgUEhZcyAob3JcXG4gMTU5OlxcdFxcdCAgb3RoZXIgTUlJIGJ1cyBzbm9vcGluZyBkZXZpY2VzKSB3aXRoIGhhcmR3YXJlIHRpbWVzdGFtcGluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODowOC42NTAwNzMwODRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMjg5NDI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqUXVpY2sgTmV0d29yayBUaW1lc3RhbXBpbmcgQ2hlY2sqKlxuXG5SaWdodCwgc28sIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLi4uIG5vIHNwZWNpZmljLCB1bnVzdWFsIGRlcGVuZGVuY2llcyBqdW1wIG91dCBhdCBtZSBpbW1lZGlhdGVseS4gVGhhdCdzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24g4oCTIGFuZCBpdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBrZWVwIHRoaXMgdG9wLW9mLW1pbmQg4oCTIGlzLCB3aGF0IGFib3V0IGBQSFlMSUJgPyBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW1wYWN0ZWQgaW4gYW55IHdheT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyB0aGlzIHRpZXMgaW50byB0aGUgcGh5c2ljYWwgbGF5ZXIgbGlicmFyeS4gQXJlIHdlIGxldmVyYWdpbmcgZXhpc3RpbmcgYFBIWUxJQmAgY2FwYWJpbGl0aWVzIG9yIGNpcmN1bXZlbnRpbmcgdGhlbT8gSXMgdGhpcyBhIHN0YW5kYXJkIG9wZXJhdGlvbiwgb3IgYSBjdXN0b20gb25lIHRoYXQgaW50cm9kdWNlcyBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyBmb3IgdGhlIHVzZXIgdG8gY29uc2lkZXI/IEl0IGNvdWxkIGltcGFjdCB0aGluZ3MgbGlrZSBQSFkgZHJpdmVycyBhbmQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gSSdsbCBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgb24gdGhhdCBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwODEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjEzLjQ4Mjk2OTg4OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1OTIyMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MTUuNjQyMTk2NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjcyOTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQSFkgQ29uZmlndXJhdGlvbiBTcGFjZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNvIEknbGwgc3RhcnQgd2l0aCB0aGUgbGlrZWx5IGNhbmRpZGF0ZTogYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gTGluZSAxNSBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBvcmllbnQgbXlzZWxmIHdpdGhpbiB0aGUgZmlsZSdzIHN0cnVjdHVyZS4gSG9wZWZ1bGx5LCBpdCBkZWZpbmVzIG9yIGluY2x1ZGVzIHRoZSBicm9hZGVyIGZyYW1ld29yayBmb3IgUEhZIGRyaXZlcnMgYW5kIHRoZWlyIHNldHRpbmdzLiBJIGV4cGVjdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGd1aWRlIG1lIHRocm91Z2ggaG93IHZhcmlvdXMgUEhZIHR5cGVzIGFyZSBzZWxlY3RlZCwgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCwgYWxsb3dpbmcgbWUgdG8gc3RhcnQgbXkgbW9yZSBpbi1kZXB0aCBhbmFseXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NjgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODoxOC44Mzg5MjgyMzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MTguODM5MDA1NjY3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjIzMDk0NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUEhZTElCIERlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gbG9va2luZyBvdmVyIHRoaXMgY29kZSwgSSdtIG5vdCBzcG90dGluZyBhbnkgdW51c3VhbCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBQSFlMSUJgIGNvbXBvbmVudC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQsIHRoYXQgcHJvbXB0cyBhIHNlY29uZGFyeSB0aG91Z2h0OiB3aGF0IGFib3V0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBjbG9jaywgc3BlY2lmaWNhbGx5IGBQVFBfMTU4OF9DTE9DS2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlZ3JhdGlvbiBwb2ludHMgb3Igc2hhcmVkIHJlc291cmNlcyBJIHNob3VsZCBiZSBtaW5kZnVsIG9mLiBXZSB1c2UgYFBIWUxJQmAgYSBsb3QgaW4gdGltaW5nIHNlbnNpdGl2ZSBzeXN0ZW1zLCBzbyB0aGVyZSBjb3VsZCBlYXNpbHkgYmUgc29tZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZyBhdCBmaXJzdCBnbGFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODoyMi4yMDEzMTk0NzlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTg4NTcyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBUUF8xNTg4X0NMT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI0LjQ2MDE4MjA3N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxNDU2NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4LlxuXG4qKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEknbSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWFpbiBLY29uZmlnIHN5bWJvbCBhbmQgaXRzIGRlcGVuZGVuY2llcyBvciBwb3NzaWJsZSBkZWZhdWx0cyBoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZCBzdHJva2VzIG9mIGhvdyB0aGUgUFRQIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIHNvIEkgY2FuIGJldHRlciBncmFzcCBob3cgdG8gdGFpbG9yIG15IHN5c3RlbXMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI3Ljg2MTY0MDY0OFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgUE9TSVhfVElNRVJTXFxuICAxMTpcXHRcXHRkZWZhdWx0IEVUSEVSTkVUXFxuICAxMjpcXHRcXHRzZWxlY3QgUFBTXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX1BUUF9DTEFTU0lGWVxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGUgSUVFRSAxNTg4IHN0YW5kYXJkIGRlZmluZXMgYSBtZXRob2QgdG8gcHJlY2lzZWx5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI3Ljg2MTcwMzIwOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA4NTMyNzA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBmb3IgUmVmYWN0b3JpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgZHA4MzY0MGAgUEhZIGRyaXZlci4gIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AsIHdoaWNoIGFyZSBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYuICBUbyBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGUga2V5IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gIEFoYSwgYERQODM2NDBfUEhZYCBpcyB0aGUgbWFpbiBvbmU7IGl0IGJyaW5ncyBgUEhZX1BBQ0tBR0VgIGluIHdpdGggaXQuIFNvLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgaW5kZWVkIGJlOiBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgaW1wb3J0YW50IHN5bWJvbHMgZm9yIHRoaXMuIEkgc2VlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGp1bXAgb3V0LiBXYWl0IGEgbWludXRlLi4uIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYywgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLiBJcyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgc3RhdGljPyBZZXMsIGBzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpYC4gQWgsIGl0J3MgcGFzc2VkIHRvIGBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXRgLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGUgcHJvbXB0IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGZvbGxvd2luZyB0aGF0IGd1aWRlbGluZSwgc28gbGV0J3MgZG91YmxlLWNoZWNrLlxuXG5Pa2F5LCBsZXQncyBsb29rIGF0IGBkcDgzNjQwX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AuICBZdXAsIGl0J3Mgc3RhdGljISBCdXQgaXQncyBwYXJ0IG9mIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0LCBzbyBpdCBpcyBhbiBBUEkgZW50cnkgcG9pbnQ6XG5cbmBgYGNcbnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xue1xuXHQucGh5X2lkXHRcdD0gRFA4MzY0MF9QSFlfSUQsXG5cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuXHQubmFtZVx0XHQ9IFwiTmF0U2VtaSBEUDgzNjQwXCIsXG5cdC8qIFBIWV9CQVNJQ19GRUFUVVJFUyAqL1xuXHQucHJvYmVcdFx0PSBkcDgzNjQwX3Byb2JlLFxuXHQucmVtb3ZlXHRcdD0gZHA4MzY0MF9yZW1vdmUsXG4uLi5cbmBgYFxuXG5TbywgYGRwODM2NDBfcHJvYmVgIGlzIHRvdGFsbHkgZmluZSBhcyBhIGZvY3VzIHN5bWJvbC4gQW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGZpbmUsIGFzIGl0J3MgYSBkZXZtIGFjdGlvbiBjYWxsYmFjay5cblxuTGV0J3MgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiAgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgZHA4MzY0MF9wcm9iZWAsIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjayBhbmQgZGVmaW5pdGVseSBtb2RpZmllZC4gIEFuZCB0aGUgY2xvY2sgZnVuY3Rpb25zIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19wdXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfZ2V0YCBoYXZlIGFsbCBiZWVuIHJlbW92ZWQuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgYmVjb21lczogYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9waHlfcmVsZWFzZWAuXG5cbkxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbiAtIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBhbGwgb2YgdGhlbSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5Pa2F5LCB0aGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQuIFRoZSBjaGFuZ2UgaXMgYWJvdXQgbGV2ZXJhZ2luZyBgcGh5X3BhY2thZ2VgIGZvciBzaGFyZWQgY2xvY2sgc3RhdGUsIHdoaWNoIHJlcGxhY2VzIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiAgSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBXZSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uICh0aGluayBgc21zYzk1eHhgLCBgbGFuNzh4eGAgc2NlbmFyaW9zKSwgd2hpY2ggcmVnaXN0ZXIgYW4gTURJTyBidXMgYW5kIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBhdGggaGVyZSBuZWNlc3NpdGF0ZXMgZnV6emluZyB0byByb290IG91dCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4gSSdsbCBuZWVkIHRvIHdyaXRlIHVwIHRoZSBmaW5hbCByZXN1bHRzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MTAsIk91dHB1dFRva2VucyI6MjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjQxLjk0NzAzMjQ3NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzMxMDc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9waHlfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBsb2dpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uIChlLmcuLCBzbXNjOTV4eCwgbGFuNzh4eCksIHdoaWNoIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgY2FuIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgYmluZGluZyBvZiB0aGlzIGRyaXZlci4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSwgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHByb2JlIG9yIHdoZW4gbXVsdGlwbGUgUEhZcyBhcmUgaW5zdGFudGlhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 08:10:02 +0000 UTC FinishedAt: 2026-08-05 08:38:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "5f442b7e-c9ec-4b95-88b5-066e3ea45bbb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_phy_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBwaHlfcGFja2FnZSBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdGF0ZSwgcmVwbGFjaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBsb2dpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uIChlLmcuLCBzbXNjOTV4eCwgbGFuNzh4eCksIHdoaWNoIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgY2FuIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgYmluZGluZyBvZiB0aGlzIGRyaXZlci4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSwgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHByb2JlIG9yIHdoZW4gbXVsdGlwbGUgUEhZcyBhcmUgaW5zdGFudGlhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2JlMjQxZDdhYmY3OGIzY2M5MmM2YjNkMGUxYTBmYTc2OTBhOGJhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDg6MzY6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjdiZDEzMGY3Nzk0ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcJiMzNDs6IFwmIzM0OyBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS9kZXZyZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aHRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG5AQCAtMjEsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtkcDgzNjQwX3JlZy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3BoeWxpYi5oXCYjMzQ7XG4gXG4gI2RlZmluZSBEUDgzNjQwX1BIWV9JRFx0MHgyMDAwNWNlMVxuICNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG5AQCAtMTI4LDEwICYjNDM7MTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XG4gfTtcbiBcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4tXHQvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICYjMzk7cGh5dGVyX2Nsb2NrcyYjMzk7IGxpc3QgKi9cbi1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi1cdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cbi1cdHN0cnVjdCBtaWlfYnVzICpidXM7XG4gXHQvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqL1xuIFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xuIFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cbkBAIC0xNDYsNiAmIzQzOzE0NCw3IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDtcbiBcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XG4mIzQzO1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgJiM0MzsyMDUsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gXHR9XG4gfVxuIFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xuLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7XG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xuQEAgLTk1MywxMyAmIzQzOzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXG4mIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiYjNDM7XHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cdTAwM2VwaW5fY29uZmlnO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5vd25lciA9IFRISVNfTU9EVUxFO1xuIFx0c3ByaW50ZihjbG9jay1cdTAwM2VjYXBzLm5hbWUsIFwmIzM0O2RwODM2NDAgdGltZXJcJiMzNDspO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICYjNDM7OTcxLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdGNsb2NrLVx1MDAzZWNhcHMuc2V0dGltZTY0XHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLmVuYWJsZVx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLnZlcmlmeVx0PSBwdHBfZHA4MzY0MF92ZXJpZnk7XG4tXHQvKlxuLVx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxuLVx0ICovXG4mIzQzO1x0LyogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gdGhlIHBpbiBjb25maWd1cmF0aW9uLiAqL1xuIFx0ZHA4MzY0MF9ncGlvX2RlZmF1bHRzKGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyk7XG4tXHQvKlxuLVx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxuLVx0ICovXG4tXHRnZXRfZGV2aWNlKFx1MDAyNmJ1cy1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG5AQCAtOTk5LDU4ICYjNDM7OTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTM5OCwyMiAmIzQzOzEzMzQsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAgPSBkYXRhO1xuJiM0MztcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcDtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbiBcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbiYjNDM7XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuJiM0MztcbiYjNDM7XHRjbG9jayA9IGRwODM2NDAtXHUwMDNlY2xvY2s7XG4mIzQzO1x0cGh5ZGV2ID0gZHA4MzY0MC1cdTAwM2VwaHlkZXY7XG4mIzQzO1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4mIzQzO1x0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4mIzQzO1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuJiM0MztcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiYjNDM7XHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbiYjNDM7XHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4mIzQzO1x0XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbiYjNDM7XHRcdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcbiYjNDM7XHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4mIzQzO1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4mIzQzO1x0a2ZyZWUoZHA4MzY0MCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuJiM0Mzt7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbiYjNDM7XHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG4mIzQzO1x0XHRcdFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XG4mIzQzO1x0aWYgKGVycilcbiBcdFx0Z290byBub19jbG9jaztcbiBcbiYjNDM7XHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4mIzQzO1x0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7XHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuJiM0MztcdFx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4mIzQzO1x0aWYgKCFkcDgzNjQwKSB7XG4mIzQzO1x0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG5vX21lbW9yeTtcbiYjNDM7XHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDY4ICYjNDM7MTQzNCwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiBub19yZWdpc3RlcjpcbiBcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4mIzQzO1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIG5vX2Nsb2NrOlxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbi1cdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbi1cdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XG4tXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4gXG4gXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuLVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuLVxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbi1cbi1cdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuLVx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuLVx0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuLVx0fSBlbHNlIHtcbi1cdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbi1cdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuLVx0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuLVx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH1cbi1cdH1cbi1cbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuLVx0a2ZyZWUoZHA4MzY0MCk7XG4tXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbiYjNDM7XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNiZTI0MWQ3YWJmNzhiM2NjOTJjNmIzZDBlMWEwZmE3NjkwYThiYTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjM2OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKaW5kZXggOTg0NzJhYmRkMzkyMC4uN2JkMTMwZjc3OTRmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgJiMzNDs6ICYjMzQ7IGZtdAogCiAjaW5jbHVkZSAmbHQ7bGludXgvY3JjMzIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZGV2aWNlL2RldnJlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V0aHRvb2wuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9saXN0LmgmZ3Q7CkBAIC0yMSw2ICYjNDM7MjIsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtkcDgzNjQwX3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3BoeWxpYi5oJiMzNDsKIAogI2RlZmluZSBEUDgzNjQwX1BIWV9JRAkweDIwMDA1Y2UxCiAjZGVmaW5lIFBBR0VTRUwJCTB4MTMKQEAgLTEyOCwxMCAmIzQzOzEzMCw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgewogfTsKIAogc3RydWN0IGRwODM2NDBfY2xvY2sgewotCS8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqLwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQkvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovCi0Jc3RydWN0IG1paV9idXMgKmJ1czsKIAkvKiBwcm90ZWN0cyBleHRlbmRlZCByZWdpc3RlcnMgZnJvbSBjb25jdXJyZW50IGFjY2VzcyAqLwogCXN0cnVjdCBtdXRleCBleHRyZWdfbG9jazsKIAkvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqLwpAQCAtMTQ2LDYgJiM0MzsxNDQsNyBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7CiAJc3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0OwogCS8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovCiAJc3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrOwomIzQzOwlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdOwogfTsKIAogLyogZ2xvYmFscyAqLwpAQCAtMjA2LDEwICYjNDM7MjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKQogCX0KIH0KIAotLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovCi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpOwotc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spOwotCiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovCkBAIC05NTMsMTMgJiM0Mzs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLAogCX0KIH0KIAotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQogewotCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCWNsb2NrLSZndDtidXMgPSBidXM7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KTsKJiM0MzsJY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGNsb2NrLSZndDtwaW5fY29uZmlnOwogCWNsb2NrLSZndDtjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7CiAJc3ByaW50ZihjbG9jay0mZ3Q7Y2Fwcy5uYW1lLCAmIzM0O2RwODM2NDAgdGltZXImIzM0Oyk7CiAJY2xvY2stJmd0O2NhcHMubWF4X2Fkagk9IDE5NTMxMjQ7CkBAIC05NzcsMTQgJiM0Mzs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCWNsb2NrLSZndDtjYXBzLnNldHRpbWU2NAk9IHB0cF9kcDgzNjQwX3NldHRpbWU7CiAJY2xvY2stJmd0O2NhcHMuZW5hYmxlCT0gcHRwX2RwODM2NDBfZW5hYmxlOwogCWNsb2NrLSZndDtjYXBzLnZlcmlmeQk9IHB0cF9kcDgzNjQwX3ZlcmlmeTsKLQkvKgotCSAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi4KLQkgKi8KJiM0MzsJLyogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gdGhlIHBpbiBjb25maWd1cmF0aW9uLiAqLwogCWRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkvKgotCSAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS4KLQkgKi8KLQlnZXRfZGV2aWNlKCZhbXA7YnVzLSZndDtkZXYpOwogfQogCiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCkBAIC05OTksNTggJiM0Mzs5ODcsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCWlmIChjbG9jaykKLQkJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQlyZXR1cm4gY2xvY2s7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLgotICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cykKLXsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCWxpc3RfZm9yX2VhY2godGhpcywgJmFtcDtwaHl0ZXJfY2xvY2tzKSB7Ci0JCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpOwotCQlpZiAodG1wLSZndDtidXMgPT0gYnVzKSB7Ci0JCQljbG9jayA9IHRtcDsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTsKLQlpZiAoIWNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYywKLQkJCQkJICAgICAgRFA4MzY0MF9OX1BJTlMpOwotCWlmICghY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZykgewotCQlrZnJlZShjbG9jayk7Ci0JCWNsb2NrID0gTlVMTDsKLQkJZ290byBvdXQ7Ci0JfQotCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTsKLQlsaXN0X2FkZF90YWlsKCZhbXA7Y2xvY2stJmd0O2xpc3QsICZhbXA7cGh5dGVyX2Nsb2Nrcyk7Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCXJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci19Ci0KIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IHJldDsKQEAgLTEzOTgsMjIgJiM0MzsxMzM0LDcwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKQogewomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTsKJiM0MzsJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CXBoeWRldiA9IGRwODM2NDAtJmd0O3BoeWRldjsKJiM0MzsJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkcDgzNjQwLSZndDt0c193b3JrKTsKJiM0MzsJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwomIzQzOwlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwomIzQzOwkJY2xvY2stJmd0O3B0cF9jbG9jayA9IE5VTEw7CiYjNDM7CQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCAmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSB7CiYjNDM7CQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKJiM0MzsJCQlpZiAodG1wID09IGRwODM2NDApIHsKJiM0MzsJCQkJbGlzdF9kZWxfaW5pdCgmYW1wO3RtcC0mZ3Q7bGlzdCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7ZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKJiM0MzsJa2ZyZWUoZHA4MzY0MCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKJiM0MzsJZXJyID0gZGV2bV9waHlfcGFja2FnZV9qb2luKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgcGh5ZGV2LAomIzQzOwkJCQkgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTsKJiM0MzsJaWYgKGVycikKIAkJZ290byBub19jbG9jazsKIAomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0MzsJaWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSkKJiM0MzsJCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeWRldi0mZ3Q7bWRpby5idXMtJmd0O3NoYXJlZF9sb2NrKTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKIAlkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7Ci0JaWYgKCFkcDgzNjQwKQomIzQzOwlpZiAoIWRwODM2NDApIHsKJiM0MzsJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gbm9fbWVtb3J5OwomIzQzOwl9CiAKIAlkcDgzNjQwLSZndDtwaHlkZXYgPSBwaHlkZXY7CiAJZHA4MzY0MC0mZ3Q7bWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDsKQEAgLTE0NTAsNjggJiM0MzsxNDM0LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCX0gZWxzZQogCQlsaXN0X2FkZF90YWlsKCZhbXA7ZHA4MzY0MC0mZ3Q7bGlzdCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCk7CiAKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwKJiM0MzsJCQkJICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlyZXR1cm4gMDsKIAogbm9fcmVnaXN0ZXI6CiAJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7CiYjNDM7CWNsb2NrLSZndDtwdHBfY2xvY2sgPSBOVUxMOwomIzQzOwlwaHlkZXYtJmd0O2RlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7CiYjNDM7CXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKIAlrZnJlZShkcDgzNjQwKTsKIG5vX21lbW9yeToKLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIG5vX2Nsb2NrOgogCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIGRwODM2NDBfcmVtb3ZlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7Ci0Jc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0OwotCXN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtJmd0O3ByaXY7Ci0JYm9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTsKLQogCWlmIChwaHlkZXYtJmd0O21kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUikKIAkJcmV0dXJuOwogCiAJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwogCiAJZW5hYmxlX3N0YXR1c19mcmFtZXMocGh5ZGV2LCBmYWxzZSk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZHA4MzY0MC0mZ3Q7dHNfd29yayk7Ci0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDtyeF9xdWV1ZSk7Ci0Jc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7dHhfcXVldWUpOwotCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLSZndDtjbG9jayk7Ci0KLQlpZiAoZHA4MzY0MCA9PSBjbG9jay0mZ3Q7Y2hvc2VuKSB7Ci0JCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwotCQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKLQl9IGVsc2UgewotCQlsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkgewotCQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKLQkJCWlmICh0bXAgPT0gZHA4MzY0MCkgewotCQkJCWxpc3RfZGVsX2luaXQoJmFtcDt0bXAtJmd0O2xpc3QpOwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQotCi0JaWYgKCFjbG9jay0mZ3Q7Y2hvc2VuICZhbXA7JmFtcDsgbGlzdF9lbXB0eSgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSkKLQkJcmVtb3ZlX2Nsb2NrID0gdHJ1ZTsKLQotCWRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTsKLQlrZnJlZShkcDgzNjQwKTsKLQotCWlmIChyZW1vdmVfY2xvY2spIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeXRlcl9jbG9ja3NfbG9jayk7Ci0JCWxpc3RfZGVsKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCQltdXRleF91bmxvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCi0JCW11dGV4X2Rlc3Ryb3koJmFtcDtjbG9jay0mZ3Q7ZXh0cmVnX2xvY2spOwotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2Nsb2NrX2xvY2spOwotCQlwdXRfZGV2aWNlKCZhbXA7Y2xvY2stJmd0O2J1cy0mZ3Q7ZGV2KTsKLQkJa2ZyZWUoY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyk7Ci0JCWtmcmVlKGNsb2NrKTsKLQl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWcKaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9LY29uZmlnCkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFkKIAlkZXBlbmRzIG9uIFBIWUxJQgogCWRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sKIAlzZWxlY3QgQ1JDMzIKJiM0MzsJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscAogCSAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLgogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MDkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBkcDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciAoYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgKS4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyB0aGUgY2xvY2sgaXMgaGFuZGxlZC4gVGhleSYjMzk7cmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgb2xkIGdsb2JhbCBjbG9jayBtYW5hZ2VtZW50IGFuZCB1c2luZyBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCB0byBoYW5kbGUgc2hhcmVkIGNsb2NrIHN0YXRlIHdpdGhpbiBhICYjMzQ7cGFja2FnZSYjMzQ7IG9yIGJ1cyDigJMgdGhhdCYjMzk7cyBhIG11Y2ggY2xlYW5lciBhcHByb2FjaC4gVGhleSYjMzk7dmUgYWxzbyByZW1vdmVkIHRoZSBvbGQgZ2xvYmFsIGxpc3QgYW5kIGxvY2sgKGBwaHl0ZXJfY2xvY2tzYCBhbmQgYHBoeXRlcl9jbG9ja3NfbG9ja2ApLCB3aGljaCBpcyBnb29kIGhvdXNla2VlcGluZy4gVGhlIGludHJvZHVjdGlvbiBvZiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgYXMgYSBkZXZtIGFjdGlvbiBpbmRpY2F0ZXMgYmV0dGVyIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAgc3VnZ2VzdCBhIGNvbXBsZXRlIGludGVncmF0aW9uIG9mIHRoZXNlIGNoYW5nZXMuCgpCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBhY2Nlc3NpYmxlIGlzIHRoaXMgY29kZSBpbiB0aGUgdGVzdGluZyBjb250ZXh0PyBJcyB0aGlzIGRyaXZlciBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT8gSXQmIzM5O3MgYSBQSFkgZHJpdmVyLCB3aGljaCBtZWFucyBpdCByZWxpZXMgb24gYmVpbmcgcHJvYmVkIGJ5IGFuIE1ESU8gYnVzLiBJbiBRRU1VLCB3ZSAqY2FuKiBlbXVsYXRlIE1ESU8gYnVzZXMgYW5kIFBIWXMsIGJ1dCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBoYXZlIGEgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgUEhZcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBkcml2ZXIgYXZhaWxhYmxlLCBvciBhIHdheSB0byBpbmplY3QgTURJTyBkZXZpY2VzLgoKV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21kaW9fYnVzYD8gTm8sIGJ1dCB0aGVyZSYjMzk7cyB0aGUgcG9zc2liaWxpdHkgb2YgdXNpbmcgdmlydHVhbCBNRElPIGJ1c2VzLCBvciBtYXliZSB1c2luZyBgbWFjYmAgb3Igb3RoZXIgZW11bGF0ZWQgTklDcyB3aGljaCBoYXZlIGJ1aWx0LWluIE1ESU8gYnVzZXMsIGFuZCB3ZSBjYW4gYmluZCBQSFkgZHJpdmVycyB0byB0aG9zZS4gQWN0dWFsbHksIHN5emthbGxlciAqZG9lcyogZnV6eiBQSFkgZHJpdmVycyBpZiB0aGV5IGFyZSByZWdpc3RlcmVkIGFuZCBjYW4gYmUgYm91bmQsIHdoaWNoIG1lYW5zIHdlIG1pZ2h0IGJlIGFibGUgdG8gdGFyZ2V0IHRoaXMuIENhbiB3ZSBiaW5kIGEgUEhZIGRyaXZlciB0aHJvdWdoIHN5c2ZzPyBZZXMsIGlmIHdlIGhhdmUgYW4gTURJTyBidXMuCgpPa2F5LCBzbyB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGVyZSBhIHZpYWJsZSBwYXRoIHRvIHRyaWdnZXIgYW5kIHRlc3QgdGhpcyBtb2RpZmllZCBjb2RlPyBMZXQmIzM5O3MgdmVyaWZ5IGlmIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgZnV6emFibGUuIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggaW4gdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGBEUDgzNjQwX1BIWWAuIFRoYXQgd2lsbCBnaXZlIHVzIGEgY2xlYXIgYW5zd2VyIGFib3V0IHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz0xMzc9Q09ORklHX1NQSV9QTDAyMj15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy0xMzktQ09ORklHX0dQSU9MSUI9eVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQmIzQzOz0gZGF2aWNvbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVx0JiM0Mzs9IGRwODM2NDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoyNzojZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI4LSNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDY5PXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcwLXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MTpcdC5waHlfaWRcdFx0PSBEUDgzNjQwX1BIWV9JRCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3Mi1cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0OTE6XHR7IERQODM2NDBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTItXHR7IH1cbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBTeXprYWxsZXImIzM5O3MgUEhZIERyaXZlciBSZWFjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgLiBJdCYjMzk7cyBhIFBIWSBkcml2ZXIsIGNsZWFybHkuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgc3RhdGUsIGFjdHVhbGx5ICpnZXQqIHRvIHRoaXMgdGhpbmc/IENhbiBpdCB0ZXN0IHRoZSBgZHA4MzY0MC5jYCBkcml2ZXI/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIHRoZW9yZXRpY2FsbHksIGlmIFN5emthbGxlciBjYW4gc29tZWhvdyBjcmVhdGUgYW4gTURJTyBidXMgYW5kIHRoZW4gcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIHRoYXQgYnVzLiBUaGF0JiMzOTtzIHRoZSBiYXNpYyByZXF1aXJlbWVudC4KCkkgcmVtZW1iZXIgYHN5el9nZW5ldGxpbmtgIGFuZCBvdGhlciBtZXRob2RzIGFyZSBhdCBTeXprYWxsZXImIzM5O3MgZGlzcG9zYWwsIGJ1dCBJ4oCZbSBzcGVjaWZpY2FsbHkgd29uZGVyaW5nIGFib3V0IHRoZSBNRElPIGluc3RhbnRpYXRpb24gcGFydC4gRG9lcyBpdCBvZmZlciBhIGRpcmVjdCB3YXkgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcz8gSG1tLCB0aGVyZSYjMzk7cyB0aGUgYG1kaW9gIGJ1cyBpbiBzeXNmcy4gQnV0IGNhbiBTeXprYWxsZXIgKmNyZWF0ZSogZGV2aWNlcyBvbiB0aGF0IGJ1cz8gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiBpdC4KCkxldCBtZSB0aGlua+KApiBJIG5lZWQgdG8gY29uc2lkZXIgdmlydHVhbCBNRElPIGJ1cyBvcHRpb25zLCBvciBwZXJoYXBzIHdoZXRoZXIgZGV2aWNlcyBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gIHByb3ZpZGUgYSBzaWRlLWVmZmVjdCBNRElPIGJ1cy4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCBsb29rcyBsaWtlIGBkc2FgIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBpcyBwcm9taXNpbmcsIGFzIGl0IGNyZWF0ZXMgTURJTyBidXNlcy4gVGhlIG90aGVyIHBhdGggaGVyZSBpcyB0aGUgYGZpeGVkLXBoeWAgZHJpdmVyLCBidXQgSSByZWNhbGwgdGhhdCBkb2VzbiYjMzk7dCB1dGlsaXplIHRoZSBzdGFuZGFyZCBQSFkgZHJpdmVycywgc28gdGhhdCB3b27igJl0IGhlbHAgaGVyZS4KCldhaXQgYSBzZWNvbmTigKYgd2hhdCBhYm91dCBTeXprYWxsZXImIzM5O3MgdXNlIG9mIGB2aGNpYCBvciBgbmV0ZGV2c2ltYD8gQ291bGQgZWl0aGVyIG9mIHRob3NlIG9mZmVyIGFuIE1ESU8gYnVzPyBUaGF0JiMzOTtzIHRoZSBhbmdsZSBJJiMzOTttIG1vc3QgaW50ZXJlc3RlZCBpbiBwdXJzdWluZy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXRkZXZzaW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0IGhhcyBhbiBNRElPIGJ1cy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGF0aCB0byB0ZXN0aW5nIHRoaXMgcGFydGljdWxhciBQSFkgZHJpdmVyIGVmZmVjdGl2ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IENvbnNpZGVyaW5nIERhdGEgU3RydWN0dXJlIGFuZCBBbGdvcml0aG0gQ2hvaWNlcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvICYjMzQ7d2hhdCBhYm91dCBgZHNhYD8mIzM0Oy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCB0aG91Z2h0OyBpdCYjMzk7cyBhIGRlZXBseSBpbmdyYWluZWQgcmVmbGV4LiBUaGUgd2hvbGUgcHJvYmxlbSBzcGFjZSBJJiMzOTttIGFwcHJvYWNoaW5nIGlzIHNjcmVhbWluZyBmb3IgYSBzdHJ1Y3R1cmVkIGFsZ29yaXRobWljIGFwcHJvYWNoLiBUaGUgdHlwZSBvZiBzb2x1dGlvbiBJIG5lZWQgYWxtb3N0IGNlcnRhaW5seSBoaW5nZXMgb24gY2FyZWZ1bCBkYXRhIHN0cnVjdHVyZSBzZWxlY3Rpb24gYW5kIGFsZ29yaXRobSBkZXNpZ24uIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIC0tIHRyZWVzLCBncmFwaHMsIGhlYXBzLCBoYXNoIHRhYmxlcyAtLSBzZWVpbmcgd2hpY2ggb25lcyBtaWdodCBvZmZlciB0aGUgYmVzdCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIGdpdmVuIHRoZSB0eXBpY2FsIGlucHV0cyBJJiMzOTttIGV4cGVjdGluZy4gVGhlICYjMzQ7ZHNhJiMzNDsgc2hvcnRoYW5kLCBmb3IgbWUsIGlzbiYjMzk7dCBqdXN0IGEgZ2VuZXJpYyB0ZXJtOyBpdCYjMzk7cyBhIGZyYW1ld29yayBmb3IgdGhpbmtpbmcgYWJvdXQgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5LCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIG92ZXJhbGwgZWZmaWNpZW5jeS4gU28sIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIHBvdGVudGlhbCBjb25zdHJhaW50cywgdGhlIGV4cGVjdGVkIHNjYWxlIG9mIHRoZSBkYXRhLCBhbmQgc3RhcnQgZm9ybXVsYXRpbmcgY29uY3JldGUgYWxnb3JpdGhtaWMgaWRlYXMuIFRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgaXRlcmF0ZSB0aHJvdWdoIHBvc3NpYmlsaXRpZXMgYW5kIGRpc2NhcmQgdGhlIG9uZXMgdGhhdCB3b24mIzM5O3Qgc2NhbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9kc2EuYz02MjE9c3RhdGljIGludCBkc2Ffc3dpdGNoX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5uZXQvZHNhL2RzYS5jLTY1My1cdGlmICghZHMtXHUwMDNldXNlcl9taWlfYnVzIFx1MDAyNlx1MDAyNiBkcy1cdTAwM2VvcHMtXHUwMDNlcGh5X3JlYWQpIHtcbm5ldC9kc2EvZHNhLmM6NjU0Olx0XHRkcy1cdTAwM2V1c2VyX21paV9idXMgPSBtZGlvYnVzX2FsbG9jKCk7XG5uZXQvZHNhL2RzYS5jLTY1NS1cdFx0aWYgKCFkcy1cdTAwM2V1c2VyX21paV9idXMpIHtcbi0tXG5uZXQvZHNhL2RzYS5jLTY2MS1cbm5ldC9kc2EvZHNhLmM6NjYyOlx0XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY2My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvZHNhL2RzYS5jLTY3My1cdGlmIChkcy1cdTAwM2V1c2VyX21paV9idXMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZClcbm5ldC9kc2EvZHNhLmM6Njc0Olx0XHRtZGlvYnVzX2ZyZWUoZHMtXHUwMDNldXNlcl9taWlfYnVzKTtcbm5ldC9kc2EvZHNhLmMtNjc1LXRlYXJkb3duOlxuLS1cbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNjkyLVx0aWYgKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyBcdTAwMjZcdTAwMjYgZHMtXHUwMDNlb3BzLVx1MDAzZXBoeV9yZWFkKSB7XG5uZXQvZHNhL2RzYS5jOjY5MzpcdFx0bWRpb2J1c191bnJlZ2lzdGVyKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jOjY5NDpcdFx0bWRpb2J1c19mcmVlKGRzLVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5uZXQvZHNhL2RzYS5jLTY5NS1cdFx0ZHMtXHUwMDNldXNlcl9taWlfYnVzID0gTlVMTDtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG5uZXQvZHNhL3BvcnQuYzoxMjojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvcG9ydC5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4tLVxubmV0L2RzYS9wb3J0LmM9MTcyNj1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE3OTYtI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfU01TQ19MQU45MzAzX01ESU8pXG5uZXQvZHNhL3BvcnQuYzoxNzk3Olx0XCYjMzQ7c21zYyxsYW45MzAzLW1kaW9cJiMzNDssXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxuLS1cbm5ldC9kc2EvdXNlci5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG5uZXQvZHNhL3VzZXIuYzoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2Vcbm5ldC9kc2EvdXNlci5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21kaW8uaFx1MDAzZVxubmV0L2RzYS91c2VyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L3J0bmV0bGluay5oXHUwMDNlXG4tLVxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXG4tLVxubmV0L2RzYS91c2VyLmMtMjY0Mi1cbm5ldC9kc2EvdXNlci5jOjI2NDM6XHR1c2VyX2Rldi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkoZHMtXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcbm5ldC9kc2EvdXNlci5jLTI2NDQtXHRpZiAoIXVzZXJfZGV2LVx1MDAzZXBoeWRldikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NzYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTeXprYWxsZXImIzM5O3MgUEhZIERyaXZlciBDb3ZlcmFnZSoqCgpIbW0sIHNvICpTeXprYWxsZXIqIG9jY2FzaW9uYWxseSBkYWJibGVzIGluIFBIWSBkcml2ZXJzLCBkb2VzbiYjMzk7dCBpdD8gSSBoYXZlIGEgdmFndWUgcmVjb2xsZWN0aW9uIG9mIHNlZWluZyBzb21lIG1lbnRpb25zLi4uIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byBrbm93IHRoZSBleHRlbnQgb2YgaXRzIGNvdmVyYWdlLiBUaGUgaW50ZWdyaXR5IG9mIG91ciBuZXR3b3JrIHN0YWNrIGRlcGVuZHMgb24gdGhvcm91Z2ggdGVzdGluZywgYW5kIGlmIFN5emthbGxlciBpcyBsZWF2aW5nIGEgYmxpbmQgc3BvdCBpbiB0aGUgUEhZIGxheWVyLCB3ZSBuZWVkIHRvIGFkZHJlc3MgaXQuCgpSaWdodCwgbGV0JiMzOTtzIGN1dCB0aGUgc3BlY3VsYXRpb24uIEluc3RlYWQgb2YgcmVseWluZyBvbiBtZW1vcnksIGxldCYjMzk7cyBnZXQgY29uY3JldGUuIEkmIzM5O2xsIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggdGhlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRlc2NyaXB0b3JzIHJlbGF0ZWQgdG8gTURJTyBvciwgbW9yZSBicm9hZGx5LCBQSFkgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgc3l6a2FsbGVyIGludGVyZmFjZXMgZGVkaWNhdGVkIHRvIHRob3NlLiBIb3BlZnVsbHkgd2UmIzM5O2xsIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgY292ZXJhZ2Ugc29vbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExX2h3c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE1OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipFeHBsb3JpbmcgUEhZIERyaXZlciBBY2Nlc3MqKgoKSG1tLCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBpbnRlcmFjdCB3aXRoIFBIWSBkcml2ZXJzIGJleW9uZCB3aGF0IEkmIzM5O20gY3VycmVudGx5IHVzaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIHBhdGhzIEkgbWlnaHQgYmUgb3Zlcmxvb2tpbmc/IFBlcmhhcHMgSSBjb3VsZCBsZXZlcmFnZSBzb21lIGV4aXN0aW5nIERTQSBmcmFtZXdvcmsgY2FwYWJpbGl0aWVzLgoKQWgsIHJpZ2h0LCB0aGVyZSYjMzk7cyBgZHNhX2xvb3BgLiBUaGUgbG9vcGJhY2sgRFNBIGRyaXZlci4uLiB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZS4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSBhbmQgc2VlIGlmIGl0IGNhbiBiZSBhZGFwdGVkIG9yIGlmIGl0IHByZXNlbnRzIGFueSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBtZSB0byBleHBsb3JlLiBJdCBjb3VsZCBvZmZlciBhIGNsZXZlciB3YXkgdG8gdGVzdCBvciBpbnRlcmFjdCB3aXRoIHRoZSBQSFkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzQ9c3RhdGljIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXZzW1BIWV9NQVhfQUREUl07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NTpzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE4ND1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTkwOlx0cmV0ID0gbWRpb2J1c19yZWFkX25lc3RlZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCByZWdudW0pO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTkxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xOTk9c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDY6XHRyZXQgPSBtZGlvYnVzX3dyaXRlX25lc3RlZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCByZWdudW0sIHZhbHVlKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjUwPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2My1cdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI2NDpcdG1kaW9idXNfcmVhZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCBNSUlfQk1TUik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjgzPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5Mi1cdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MzpcdG1kaW9idXNfcmVhZChidXMsIHBzLVx1MDAzZXBvcnRfYmFzZSAmIzQzOyBwb3J0LCBNSUlfQk1TUik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3Olx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTgtXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY1Olx0ZHMgPSBkZXZtX2t6YWxsb2MoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHNpemVvZigqZHMpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2Ni1cdGlmICghZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY5Olx0ZHMtXHUwMDNlZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzAtXHRkcy1cdTAwM2VudW1fcG9ydHMgPSBEU0FfTE9PUF9OVU1fUE9SVFM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNzI6XHRwcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcyksIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzczLVx0aWYgKCFwcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODI6XHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4My1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NTpcdHBzLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg3Olx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzkwLVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTE6XHRcdGRldl9pbmZvKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBcJiMzNDslczogMHglMHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTItXHRcdFx0IHBkYXRhLVx1MDAzZW5hbWUsIHBkYXRhLVx1MDAzZWVuYWJsZWRfcG9ydHMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTk6XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAwLVx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMzpcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDE5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIwOlx0ZGV2X3NldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjQ6XHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI1LVx0XHQubmFtZVx0PSBcJiMzNDtkc2EtbG9vcFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00MzI9c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XHRyZXR1cm4gZHJ2ID09IFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NDM4PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDYyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDYzOlx0YnVzID0gbWRpb19maW5kX2J1cyhcJiMzNDtmaXhlZC0wXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cdGlmIChXQVJOX09OKCFidXMpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ2NzpcdHN3aXRjaF9tZGlvZGV2ID0gbWRpb19kZXZpY2VfY3JlYXRlKGJ1cywgMzEpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY4Olx0aWYgKElTX0VSUihzd2l0Y2hfbWRpb2RldikpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NjktXHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlx0c3dpdGNoX21kaW9kZXYtXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcdTAwMjZkc2FfbG9vcF9wZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3NDpcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3NS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzY6XHRcdG1kaW9fZGV2aWNlX2ZyZWUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc3LW91dDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk2LVx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NzpcdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5ODpcdFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NTA1PXN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA4LVx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDk6XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEwOlx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQzNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNRElPICZhbXA7IFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uIC0gU3l6a2FsbGVyIENoYWxsZW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgZHNhX2xvb3BgIHNpdHVhdGlvbiwgYW5kIGl0IGp1c3QgaGl0IG1lIOKAkyBpdCYjMzk7cyB1c2luZyB0aGUgYGZpeGVkLTBgIGJ1cywgd2hpY2ggaGFzIHRocm93biBtZSBvZmYgdHJhY2suIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmFjdHVhbGx5KiByZWdpc3RlciBhIFBIWSBkZXZpY2Ugb24gYW4gTURJTyBidXMgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2U/IFRoZSB0aG91Z2h0IHByb2Nlc3MgaXMgYSBjYXNjYWRlIG9mIGlmL3RoZW4gcXVlc3Rpb25zLCBsaWtlIGFuIGVuZ2luZWVyIGRlYnVnZ2luZyBjb2RlLgoKTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB1c2UgYERQODM2NDBfUEhZYCwgYXMgSSBzZWUgdGhpcyBkcml2ZXIgaW4gdGhlIHNvdXJjZSwgYnV0IGl0JiMzOTtzIGEgKmhhcmR3YXJlKiBQSFkgZHJpdmVyLiBIb3cgY2FuIHdlIHBvc3NpYmx5IGluamVjdCB0aGF0IGludG8gdGhlIHN5c3RlbSwgZXNwZWNpYWxseSB1c2luZyBzeXprYWxsZXIsIHVubGVzcyB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgd2hlcmUgd2UgY2FuIHJlZ2lzdGVyIGFueSBhcmJpdHJhcnkgUEhZIElELCBhIHRlc3QgY2FzZSBwZXJoYXBzPwoKSG9sZCBvbi4uLiBkb2VzIHN5emthbGxlciBldmVuICpoYXZlKiBhIGBzeXpfbWRpb19idXNgIGNhbGw/IEkgZG9uJiMzOTt0IHRoaW5rIHNvLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHN5emthbGxlciYjMzk7cyBkb2N1bWVudGF0aW9uLCBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBtZWNoYW5pc21zIHJlbGF0ZWQgdG8gTURJTyBvciBQSFkgZGV2aWNlcy4gSSYjMzk7bSBhc3N1bWluZyBzdWNoIHRvb2xzIGFyZSBsaWtlbHkgdG8gZXhpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBTZWFyY2ggQ29uc3RyYWludHMqKgoKT2theSwgc28gSSBjYW4mIzM5O3QganVzdCB0aHJvdyBhIGBncmVwYCBmb3IgYHN5el9gIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0bHk7IHRoYXQmIzM5O3MgYSByb29raWUgbWlzdGFrZS4gVGhlIGhpbnQgYWJvdXQgYHN5ei1ncmVwcGVyYCBhbmQgYHJlYWQtc3l6LXNwZWNgIGlzIGEgZ29vZCByZW1pbmRlci4gQnV0IHdhaXQgYSBtaW51dGUuLi4gSSBkb24mIzM5O3Qgc2VlIHRob3NlIHRvb2xzIGluIG15IGF2YWlsYWJsZSBsaXN0ISBJJiMzOTttIG9ubHkgc2VlaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCwgYGRlZmF1bHRfYXBpOmNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAsIGFuZCBgZGVmYXVsdF9hcGk6c2V0LXJlc3VsdHNgLiBTbywgY2xlYXJseSwgSSYjMzk7bSBzdHVjayB3aXRoIHdoYXQgSSYjMzk7dmUgZ290LCBhbmQgdGhhdCBtZWFucyBubyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgU3l6a2FsbGVyIHNwZWNzIGRpcmVjdGx5LiBJJiMzOTtsbCBoYXZlIHRvIGZpbmQgYW5vdGhlciB3YXkgdG8gaW52ZXN0aWdhdGUgdGhpcyBpc3N1ZS4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGBEUDgzNjQwX1BIWWAuIFRoaXMgaXMgYSBoYXJkd2FyZSBQSFkgZHJpdmVyLCBhbmQgdGhhdCByYWlzZXMgc29tZSBpbW1lZGlhdGUgcXVlc3Rpb25zLiBSZWFjaGluZyB0aGVzZSBpbiBRRU1VIGlzIHVzdWFsbHkgYSBwcm9ibGVtLiBVbmxlc3MgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZXMgdGhhdCBwYXJ0aWN1bGFyIFBIWSwgb3IgdGhlcmUmIzM5O3MgYSBzb2Z0d2FyZS1iYXNlZCBpbnN0YW50aWF0aW9uIG1ldGhvZCwgaXTigJlzIGdvaW5nIHRvIGJlIHRyaWNreS4gQ2FuIEkgY3JlYXRlIGl0IHZpYSBzb2Z0d2FyZT8gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc3lzZnMgbWFnaWMgdGhhdCBjb3VsZCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIGFuZCBodW50IGZvciBzeXNmcyBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGNsdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBQSFkgRGV2aWNlIElzc3VlKioKCkhtbSwgSSYjMzk7bSB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBuZXR3b3JraW5nIGlzc3VlLiBPa2F5LCB3aGVyZSBkbyBJIGV2ZW4gc3RhcnQgd2l0aCB0aGlzIG9uZT8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBwaHlzaWNhbCBsYXllci4gVGhlIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGlzIGEgY29tbW9uIHBvaW50IG9mIGZhaWx1cmUuIFRoZSBkZXZpY2UgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIGlzIG9mdGVuIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIExldCYjMzk7cyBzZWUuLi4gU3BlY2lmaWNhbGx5LCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhhdCBnZW5lcmFsIGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgdHJlZTogYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciBhIGxvdCBvZiBjb3JlIFBIWSBtYW5hZ2VtZW50LCBpbml0aWFsaXphdGlvbiwgYW5kIGNvbnRyb2wgbG9naWMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrIGFuZCB0aGUgc3BlY2lmaWMgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGEgZnJlcXVlbnQgc291cmNlIG9mIHRyaWNreSBidWdzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hhdCB0byBsb29rIGZvciwgYnV0IHRoYXQmIzM5O3MgdGhlIGxpa2VseSBzcG90IHRvIGludmVzdGlnYXRlIGZpcnN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBIWSBpcyBiZWluZyBkZXRlY3RlZCwgaW5pdGlhbGl6ZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGZpbGUuIFdoYXQgaGFwcGVucyBpZiB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgaGFzIGFuIGlzc3VlPyBJcyB0aGVyZSBzb21lIGtpbmQgb2YgaW5pdGlhbGl6YXRpb24gcHJvYmxlbSBoYXBwZW5pbmcgdGhlcmU/IFRoYXQgc291bmRzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ld19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4MzkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBQSFkgRGV2aWNlIENyZWF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZmVhc2libGUgdG8gY3JhZnQgYSBQSFkgZGV2aWNlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgd2hldGhlciB0aGVyZSYjMzk7cyBhIG1lY2hhbmlzbSBhdmFpbGFibGUgdG8gYnlwYXNzIHRoZSBrZXJuZWwgZW50aXJlbHksIG9yIGF0IGxlYXN0IHNpZ25pZmljYW50bHkgaW50ZXJhY3Qgd2l0aCB0aGUgUEhZLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGF2YWlsYWJsZSBpbnRlcmZhY2VzLgoKVGhlIGZpcnN0IGFwcHJvYWNoIHRoYXQganVtcHMgdG8gbWluZCBpcyB0byBzZWUgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIE1ESU8gaW50ZXJmYWNlIHRocm91Z2ggZWl0aGVyIGFuIGBpb2N0bGAgb3IgYG5ldGxpbmtgIG1ldGhvZC4gTXkgZXhwZXJpZW5jZSBkaWN0YXRlcyB0aGF0IHRoaXMgaXMgdXN1YWxseSB0aGUgcHJpbWFyeSBhdmVudWUgZm9yIGxvdy1sZXZlbCBQSFkgY29udHJvbC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcmVsZXZhbnQga2VybmVsIGhlYWRlcnMuIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IGV4cG9zaW5nIE1ESU8gcmVnaXN0ZXJzIGluIGEgd2F5IHRoYXTigJlzIGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLiBGaW5kaW5nIGEgcmVsaWFibGUsIHVzZXItc3BhY2UgaW50ZXJmYWNlIHdvdWxkIGJlIGlkZWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9ydG5ldGxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTA1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVtdWxhdGluZyBhIERQODM2NDAgUEhZIHdpdGggc3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBtYWNiYCBkcml2ZXIgYW5kIFFFTVUuIFFFTVUgZW11bGF0ZXMgdGhlIGBtYWNiYCB3aGljaCwgb2YgY291cnNlLCBoYXMgYW4gTURJTyBidXMuIENhbiBRRU1VIGVtdWxhdGUgdGhlIERQODM2NDAgUEhZIGRpcmVjdGx5PyBQcm9iYWJseSBub3Qgd2l0aG91dCBkaXZpbmcgaW50byB0aGUgc291cmNlLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIHNvIEkgbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5LgoKV2FpdCBhIHNlY29uZCwgc3l6a2FsbGVyISBJdCBoYXMgdGhhdCBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLiBJIHJlbWVtYmVyIHRoYXQgZW11bGF0ZXMgVVNCIGRldmljZXMuIE5vdywgaXMgdGhlcmUgYW55IFVTQiB0byBNRElPIGJyaWRnZSB0aGF0IG1pZ2h0IGJlIHVzZWZ1bD8KCkFoYSEgTG9va2luZyBhdCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AgYW5kIGBkcml2ZXJzL25ldC91c2Ivc21zYzk1eHguY2AsIEkgc2VlIHRoZXkgYm90aCBoYXZlIE1ESU8gaW1wbGVtZW50YXRpb25zLiBUaGlzIGlzIGludGVyZXN0aW5nLiBJZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlLCBzcGVjaWZpY2FsbHkgb25lIHRoYXQgKnByZXNlbnRzKiBhbiBNRElPIGJ1cywgd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuCgpTbywgaWYgd2UgZW11bGF0ZSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHNvbWV0aGluZyBsaWtlIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgb3IgZXZlbiBgYXg4ODE3OV8xNzhhYCwgdGhlIGRyaXZlciB3b3VsZCB0aGVuIHJlYWQgdGhlIFBIWSBJRCBmcm9tIHRoYXQgZW11bGF0ZWQgTURJTyBidXMuIEJyaWxsaWFudCEgVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciAqY29udHJvbHMqIHRoZSBVU0IgcmVzcG9uc2VzLiBXZSBjYW4gbWFrZSB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlcG9ydCBhIHNwZWNpZmljIFBIWSBJRC4KCklmIHdlIGZlZWQgaXQgdGhlIERQODM2NDAmIzM5O3MgUEhZIElELCB3aGljaCBJIGJlbGlldmUgaXMgYDB4MjAwMDVjZTFgLCB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlIE1JSV9QSFlTSUQxIGFuZCBNSUlfUEhZU0lEMiByZWdpc3RlcnMsIGl0IHNob3VsZCB3b3JrLgoKV2hlbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyB0aGUgTURJTyBidXMgYW5kIHNjYW5zIGl0LCBpdCB3aWxsIGVuY291bnRlciB0aGUgUEhZIElEIHdlIGFyZSBwcmVzZW50aW5nLiBUaGUgTURJTyBjb3JlIHNob3VsZCBtYXRjaCB0aGlzIElELCB0cmlnZ2VyaW5nIHRoZSBiaW5kaW5nIG9mIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlci4gQm9vbSEKClRoaXMgaXMgYSByZWFsbHkgY2xldmVyIHRlY2huaXF1ZS4gSXQmIzM5O3MgYSB2ZXJ5IGNvbW1vbiBhcHByb2FjaCB3aXRoIHN5emthbGxlci4gWW91IGVzc2VudGlhbGx5IGVtdWxhdGUgYSBVU0IgZGV2aWNlIHRoYXQmIzM5O3MgYWN0aW5nIGFzIGEgTURJTyBidXMgYW5kIGluamVjdCB0aGUgYXJiaXRyYXJ5IFBIWSBJRCB0byB0cmljayB0aGUga2VybmVsIGludG8gbG9hZGluZyBkaWZmZXJlbnQgUEhZIGRyaXZlcnMuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCBgbGFuNzh4eGAgYW5kIHNpbWlsYXIgZHJpdmVycyBhY3R1YWxseSB1c2UgYG1kaW9idXNfcmVnaXN0ZXJgIGFuZCByZWFkIHRob3NlIFBIWSBJRHMuIFRoYXQmIzM5O3MgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3Olx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmMtNzktXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMS1cdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjIxMjI6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VtZGlvYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjEyMy1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0MS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyNDI6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVx1MDAzZW1kaW9idXMpO1xuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgdGhpcyBpcyBleGNpdGluZy4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGBkcDgzNjQwYCBkcml2ZXImIzM5O3MgYGRwODM2NDBfcHJvYmVgIGZ1bmN0aW9uIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBgc21zYzk1eHhgLCBgbGFuNzh4eGAsIGFuZCBgYXNpeGAgZHJpdmVycyBhbGwgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCB0aGUgYG1kaW9idXNfcmVnaXN0ZXJgIGNhbGwgc2NhbnMgdGhlIGJ1cyB1c2luZyBNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIuIFN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGNvbnRyb2wgVVNCIGVuZHBvaW50IHJlc3BvbnNlcyBtZWFucyB3ZSBjYW4gZmVlZCBpdCB0aGUgRFA4MzY0MCBQSFkgSUQuIEZhbnRhc3RpYyEKCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBmb2N1c2VkIG9uIHJlZmFjdG9yaW5nIGhvdyB0aGUgYGRwODM2NDBfY2xvY2tgICh3aGljaCBpcyBjcml0aWNhbCBmb3IgUFRQKSBpcyBtYW5hZ2VkLiBQcmV2aW91c2x5LCB0aGV5IHdlcmUgdXNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoZSBwYXRjaCYjMzk7cyBtb3ZlZCBpdCB0byBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCwgcGVyLVBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEl0JiMzOTtzIHJlbW92aW5nIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgIGFuZCBgZHA4MzY0MF9jbG9ja19wdXRgIHdoaWxlIGFkZGluZyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgYXMgYSBkZXZtIGFjdGlvbiBmb3IgY2xlYW51cC4gQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3JlbW92ZWAuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgZXNzZW50aWFsbHkgYSBsaWZlY3ljbGUgb3ZlcmhhdWwgb2YgdGhlIGBkcDgzNjQwX2Nsb2NrYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyB0aGUgcHJvYmUvcmVtb3ZlIGN5Y2xlLCBlc3BlY2lhbGx5IHdpdGggbXVsdGlwbGUgUEhZcy4KCkxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmU6IGBkcDgzNjQwX2Nsb2NrX2luaXRgLCB0aGUgbmV3IGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYGRwODM2NDBfcHJvYmVgLCBhbmQgYGRwODM2NDBfcmVtb3ZlYC4KCldhaXQgYSBtaW51dGUsIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjay4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IHBhdGNoZXMgdGhhdCAqb25seSogY2hhbmdlIHRlYXJkb3duIGNhbGxiYWNrcy4gQnV0IHRoaXMgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kIGFkZHMgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBTaW5jZSBpdCBhbHNvIG1vZGlmaWVzIGBkcDgzNjQwX3Byb2JlYCwgd2hpY2ggaXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGgsIHRoaXMgaXMgbm90IGp1c3QgdGVhcmRvd24gY2FsbGJhY2tzLiBJJiMzOTttIGdvb2QuIEFuZCBzaW5jZSBTeXprYWxsZXIgaXMgc28gZWZmZWN0aXZlIGF0IGZ1enppbmcgcHJvYmUgZnVuY3Rpb25zIChsaWtlIGJ5IGVtdWxhdGluZyBVU0IgZGV2aWNlcyksIGBkcDgzNjQwX3Byb2JlYCBpcyBhIGdyZWF0IHRhcmdldC4gIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGltcG9ydGFudCBzaW5jZSBpdCYjMzk7cyBhIGRldm0gYWN0aW9uIGNhbGxlZCBvbiBkZXZpY2UgcmVtb3ZhbCBvciBwcm9iZSBmYWlsdXJlLCB3aGljaCBtaWdodCBleHBvc2UgaW50ZXJlc3RpbmcgY29kZSBwYXRocy4gYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkuIEkmIzM5O2xsIGluY2x1ZGUgYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9waHlfcmVsZWFzZWAuCgpXaGF0IGFib3V0IGBkcDgzNjQwX2Nsb2NrX2luaXRgPyBJdCYjMzk7cyBtYXJrZWQgYHN0YXRpY2AuIEZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBzbyBJIHdpbGwgbm90IGluY2x1ZGUgaXQsIGBkcDgzNjQwX3Byb2JlYCBpcyBiZXR0ZXIuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSByZXF1aXJlZCBDT05GSUcgb3B0aW9ucy4gTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRvIG1vZGlmeSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AuIFllcywgdGhlIGtleSBpcyBgRFA4MzY0MF9QSFlgLCBhbmQgaXQgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLCBhbmQgc2VsZWN0cyBgQ1JDMzJgIGFuZCBgUEhZX1BBQ0tBR0VgLiAgVGhhdCYjMzk7cyBhbGwgZ29vZCwgSSBrbm93IHdoZXJlIHRvIGxvb2suIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERQODM2NDBfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzcyOAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgTGFuZHNjYXBlIG9mIERQODM2NDBfUEhZKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgYXNrZWQuIEl0IHNvdW5kcyBsaWtlIHNvbWVvbmUgd2FudHMgbWUgdG8gYW5hbHl6ZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUDgzNjQwX1BIWWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgbW9kdWxlcyBgRFA4MzY0MF9QSFlgIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uLiBUaGlzIGNvdWxkIGluY2x1ZGUgb3RoZXIgUEhZIGRyaXZlcnMsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgUlRPUyBjb21wb25lbnRzLCBldmVuIHNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zIG9yIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gZXhhbWluZSBhbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBhbmQgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBhbmQgaWRlbnRpZmllcnMgd2l0aGluIHRoZSBjb2RlIHRoYXQgcG9pbnQgdG93YXJkcyBleHRlcm5hbCBlbGVtZW50cyBpdCBpbnRlcmFjdHMgd2l0aC4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIHdhdGNoIGZvciBpbmNsdWRlIHN0YXRlbWVudHMgKGAjaW5jbHVkZWApLCBmdW5jdGlvbiBjYWxscyB0byBvdGhlciBtb2R1bGVzLCBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgc3BlY2lmeSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2VzIG5lZWRlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcywgcnVudGltZSBkZXBlbmRlbmNpZXMsIGFuZCBjb25maWd1cmF0aW9uLXRpbWUgZGVwZW5kZW5jaWVzLgoKSWYgdGhlIGRvY3VtZW50YXRpb24gaXMgbGFja2luZywgb3IgaW5jb21wbGV0ZSwgdGhlIGNvZGUgaXRzZWxmIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBteSBiZXN0IGluc2lnaHRzLiBJIGtub3cgdG8gc2VhcmNoIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHJldmVhbCB0aGlzIG1vZHVsZSYjMzk7cyBpbnRlcmRlcGVuZGVuY2llczogaW5jbHVkZSBoZWFkZXJzLCBtYWtlZmlsZSBkaXJlY3RpdmVzLCBsaW5rZXIgc2NyaXB0cywgb3IgZGV2aWNlIHRyZWUgZW50cmllcywgYW55dGhpbmcgdGhhdCBjYW4gcmV2ZWFsIGEgY29ubmVjdGlvbiB0byBhbm90aGVyIG1vZHVsZSBvciBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBwcmVjaXNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcW9yaXEuXG4gIDcxOlx0XG4gIDcyOlx0Y29tbWVudCBcJiMzNDtFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cJiMzNDtcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgRFA4MzY0MF9QSFlcbiAgNzY6XHRcdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiAgNzc6XHRcdGRlcGVuZHMgb24gTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gIDc4Olx0XHRkZXBlbmRzIG9uIFBIWUxJQlxuICA3OTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA4MDpcdFx0c2VsZWN0IENSQzMyXG4gIDgxOlx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXG4gIDg2Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxuICA4NzpcdFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xuICA4ODpcdFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MTMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgbWVudGFsIGNoZWNrbGlzdCBpcyB0aWNraW5nIGF3YXkgaGVyZS4KCioqRGVwZW5kZW5jaWVzIGFuZCBUcmFjaW5nIHRoZSBSb290KioKClJpZ2h0LCBzbyBgRFA4MzY0MF9QSFlgLCBhcyBJIHJlY2FsbCwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCB0aGUgdGltZXN0YW1waW5nIGFuZCBQVFAgZWxlbWVudHMgYXJlIGtleSB0byB0aGF0IFBIWSYjMzk7cyBmdW5jdGlvbmFsaXR5LiBOb3csIEkgd2FudCB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGxpZXMuIE5lZWQgdG8ga25vdyB3aGF0ICppdCogcmVsaWVzIG9uIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzMwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYXNwZWN0IG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGJldHRlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC9LY29uZmlnYCwgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGxpbmUgMTU0IGlzIGxpa2VseSBhIGdvb2QgcG9pbnQgdG8gYmVnaW47IGl0IG1pZ2h0IGRlZmluZSBhIG1vZHVsZSBvciBhIGZlYXR1cmUuIE9mdGVuLCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkIGxpbmVhcmx5LCBhbmQgdGhlIGtleSBkZWZpbml0aW9ucyBhcmUgZ3JvdXBlZCB0b2dldGhlciBsb2dpY2FsbHkuIFNvLCBzdGFydGluZyB0aGVyZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTUwOlx0XG4gMTUxOlx0Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcbiAxNTI6XHRcdGRlZl9ib29sIG5cbiAxNTM6XHRcbiAxNTQ6XHRjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMTU1Olx0XHRib29sIFwmIzM0O1RpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1wmIzM0O1xuIDE1NjpcdFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcbiAxNTc6XHRcdGhlbHBcbiAxNTg6XHRcdCAgVGhpcyBhbGxvd3MgdGltZXN0YW1waW5nIG9mIG5ldHdvcmsgcGFja2V0cyBieSBQSFlzIChvclxuIDE1OTpcdFx0ICBvdGhlciBNSUkgYnVzIHNub29waW5nIGRldmljZXMpIHdpdGggaGFyZHdhcmUgdGltZXN0YW1waW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlF1aWNrIE5ldHdvcmsgVGltZXN0YW1waW5nIENoZWNrKioKClJpZ2h0LCBzbywgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuLi4gbm8gc3BlY2lmaWMsIHVudXN1YWwgZGVwZW5kZW5jaWVzIGp1bXAgb3V0IGF0IG1lIGltbWVkaWF0ZWx5LiBUaGF0JiMzOTtzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24g4oCTIGFuZCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGlzIHRvcC1vZi1taW5kIOKAkyBpcywgd2hhdCBhYm91dCBgUEhZTElCYD8gSXMgdGhpcyBmdW5jdGlvbmFsaXR5IGltcGFjdGVkIGluIGFueSB3YXk/IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgdGhpcyB0aWVzIGludG8gdGhlIHBoeXNpY2FsIGxheWVyIGxpYnJhcnkuIEFyZSB3ZSBsZXZlcmFnaW5nIGV4aXN0aW5nIGBQSFlMSUJgIGNhcGFiaWxpdGllcyBvciBjaXJjdW12ZW50aW5nIHRoZW0/IElzIHRoaXMgYSBzdGFuZGFyZCBvcGVyYXRpb24sIG9yIGEgY3VzdG9tIG9uZSB0aGF0IGludHJvZHVjZXMgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgZm9yIHRoZSB1c2VyIHRvIGNvbnNpZGVyPyBJdCBjb3VsZCBpbXBhY3QgdGhpbmdzIGxpa2UgUEhZIGRyaXZlcnMgYW5kIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBvbiB0aGF0IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk0NjgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFBIWSBDb25maWd1cmF0aW9uIFNwYWNlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUEhZIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBzbyBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBsaWtlbHkgY2FuZGlkYXRlOiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMaW5lIDE1IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIG9yaWVudCBteXNlbGYgd2l0aGluIHRoZSBmaWxlJiMzOTtzIHN0cnVjdHVyZS4gSG9wZWZ1bGx5LCBpdCBkZWZpbmVzIG9yIGluY2x1ZGVzIHRoZSBicm9hZGVyIGZyYW1ld29yayBmb3IgUEhZIGRyaXZlcnMgYW5kIHRoZWlyIHNldHRpbmdzLiBJIGV4cGVjdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGd1aWRlIG1lIHRocm91Z2ggaG93IHZhcmlvdXMgUEhZIHR5cGVzIGFyZSBzZWxlY3RlZCwgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCwgYWxsb3dpbmcgbWUgdG8gc3RhcnQgbXkgbW9yZSBpbi1kZXB0aCBhbmFseXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuICAyMTpcdFxuICAyMjpcdGlmIFBIWUxJQlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBTV1BIWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUEhZTElCIERlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIG92ZXIgdGhpcyBjb2RlLCBJJiMzOTttIG5vdCBzcG90dGluZyBhbnkgdW51c3VhbCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBQSFlMSUJgIGNvbXBvbmVudC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQsIHRoYXQgcHJvbXB0cyBhIHNlY29uZGFyeSB0aG91Z2h0OiB3aGF0IGFib3V0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBjbG9jaywgc3BlY2lmaWNhbGx5IGBQVFBfMTU4OF9DTE9DS2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlZ3JhdGlvbiBwb2ludHMgb3Igc2hhcmVkIHJlc291cmNlcyBJIHNob3VsZCBiZSBtaW5kZnVsIG9mLiBXZSB1c2UgYFBIWUxJQmAgYSBsb3QgaW4gdGltaW5nIHNlbnNpdGl2ZSBzeXN0ZW1zLCBzbyB0aGVyZSBjb3VsZCBlYXNpbHkgYmUgc29tZSBpbnRlcmFjdGlvbiBJJiMzOTttIG1pc3NpbmcgYXQgZmlyc3QgZ2xhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cbmRyaXZlcnMvcHRwL0tjb25maWc6OTM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTAzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzU6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTUxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cdHRyaXN0YXRlIFwmIzM0O0lEVCA4MlAzM3h4eCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjUtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3Njpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXHR0cmlzdGF0ZSBcJiMzNDtSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcbmRyaXZlcnMvcHRwL0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cdHRyaXN0YXRlIFwmIzM0O09wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgOC4KCioqRXhhbWluaW5nIHRoZSBQVFAgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZm9jdXNpbmcgb24gbGluZSA4LCBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhlIGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSBmb3IgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgZHJpdmVycyBpbiB0aGUga2VybmVsLiBLbm93aW5nIHRoZSBmaWxlIHN0cnVjdHVyZSBmcm9tIHBhc3QgZXhwZXJpZW5jZXMsIEkgZXhwZWN0IHRoaXMgdG8gYmUgdGhlIHBvaW50IHdoZXJlIHRoZSBicm9hZCBmZWF0dXJlIHNldCBpcyBkZWZpbmVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEkmIzM5O20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1haW4gS2NvbmZpZyBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb3IgcG9zc2libGUgZGVmYXVsdHMgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhlIFBUUCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCBmcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBzbyBJIGNhbiBiZXR0ZXIgZ3Jhc3AgaG93IHRvIHRhaWxvciBteSBzeXN0ZW1zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmluZXIgZGV0YWlscyBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUFRQIGNsb2NrIHN1cHBvcnQgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG4gICA5Olx0XHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IFBPU0lYX1RJTUVSU1xuICAxMTpcdFx0ZGVmYXVsdCBFVEhFUk5FVFxuICAxMjpcdFx0c2VsZWN0IFBQU1xuICAxMzpcdFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxMAoJCQkJCQkJb3V0cHV0OiAyMjcKCQkJCQkJCXRob3VnaHRzOiAxMDAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIGZvciBSZWZhY3RvcmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGRwODM2NDBgIFBIWSBkcml2ZXIuICBJdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYE5FVGAgYW5kIGBQT1NJWF9USU1FUlNgLCB3aGljaCBhcmUgcHJldHR5IHN0YW5kYXJkIHN0dWZmLiAgVG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgdGhlIGtleSBjb25maWdzIGFyZSBkZWZpbml0ZWx5IGBEUDgzNjQwX1BIWWAsIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuICBBaGEsIGBEUDgzNjQwX1BIWWAgaXMgdGhlIG1haW4gb25lOyBpdCBicmluZ3MgYFBIWV9QQUNLQUdFYCBpbiB3aXRoIGl0LiBTbywgbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluZGVlZCBiZTogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgaW1wb3J0YW50IHN5bWJvbHMgZm9yIHRoaXMuIEkgc2VlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGp1bXAgb3V0LiBXYWl0IGEgbWludXRlLi4uIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYywgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLiBJcyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgc3RhdGljPyBZZXMsIGBzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpYC4gQWgsIGl0JiMzOTtzIHBhc3NlZCB0byBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YCwgd2hpY2ggbWVhbnMgaXQgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoZSBwcm9tcHQgc2F5cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVycy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGF0IGd1aWRlbGluZSwgc28gbGV0JiMzOTtzIGRvdWJsZS1jaGVjay4KCk9rYXksIGxldCYjMzk7cyBsb29rIGF0IGBkcDgzNjQwX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AuICBZdXAsIGl0JiMzOTtzIHN0YXRpYyEgQnV0IGl0JiMzOTtzIHBhcnQgb2YgdGhlIGBwaHlfZHJpdmVyYCBzdHJ1Y3QsIHNvIGl0IGlzIGFuIEFQSSBlbnRyeSBwb2ludDoKCmBgYGMKc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7CnsKCS5waHlfaWQJCT0gRFA4MzY0MF9QSFlfSUQsCgkucGh5X2lkX21hc2sJPSAweGZmZmZmZmYwLAoJLm5hbWUJCT0gJiMzNDtOYXRTZW1pIERQODM2NDAmIzM0OywKCS8qIFBIWV9CQVNJQ19GRUFUVVJFUyAqLwoJLnByb2JlCQk9IGRwODM2NDBfcHJvYmUsCgkucmVtb3ZlCQk9IGRwODM2NDBfcmVtb3ZlLAouLi4KYGBgCgpTbywgYGRwODM2NDBfcHJvYmVgIGlzIHRvdGFsbHkgZmluZSBhcyBhIGZvY3VzIHN5bWJvbC4gQW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGZpbmUsIGFzIGl0JiMzOTtzIGEgZGV2bSBhY3Rpb24gY2FsbGJhY2suCgpMZXQmIzM5O3MgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiAgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgZHA4MzY0MF9wcm9iZWAsIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjayBhbmQgZGVmaW5pdGVseSBtb2RpZmllZC4gIEFuZCB0aGUgY2xvY2sgZnVuY3Rpb25zIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19wdXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfZ2V0YCBoYXZlIGFsbCBiZWVuIHJlbW92ZWQuCgpTbywgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIGJlY29tZXM6IGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgLgoKTGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbiAtIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBJJiMzOTtsbCBkZWZpbml0ZWx5IGluY2x1ZGUgYWxsIG9mIHRoZW0gaW4gdGhlIGBFbmFibGVDb25maWdzYC4KCk9rYXksIHRoZSByZWFzb25pbmcgaGVyZSBpcyBzb2xpZC4gVGhlIGNoYW5nZSBpcyBhYm91dCBsZXZlcmFnaW5nIGBwaHlfcGFja2FnZWAgZm9yIHNoYXJlZCBjbG9jayBzdGF0ZSwgd2hpY2ggcmVwbGFjZXMgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguICBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBXZSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uICh0aGluayBgc21zYzk1eHhgLCBgbGFuNzh4eGAgc2NlbmFyaW9zKSwgd2hpY2ggcmVnaXN0ZXIgYW4gTURJTyBidXMgYW5kIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBhdGggaGVyZSBuZWNlc3NpdGF0ZXMgZnV6emluZyB0byByb290IG91dCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4gSSYjMzk7bGwgbmVlZCB0byB3cml0ZSB1cCB0aGUgZmluYWwgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIG5ldHdvcmsgYWRhcHRlciBlbXVsYXRpb24gKGUuZy4sIHNtc2M5NXh4LCBsYW43OHh4KSwgd2hpY2ggcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCBjYW4gcmVwb3J0IHRoZSBEUDgzNjQwIFBIWSBJRCB0byB0cmlnZ2VyIHRoZSBiaW5kaW5nIG9mIHRoaXMgZHJpdmVyLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgcHJvYmUgb3Igd2hlbiBtdWx0aXBsZSBQSFlzIGFyZSBpbnN0YW50aWF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo0Mi4xMDk3MDg1NDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk5NTA2NDYyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuMTA5NzE2NjA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU4NTcyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjYmUyNDFkN2FiZjc4YjNjYzkyYzZiM2QwZTFhMGZhNzY5MGE4YmE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMDg6MzY6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5pbmRleCA5ODQ3MmFiZGQzOTIwLi43YmQxMzBmNzc5NGZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXFxuQEAgLTgsNiArOCw3IEBAXFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXFxcIjogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcmMzMi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRodG9vbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saXN0LmhcXHUwMDNlXFxuQEAgLTIxLDYgKzIyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJkcDgzNjQwX3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwicGh5bGliLmhcXFwiXFxuIFxcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXFx0MHgyMDAwNWNlMVxcbiAjZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuQEAgLTEyOCwxMCArMTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XFxuLVxcdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJ3BoeXRlcl9jbG9ja3MnIGxpc3QgKi9cXG4tXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi1cXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXFxuLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuIFxcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXFxuIFxcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcXG4gXFx0LyogcmVtZW1iZXJzIHdoaWNoIHBhZ2Ugd2FzIGxhc3Qgc2VsZWN0ZWQgKi9cXG5AQCAtMTQ2LDYgKzE0NCw3IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xcbiBcXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xcbiBcXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XFxuK1xcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XFxuIH07XFxuIFxcbiAvKiBnbG9iYWxzICovXFxuQEAgLTIwNiwxMCArMjA1LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiBcXHR9XFxuIH1cXG4gXFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xcbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xcbkBAIC05NTMsMTMgKzk0OCwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4ge1xcbi1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZWxpc3QpO1xcbi1cXHRjbG9jay1cXHUwMDNlYnVzID0gYnVzO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlZXh0cmVnX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuK1xcdGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cXHUwMDNlcGluX2NvbmZpZztcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcXG4gXFx0c3ByaW50ZihjbG9jay1cXHUwMDNlY2Fwcy5uYW1lLCBcXFwiZHA4MzY0MCB0aW1lclxcXCIpO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5tYXhfYWRqXFx0PSAxOTUzMTI0O1xcbkBAIC05NzcsMTQgKzk3MSw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnNldHRpbWU2NFxcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMuZW5hYmxlXFx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnZlcmlmeVxcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xcbi1cXHQvKlxcbi1cXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXFxuLVxcdCAqL1xcbitcXHQvKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byB0aGUgcGluIGNvbmZpZ3VyYXRpb24uICovXFxuIFxcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcXG4tXFx0LypcXG4tXFx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxcbi1cXHQgKi9cXG4tXFx0Z2V0X2RldmljZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLXtcXG4tXFx0aWYgKGNsb2NrKVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuLVxcdHJldHVybiBjbG9jaztcXG4tfVxcbi1cXG4tLypcXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cXG4tICovXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLXtcXG4tXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbi1cXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFxcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XFxuLVxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xcbi1cXHRcXHRpZiAodG1wLVxcdTAwM2VidXMgPT0gYnVzKSB7XFxuLVxcdFxcdFxcdGNsb2NrID0gdG1wO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0XFx0Y2xvY2sgPSBOVUxMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuQEAgLTEzOTgsMjIgKzEzMzQsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcXG4rXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcXG4gXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbitcXG4rXFx0Y2xvY2sgPSBkcDgzNjQwLVxcdTAwM2VjbG9jaztcXG4rXFx0cGh5ZGV2ID0gZHA4MzY0MC1cXHUwMDNlcGh5ZGV2O1xcbitcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHNfd29yayk7XFxuK1xcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbitcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4rXFx0XFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdFxcdGNsb2NrLVxcdTAwM2VjaG9zZW4gPSBOVUxMO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSB7XFxuK1xcdFxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XFxuK1xcdFxcdFxcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0bXAtXFx1MDAzZWxpc3QpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IE5VTEw7XFxuK1xcdGtmcmVlKGRwODM2NDApO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbiBcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xcbi1cXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcXG4rXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRpbnQgZXJyLCBpO1xcbiBcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cXHUwMDNlbWRpby5idXMpO1xcbi1cXHRpZiAoIWNsb2NrKVxcbitcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gbm9fY2xvY2s7XFxuIFxcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlc2hhcmVkX2xvY2spO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCw2OCArMTQzNCwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4rXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIG5vX3JlZ2lzdGVyOlxcbiBcXHRjbG9jay1cXHUwMDNlY2hvc2VuID0gTlVMTDtcXG4rXFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdHBoeWRldi1cXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtaWlfdHMgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRrZnJlZShkcDgzNjQwKTtcXG4gbm9fbWVtb3J5Olxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBub19jbG9jazpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbi1cXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xcbi1cXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuIFxcbiBcXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2V0c193b3JrKTtcXG4tXFxuLVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4tXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cXHUwMDNlY2xvY2spO1xcbi1cXG4tXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbi1cXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4tXFx0XFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpIHtcXG4tXFx0XFx0XFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcXG4tXFx0XFx0XFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XFxuLVxcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2hvc2VuIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSlcXG4tXFx0XFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcXG4tXFxuLVxcdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcXG4tXFx0a2ZyZWUoZHA4MzY0MCk7XFxuLVxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWdcXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXFxuIFxcdGRlcGVuZHMgb24gUEhZTElCXFxuIFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gXFx0c2VsZWN0IENSQzMyXFxuK1xcdHNlbGVjdCBQSFlfUEFDS0FHRVxcbiBcXHRoZWxwXFxuIFxcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuNjY2MzI2ODgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE5Mzk0MDE5MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBwaHlfcGFja2FnZSBBUEkgZm9yIG1hbmFnaW5nIHNoYXJlZCBjbG9jayBzdGF0ZSwgcmVwbGFjaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGxvZ2ljLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB2aWEgVVNCIG5ldHdvcmsgYWRhcHRlciBlbXVsYXRpb24gKGUuZy4sIHNtc2M5NXh4LCBsYW43OHh4KSwgd2hpY2ggcmVnaXN0ZXJzIGFuIE1ESU8gYnVzIGFuZCBjYW4gcmVwb3J0IHRoZSBEUDgzNjQwIFBIWSBJRCB0byB0cmlnZ2VyIHRoZSBiaW5kaW5nIG9mIHRoaXMgZHJpdmVyLiBGdXp6aW5nIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVzZS1hZnRlci1mcmVlLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgcHJvYmUgb3Igd2hlbiBtdWx0aXBsZSBQSFlzIGFyZSBpbnN0YW50aWF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNiZTI0MWQ3YWJmNzhiM2NjOTJjNmIzZDBlMWEwZmE3NjkwYThiYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjM2OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjdiZDEzMGY3Nzk0ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jXG5AQCAtOCw2ICs4LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwiOiBcIiBmbXRcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmMzMi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbkBAIC0yMSw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJkcDgzNjQwX3JlZy5oXCJcbisjaW5jbHVkZSBcInBoeWxpYi5oXCJcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgKzEzMCw2IEBAIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUge1xuIH07XG4gXG4gc3RydWN0IGRwODM2NDBfY2xvY2sge1xuLVx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICsxNDQsNyBAQCBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XG4gXHQvKiByZWZlcmVuY2UgdG8gb3VyIFBUUCBoYXJkd2FyZSBjbG9jayAqL1xuIFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrO1xuK1x0c3RydWN0IHB0cF9waW5fZGVzYyBwaW5fY29uZmlnW0RQODM2NDBfTl9QSU5TXTtcbiB9O1xuIFxuIC8qIGdsb2JhbHMgKi9cbkBAIC0yMDYsMTAgKzIwNSw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICs5NDgsMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4ge1xuLVx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRjbG9jay1cdTAwM2VidXMgPSBidXM7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbitcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCJkcDgzNjQwIHRpbWVyXCIpO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5tYXhfYWRqXHQ9IDE5NTMxMjQ7XG5AQCAtOTc3LDE0ICs5NzEsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbitcdC8qIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIHRoZSBwaW4gY29uZmlndXJhdGlvbi4gKi9cbiBcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0Lypcbi1cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS5cbi1cdCAqL1xuLVx0Z2V0X2RldmljZShcdTAwMjZidXMtXHUwMDNlZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuQEAgLTk5OSw1OCArOTg3LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdGlmIChjbG9jaylcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdHJldHVybiBjbG9jaztcbi19XG4tXG4tLypcbi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLlxuLSAqIElmIHRoZXJlIGlzIG5vIGNsb2NrIGZvciB0aGlzIGJ1cywgdGhlbiBjcmVhdGUgaXQgZmlyc3QuXG4tICovXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cylcbi17XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wO1xuLVx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdGxpc3RfZm9yX2VhY2godGhpcywgXHUwMDI2cGh5dGVyX2Nsb2Nrcykge1xuLVx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX2Nsb2NrLCBsaXN0KTtcbi1cdFx0aWYgKHRtcC1cdTAwM2VidXMgPT0gYnVzKSB7XG4tXHRcdFx0Y2xvY2sgPSB0bXA7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdH1cbi1cdH1cbi1cdGlmIChjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcbi1cdGlmICghY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXG4tXHRcdFx0XHRcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcbi1cdGlmICghY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XG4tXHRcdGtmcmVlKGNsb2NrKTtcbi1cdFx0Y2xvY2sgPSBOVUxMO1xuLVx0XHRnb3RvIG91dDtcbi1cdH1cbi1cdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTtcbi1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCwgXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XG4tb3V0OlxuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRyZXR1cm4gZHA4MzY0MF9jbG9ja19nZXQoY2xvY2spO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX3B1dChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLX1cbi1cbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbiBcdGludCByZXQ7XG5AQCAtMTM5OCwyMiArMTMzNCw3MCBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxuIHtcbitcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAgPSBkYXRhO1xuK1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xuK1x0c3RydWN0IGxpc3RfaGVhZCAqdGhpcywgKm5leHQ7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xuK1xuK1x0Y2xvY2sgPSBkcDgzNjQwLVx1MDAzZWNsb2NrO1xuK1x0cGh5ZGV2ID0gZHA4MzY0MC1cdTAwM2VwaHlkZXY7XG4rXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbitcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuK1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuK1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuK1x0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuK1x0XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuK1x0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0fSBlbHNlIHtcbitcdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbitcdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuK1x0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuK1x0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZXByaXYgPSBOVUxMO1xuK1x0a2ZyZWUoZHA4MzY0MCk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbiBcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDA7XG4tXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcbitcdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbitcdGludCBlcnIsIGk7XG4gXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0X2J1cyhwaHlkZXYtXHUwMDNlbWRpby5idXMpO1xuLVx0aWYgKCFjbG9jaylcbitcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbitcdFx0XHRcdCAgICBCUk9BRENBU1RfQUREUiwgc2l6ZW9mKCpjbG9jaykpO1xuK1x0aWYgKGVycilcbiBcdFx0Z290byBub19jbG9jaztcbiBcbitcdGNsb2NrID0gcGh5X3BhY2thZ2VfZ2V0X3ByaXYocGh5ZGV2KTtcbitcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbitcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbitcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4rXHRcdGRwODM2NDBfY2xvY2tfaW5pdChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4gXHRkcDgzNjQwID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfcHJpdmF0ZSk7XG4tXHRpZiAoIWRwODM2NDApXG4rXHRpZiAoIWRwODM2NDApIHtcbitcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBub19tZW1vcnk7XG4rXHR9XG4gXG4gXHRkcDgzNjQwLVx1MDAzZXBoeWRldiA9IHBoeWRldjtcbiBcdGRwODM2NDAtXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcbkBAIC0xNDUwLDY4ICsxNDM0LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0fSBlbHNlXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHA4MzY0MC1cdTAwM2VsaXN0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiBcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbitcbitcdGVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4rXHRcdFx0XHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuIFx0cmV0dXJuIDA7XG4gXG4gbm9fcmVnaXN0ZXI6XG4gXHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuK1x0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlcHJpdiA9IE5VTEw7XG4gXHRrZnJlZShkcDgzNjQwKTtcbiBub19tZW1vcnk6XG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gbm9fY2xvY2s6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuLVx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbi1cbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiBcbiBcdGVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4tXG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0eF9xdWV1ZSk7XG4tXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtXHUwMDNlY2xvY2spO1xuLVxuLVx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4tXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4tXHRcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4tXHR9IGVsc2Uge1xuLVx0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuLVx0XHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XG4tXHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4tXHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdH1cbi1cdFx0fVxuLVx0fVxuLVxuLVx0aWYgKCFjbG9jay1cdTAwM2VjaG9zZW4gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkpXG4tXHRcdHJlbW92ZV9jbG9jayA9IHRydWU7XG4tXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tXHRrZnJlZShkcDgzNjQwKTtcbi1cbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5pbmRleCBiOTM2NDBjYTA4YjcyLi5mZWI1MGY4Y2M0MDZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvS2NvbmZpZ1xuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuQEAgLTc4LDYgKzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZXG4gXHRkZXBlbmRzIG9uIFBIWUxJQlxuIFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIFx0c2VsZWN0IENSQzMyXG4rXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NDIuNjY2MzI4MTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg1MjM1NTU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGRwODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlciAoYGRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNgKS4gU2VlbXMgbGlrZSBpdCdzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBjbG9jayBpcyBoYW5kbGVkLiBUaGV5J3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG9sZCBnbG9iYWwgY2xvY2sgbWFuYWdlbWVudCBhbmQgdXNpbmcgYGRldm1fcGh5X3BhY2thZ2Vfam9pbmAgYW5kIGBwaHlfcGFja2FnZV9nZXRfcHJpdmAgdG8gaGFuZGxlIHNoYXJlZCBjbG9jayBzdGF0ZSB3aXRoaW4gYSBcInBhY2thZ2VcIiBvciBidXMg4oCTIHRoYXQncyBhIG11Y2ggY2xlYW5lciBhcHByb2FjaC4gVGhleSd2ZSBhbHNvIHJlbW92ZWQgdGhlIG9sZCBnbG9iYWwgbGlzdCBhbmQgbG9jayAoYHBoeXRlcl9jbG9ja3NgIGFuZCBgcGh5dGVyX2Nsb2Nrc19sb2NrYCksIHdoaWNoIGlzIGdvb2QgaG91c2VrZWVwaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBhcyBhIGRldm0gYWN0aW9uIGluZGljYXRlcyBiZXR0ZXIgcmVzb3VyY2UgbWFuYWdlbWVudCwgYW5kIHRoZSBtb2RpZmljYXRpb25zIHRvIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYCBzdWdnZXN0IGEgY29tcGxldGUgaW50ZWdyYXRpb24gb2YgdGhlc2UgY2hhbmdlcy5cblxuQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgYWNjZXNzaWJsZSBpcyB0aGlzIGNvZGUgaW4gdGhlIHRlc3RpbmcgY29udGV4dD8gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IEl0J3MgYSBQSFkgZHJpdmVyLCB3aGljaCBtZWFucyBpdCByZWxpZXMgb24gYmVpbmcgcHJvYmVkIGJ5IGFuIE1ESU8gYnVzLiBJbiBRRU1VLCB3ZSAqY2FuKiBlbXVsYXRlIE1ESU8gYnVzZXMgYW5kIFBIWXMsIGJ1dCBzeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IGhhdmUgYSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBQSFlzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZHJpdmVyIGF2YWlsYWJsZSwgb3IgYSB3YXkgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcy5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21kaW9fYnVzYD8gTm8sIGJ1dCB0aGVyZSdzIHRoZSBwb3NzaWJpbGl0eSBvZiB1c2luZyB2aXJ0dWFsIE1ESU8gYnVzZXMsIG9yIG1heWJlIHVzaW5nIGBtYWNiYCBvciBvdGhlciBlbXVsYXRlZCBOSUNzIHdoaWNoIGhhdmUgYnVpbHQtaW4gTURJTyBidXNlcywgYW5kIHdlIGNhbiBiaW5kIFBIWSBkcml2ZXJzIHRvIHRob3NlLiBBY3R1YWxseSwgc3l6a2FsbGVyICpkb2VzKiBmdXp6IFBIWSBkcml2ZXJzIGlmIHRoZXkgYXJlIHJlZ2lzdGVyZWQgYW5kIGNhbiBiZSBib3VuZCwgd2hpY2ggbWVhbnMgd2UgbWlnaHQgYmUgYWJsZSB0byB0YXJnZXQgdGhpcy4gQ2FuIHdlIGJpbmQgYSBQSFkgZHJpdmVyIHRocm91Z2ggc3lzZnM/IFllcywgaWYgd2UgaGF2ZSBhbiBNRElPIGJ1cy5cblxuT2theSwgc28gdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhlcmUgYSB2aWFibGUgcGF0aCB0byB0cmlnZ2VyIGFuZCB0ZXN0IHRoaXMgbW9kaWZpZWQgY29kZT8gTGV0J3MgdmVyaWZ5IGlmIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgZnV6emFibGUuIFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggaW4gdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGBEUDgzNjQwX1BIWWAuIFRoYXQgd2lsbCBnaXZlIHVzIGEgY2xlYXIgYW5zd2VyIGFib3V0IHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBwb3RlbnRpYWxseSByZWFjaCB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MDksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1MC41MTg2ODY4ODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyNDgyODg4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTEzNz1DT05GSUdfU1BJX1BMMDIyPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctMTM5LUNPTkZJR19HUElPTElCPXlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXFx0Kz0gZGF2aWNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNTctb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI3OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yOC0jZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0Njk9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcwLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NzE6XFx0LnBoeV9pZFxcdFxcdD0gRFA4MzY0MF9QSFlfSUQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcyLVxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDkxOlxcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTItXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXFxcIkVuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo3NTpjb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1Mi44NDM1MjE0NDVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzAxMTkzMzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgU3l6a2FsbGVyJ3MgUEhZIERyaXZlciBSZWFjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jYC4gSXQncyBhIFBIWSBkcml2ZXIsIGNsZWFybHkuIFRoZSBxdWVzdGlvbiBpcywgY2FuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgc3RhdGUsIGFjdHVhbGx5ICpnZXQqIHRvIHRoaXMgdGhpbmc/IENhbiBpdCB0ZXN0IHRoZSBgZHA4MzY0MC5jYCBkcml2ZXI/IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB5ZXMsIHRoZW9yZXRpY2FsbHksIGlmIFN5emthbGxlciBjYW4gc29tZWhvdyBjcmVhdGUgYW4gTURJTyBidXMgYW5kIHRoZW4gcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIHRoYXQgYnVzLiBUaGF0J3MgdGhlIGJhc2ljIHJlcXVpcmVtZW50LlxuXG5JIHJlbWVtYmVyIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgbWV0aG9kcyBhcmUgYXQgU3l6a2FsbGVyJ3MgZGlzcG9zYWwsIGJ1dCBJ4oCZbSBzcGVjaWZpY2FsbHkgd29uZGVyaW5nIGFib3V0IHRoZSBNRElPIGluc3RhbnRpYXRpb24gcGFydC4gRG9lcyBpdCBvZmZlciBhIGRpcmVjdCB3YXkgdG8gY3JlYXRlIE1ESU8gZGV2aWNlcz8gSG1tLCB0aGVyZSdzIHRoZSBgbWRpb2AgYnVzIGluIHN5c2ZzLiBCdXQgY2FuIFN5emthbGxlciAqY3JlYXRlKiBkZXZpY2VzIG9uIHRoYXQgYnVzPyBUaGF0J3MgdGhlIGNydXggb2YgaXQuXG5cbkxldCBtZSB0aGlua+KApiBJIG5lZWQgdG8gY29uc2lkZXIgdmlydHVhbCBNRElPIGJ1cyBvcHRpb25zLCBvciBwZXJoYXBzIHdoZXRoZXIgZGV2aWNlcyBsaWtlIGBtYWNzZWNgLCBgdmV0aGAsIG9yIGB0dW5gIHByb3ZpZGUgYSBzaWRlLWVmZmVjdCBNRElPIGJ1cy4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCBsb29rcyBsaWtlIGBkc2FgIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBpcyBwcm9taXNpbmcsIGFzIGl0IGNyZWF0ZXMgTURJTyBidXNlcy4gVGhlIG90aGVyIHBhdGggaGVyZSBpcyB0aGUgYGZpeGVkLXBoeWAgZHJpdmVyLCBidXQgSSByZWNhbGwgdGhhdCBkb2Vzbid0IHV0aWxpemUgdGhlIHN0YW5kYXJkIFBIWSBkcml2ZXJzLCBzbyB0aGF0IHdvbuKAmXQgaGVscCBoZXJlLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdoYXQgYWJvdXQgU3l6a2FsbGVyJ3MgdXNlIG9mIGB2aGNpYCBvciBgbmV0ZGV2c2ltYD8gQ291bGQgZWl0aGVyIG9mIHRob3NlIG9mZmVyIGFuIE1ESU8gYnVzPyBUaGF0J3MgdGhlIGFuZ2xlIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gcHVyc3VpbmcuIExldCdzIGRpZyBpbnRvIGBuZXRkZXZzaW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGF0IGhhcyBhbiBNRElPIGJ1cy4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwYXRoIHRvIHRlc3RpbmcgdGhpcyBwYXJ0aWN1bGFyIFBIWSBkcml2ZXIgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwOTUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzY6NTkuNTQ0NzE3NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ5MTY3MjcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNjo1OS42Mzk2NDE4NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE3NDY0MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQ29uc2lkZXJpbmcgRGF0YSBTdHJ1Y3R1cmUgYW5kIEFsZ29yaXRobSBDaG9pY2VzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFwid2hhdCBhYm91dCBgZHNhYD9cIi4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIHRob3VnaHQ7IGl0J3MgYSBkZWVwbHkgaW5ncmFpbmVkIHJlZmxleC4gVGhlIHdob2xlIHByb2JsZW0gc3BhY2UgSSdtIGFwcHJvYWNoaW5nIGlzIHNjcmVhbWluZyBmb3IgYSBzdHJ1Y3R1cmVkIGFsZ29yaXRobWljIGFwcHJvYWNoLiBUaGUgdHlwZSBvZiBzb2x1dGlvbiBJIG5lZWQgYWxtb3N0IGNlcnRhaW5seSBoaW5nZXMgb24gY2FyZWZ1bCBkYXRhIHN0cnVjdHVyZSBzZWxlY3Rpb24gYW5kIGFsZ29yaXRobSBkZXNpZ24uIEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgLS0gdHJlZXMsIGdyYXBocywgaGVhcHMsIGhhc2ggdGFibGVzIC0tIHNlZWluZyB3aGljaCBvbmVzIG1pZ2h0IG9mZmVyIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgZ2l2ZW4gdGhlIHR5cGljYWwgaW5wdXRzIEknbSBleHBlY3RpbmcuIFRoZSBcImRzYVwiIHNob3J0aGFuZCwgZm9yIG1lLCBpc24ndCBqdXN0IGEgZ2VuZXJpYyB0ZXJtOyBpdCdzIGEgZnJhbWV3b3JrIGZvciB0aGlua2luZyBhYm91dCBjb21wdXRhdGlvbmFsIGNvbXBsZXhpdHksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgb3ZlcmFsbCBlZmZpY2llbmN5LiBTbywgSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcG90ZW50aWFsIGNvbnN0cmFpbnRzLCB0aGUgZXhwZWN0ZWQgc2NhbGUgb2YgdGhlIGRhdGEsIGFuZCBzdGFydCBmb3JtdWxhdGluZyBjb25jcmV0ZSBhbGdvcml0aG1pYyBpZGVhcy4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBpdGVyYXRlIHRocm91Z2ggcG9zc2liaWxpdGllcyBhbmQgZGlzY2FyZCB0aGUgb25lcyB0aGF0IHdvbid0IHNjYWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzowMi43NTcxMDgxMTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY0NzAyODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9kc2EvZHNhLmM9NjIxPXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTY1My1cXHRpZiAoIWRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY1NDpcXHRcXHRkcy1cXHUwMDNldXNlcl9taWlfYnVzID0gbWRpb2J1c19hbGxvYygpO1xcbm5ldC9kc2EvZHNhLmMtNjU1LVxcdFxcdGlmICghZHMtXFx1MDAzZXVzZXJfbWlpX2J1cykge1xcbi0tXFxubmV0L2RzYS9kc2EuYy02NjEtXFxubmV0L2RzYS9kc2EuYzo2NjI6XFx0XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY2My1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9kc2EvZHNhLmMtNjczLVxcdGlmIChkcy1cXHUwMDNldXNlcl9taWlfYnVzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKVxcbm5ldC9kc2EvZHNhLmM6Njc0OlxcdFxcdG1kaW9idXNfZnJlZShkcy1cXHUwMDNldXNlcl9taWlfYnVzKTtcXG5uZXQvZHNhL2RzYS5jLTY3NS10ZWFyZG93bjpcXG4tLVxcbm5ldC9kc2EvZHNhLmM9Njg1PXN0YXRpYyB2b2lkIGRzYV9zd2l0Y2hfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy02OTItXFx0aWYgKGRzLVxcdTAwM2V1c2VyX21paV9idXMgXFx1MDAyNlxcdTAwMjYgZHMtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3JlYWQpIHtcXG5uZXQvZHNhL2RzYS5jOjY5MzpcXHRcXHRtZGlvYnVzX3VucmVnaXN0ZXIoZHMtXFx1MDAzZXVzZXJfbWlpX2J1cyk7XFxubmV0L2RzYS9kc2EuYzo2OTQ6XFx0XFx0bWRpb2J1c19mcmVlKGRzLVxcdTAwM2V1c2VyX21paV9idXMpO1xcbm5ldC9kc2EvZHNhLmMtNjk1LVxcdFxcdGRzLVxcdTAwM2V1c2VyX21paV9idXMgPSBOVUxMO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcXHUwMDNlXFxubmV0L2RzYS9wb3J0LmM6MTI6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3BvcnQuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNzI2PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNzk2LSNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1NNU0NfTEFOOTMwM19NRElPKVxcbm5ldC9kc2EvcG9ydC5jOjE3OTc6XFx0XFxcInNtc2MsbGFuOTMwMy1tZGlvXFxcIixcXG5uZXQvZHNhL3BvcnQuYy0xNzk4LSNlbmRpZlxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbm5ldC9kc2EvdXNlci5jOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxubmV0L2RzYS91c2VyLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21kaW8uaFxcdTAwM2VcXG5uZXQvZHNhL3VzZXIuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbmV0L3J0bmV0bGluay5oXFx1MDAzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MjYzNz1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldiwgaW50IGFkZHIsXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjQyLVxcbm5ldC9kc2EvdXNlci5jOjI2NDM6XFx0dXNlcl9kZXYtXFx1MDAzZXBoeWRldiA9IG1kaW9idXNfZ2V0X3BoeShkcy1cXHUwMDNldXNlcl9taWlfYnVzLCBhZGRyKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjQ0LVxcdGlmICghdXNlcl9kZXYtXFx1MDAzZXBoeWRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzowMi44NTM1ODIxMzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI5OTg1NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFN5emthbGxlcidzIFBIWSBEcml2ZXIgQ292ZXJhZ2UqKlxuXG5IbW0sIHNvICpTeXprYWxsZXIqIG9jY2FzaW9uYWxseSBkYWJibGVzIGluIFBIWSBkcml2ZXJzLCBkb2Vzbid0IGl0PyBJIGhhdmUgYSB2YWd1ZSByZWNvbGxlY3Rpb24gb2Ygc2VlaW5nIHNvbWUgbWVudGlvbnMuLi4gYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJdCdzIGNydWNpYWwgdG8ga25vdyB0aGUgZXh0ZW50IG9mIGl0cyBjb3ZlcmFnZS4gVGhlIGludGVncml0eSBvZiBvdXIgbmV0d29yayBzdGFjayBkZXBlbmRzIG9uIHRob3JvdWdoIHRlc3RpbmcsIGFuZCBpZiBTeXprYWxsZXIgaXMgbGVhdmluZyBhIGJsaW5kIHNwb3QgaW4gdGhlIFBIWSBsYXllciwgd2UgbmVlZCB0byBhZGRyZXNzIGl0LlxuXG5SaWdodCwgbGV0J3MgY3V0IHRoZSBzcGVjdWxhdGlvbi4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIG1lbW9yeSwgbGV0J3MgZ2V0IGNvbmNyZXRlLiBJJ2xsIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggdGhlIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVzY3JpcHRvcnMgcmVsYXRlZCB0byBNRElPIG9yLCBtb3JlIGJyb2FkbHksIFBIWSBmdW5jdGlvbmFsaXR5LiBJJ2xsIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHN5emthbGxlciBpbnRlcmZhY2VzIGRlZGljYXRlZCB0byB0aG9zZS4gSG9wZWZ1bGx5IHdlJ2xsIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgY292ZXJhZ2Ugc29vbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg3NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjA4LjI4MzU3MTEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTE1NDIzOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFfaHdzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjA4LjM2MjczNDA5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkxMjY5NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipFeHBsb3JpbmcgUEhZIERyaXZlciBBY2Nlc3MqKlxuXG5IbW0sIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBpbnRlcmFjdCB3aXRoIFBIWSBkcml2ZXJzIGJleW9uZCB3aGF0IEknbSBjdXJyZW50bHkgdXNpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcGF0aHMgSSBtaWdodCBiZSBvdmVybG9va2luZz8gUGVyaGFwcyBJIGNvdWxkIGxldmVyYWdlIHNvbWUgZXhpc3RpbmcgRFNBIGZyYW1ld29yayBjYXBhYmlsaXRpZXMuXG5cbkFoLCByaWdodCwgdGhlcmUncyBgZHNhX2xvb3BgLiBUaGUgbG9vcGJhY2sgRFNBIGRyaXZlci4uLiB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWZ1bCB0byBpbnZlc3RpZ2F0ZS4gSSBzaG91bGQgZXhhbWluZSB0aGUgY29kZSBhbmQgc2VlIGlmIGl0IGNhbiBiZSBhZGFwdGVkIG9yIGlmIGl0IHByZXNlbnRzIGFueSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBtZSB0byBleHBsb3JlLiBJdCBjb3VsZCBvZmZlciBhIGNsZXZlciB3YXkgdG8gdGVzdCBvciBpbnRlcmFjdCB3aXRoIHRoZSBQSFkgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTEuNTU0MDA1Nzk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODY1NzcwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03ND1zdGF0aWMgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldnNbUEhZX01BWF9BRERSXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NTpzdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTE4ND1zdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTkwOlxcdHJldCA9IG1kaW9idXNfcmVhZF9uZXN0ZWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgcmVnbnVtKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0xOTk9c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDY6XFx0cmV0ID0gbWRpb2J1c193cml0ZV9uZXN0ZWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgcmVnbnVtLCB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjA3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MjUwPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYzLVxcdC8qIEp1c3QgZG8gYSBzbGVlcGluZyBvcGVyYXRpb24gdG8gbWFrZSBsb2NrZGVwIGNoZWNrcyBlZmZlY3RpdmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNjQ6XFx0bWRpb2J1c19yZWFkKGJ1cywgcHMtXFx1MDAzZXBvcnRfYmFzZSArIHBvcnQsIE1JSV9CTVNSKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0yODM9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTItXFx0LyogSnVzdCBkbyBhIHNsZWVwaW5nIG9wZXJhdGlvbiB0byBtYWtlIGxvY2tkZXAgY2hlY2tzIGVmZmVjdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MzpcXHRtZGlvYnVzX3JlYWQoYnVzLCBwcy1cXHUwMDNlcG9ydF9iYXNlICsgcG9ydCwgTUlJX0JNU1IpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTgtXFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM2NTpcXHRkcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKmRzKSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzY2LVxcdGlmICghZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNjgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzY5OlxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MC1cXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gRFNBX0xPT1BfTlVNX1BPUlRTO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNzI6XFx0cHMgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpwcyksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM3My1cXHRpZiAoIXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MjpcXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODMtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzg1OlxcdHBzLVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4NzpcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5MC1cXHRpZiAoIXJldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTE6XFx0XFx0ZGV2X2luZm8oXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldiwgXFxcIiVzOiAweCUweFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTItXFx0XFx0XFx0IHBkYXRhLVxcdTAwM2VuYW1lLCBwZGF0YS1cXHUwMDNlZW5hYmxlZF9wb3J0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk5OlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDAtXFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDEzOlxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIwOlxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBOVUxMKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI0OlxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNS1cXHRcXHQubmFtZVxcdD0gXFxcImRzYS1sb29wXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzMj1zdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQzOD1zdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NjM6XFx0YnVzID0gbWRpb19maW5kX2J1cyhcXFwiZml4ZWQtMFxcXCIpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2NC1cXHRpZiAoV0FSTl9PTighYnVzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Njc6XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDY4OlxcdGlmIChJU19FUlIoc3dpdGNoX21kaW9kZXYpKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ2OS1cXHRcXHRnb3RvIG91dDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDc0OlxcdHJldCA9IG1kaW9fZGV2aWNlX3JlZ2lzdGVyKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzUtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzY6XFx0XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDc3LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ni1cXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTc6XFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTg6XFx0XFx0bWRpb19kZXZpY2VfZnJlZShzd2l0Y2hfbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTUwNT1zdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA4LVxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwOTpcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMDpcXHRtZGlvX2RldmljZV9mcmVlKHN3aXRjaF9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzoxMS44NDA1ODkwNjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzMDMzODE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIFx1MDAyNiBQSFkgRGV2aWNlIFJlZ2lzdHJhdGlvbiAtIFN5emthbGxlciBDaGFsbGVuZ2VzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBkc2FfbG9vcGAgc2l0dWF0aW9uLCBhbmQgaXQganVzdCBoaXQgbWUg4oCTIGl0J3MgdXNpbmcgdGhlIGBmaXhlZC0wYCBidXMsIHdoaWNoIGhhcyB0aHJvd24gbWUgb2ZmIHRyYWNrLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICphY3R1YWxseSogcmVnaXN0ZXIgYSBQSFkgZGV2aWNlIG9uIGFuIE1ESU8gYnVzIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlPyBUaGUgdGhvdWdodCBwcm9jZXNzIGlzIGEgY2FzY2FkZSBvZiBpZi90aGVuIHF1ZXN0aW9ucywgbGlrZSBhbiBlbmdpbmVlciBkZWJ1Z2dpbmcgY29kZS5cblxuTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB1c2UgYERQODM2NDBfUEhZYCwgYXMgSSBzZWUgdGhpcyBkcml2ZXIgaW4gdGhlIHNvdXJjZSwgYnV0IGl0J3MgYSAqaGFyZHdhcmUqIFBIWSBkcml2ZXIuIEhvdyBjYW4gd2UgcG9zc2libHkgaW5qZWN0IHRoYXQgaW50byB0aGUgc3lzdGVtLCBlc3BlY2lhbGx5IHVzaW5nIHN5emthbGxlciwgdW5sZXNzIHRoZXJlJ3MgYSB2aXJ0dWFsIE1ESU8gYnVzIHdoZXJlIHdlIGNhbiByZWdpc3RlciBhbnkgYXJiaXRyYXJ5IFBIWSBJRCwgYSB0ZXN0IGNhc2UgcGVyaGFwcz9cblxuSG9sZCBvbi4uLiBkb2VzIHN5emthbGxlciBldmVuICpoYXZlKiBhIGBzeXpfbWRpb19idXNgIGNhbGw/IEkgZG9uJ3QgdGhpbmsgc28sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBzeXprYWxsZXIncyBkb2N1bWVudGF0aW9uLCBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBvciBtZWNoYW5pc21zIHJlbGF0ZWQgdG8gTURJTyBvciBQSFkgZGV2aWNlcy4gSSdtIGFzc3VtaW5nIHN1Y2ggdG9vbHMgYXJlIGxpa2VseSB0byBleGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MzYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTYuODcwOTMwMTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5MDY5MjYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6MTYuOTc1ODQ1MTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDQyMDM4NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgU2VhcmNoIENvbnN0cmFpbnRzKipcblxuT2theSwgc28gSSBjYW4ndCBqdXN0IHRocm93IGEgYGdyZXBgIGZvciBgc3l6X2AgaW50byB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseTsgdGhhdCdzIGEgcm9va2llIG1pc3Rha2UuIFRoZSBoaW50IGFib3V0IGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBpcyBhIGdvb2QgcmVtaW5kZXIuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgZG9uJ3Qgc2VlIHRob3NlIHRvb2xzIGluIG15IGF2YWlsYWJsZSBsaXN0ISBJJ20gb25seSBzZWVpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFNvLCBjbGVhcmx5LCBJJ20gc3R1Y2sgd2l0aCB3aGF0IEkndmUgZ290LCBhbmQgdGhhdCBtZWFucyBubyBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgU3l6a2FsbGVyIHNwZWNzIGRpcmVjdGx5LiBJJ2xsIGhhdmUgdG8gZmluZCBhbm90aGVyIHdheSB0byBpbnZlc3RpZ2F0ZSB0aGlzIGlzc3VlLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IGBEUDgzNjQwX1BIWWAuIFRoaXMgaXMgYSBoYXJkd2FyZSBQSFkgZHJpdmVyLCBhbmQgdGhhdCByYWlzZXMgc29tZSBpbW1lZGlhdGUgcXVlc3Rpb25zLiBSZWFjaGluZyB0aGVzZSBpbiBRRU1VIGlzIHVzdWFsbHkgYSBwcm9ibGVtLiBVbmxlc3MgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZXMgdGhhdCBwYXJ0aWN1bGFyIFBIWSwgb3IgdGhlcmUncyBhIHNvZnR3YXJlLWJhc2VkIGluc3RhbnRpYXRpb24gbWV0aG9kLCBpdOKAmXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBDYW4gSSBjcmVhdGUgaXQgdmlhIHNvZnR3YXJlPyBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgc3lzZnMgbWFnaWMgdGhhdCBjb3VsZCBhbGxvdyBtZSB0byBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLiBUaW1lIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIGFuZCBodW50IGZvciBzeXNmcyBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgcHJvdmlkZSBhIGNsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODU4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjIzLjI4MDA1MjM1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQwMDc5NjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjIzLjM1NDA2NjU5NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE3NTIwOTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQSFkgRGV2aWNlIElzc3VlKipcblxuSG1tLCBJJ20gdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSByb290IGNhdXNlIG9mIHRoaXMgbmV0d29ya2luZyBpc3N1ZS4gT2theSwgd2hlcmUgZG8gSSBldmVuIHN0YXJ0IHdpdGggdGhpcyBvbmU/IE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgcGh5c2ljYWwgbGF5ZXIuIFRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpcyBhIGNvbW1vbiBwb2ludCBvZiBmYWlsdXJlLiBUaGUgZGV2aWNlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBpcyBvZnRlbiB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBMZXQncyBzZWUuLi4gU3BlY2lmaWNhbGx5LCBJIGltbWVkaWF0ZWx5IGp1bXAgdG8gdGhhdCBnZW5lcmFsIGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgdHJlZTogYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciBhIGxvdCBvZiBjb3JlIFBIWSBtYW5hZ2VtZW50LCBpbml0aWFsaXphdGlvbiwgYW5kIGNvbnRyb2wgbG9naWMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrIGFuZCB0aGUgc3BlY2lmaWMgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGEgZnJlcXVlbnQgc291cmNlIG9mIHRyaWNreSBidWdzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGF0IHRvIGxvb2sgZm9yLCBidXQgdGhhdCdzIHRoZSBsaWtlbHkgc3BvdCB0byBpbnZlc3RpZ2F0ZSBmaXJzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgaXMgYmVpbmcgZGV0ZWN0ZWQsIGluaXRpYWxpemVkLCBhbmQgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBmaWxlLiBXaGF0IGhhcHBlbnMgaWYgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGhhcyBhbiBpc3N1ZT8gSXMgdGhlcmUgc29tZSBraW5kIG9mIGluaXRpYWxpemF0aW9uIHByb2JsZW0gaGFwcGVuaW5nIHRoZXJlPyBUaGF0IHNvdW5kcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzoyNy45NzE1OTAzODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNzIzNDQ3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjI4LjA1MjMyMjI2NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA0MzA0MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBQSFkgRGV2aWNlIENyZWF0aW9uKipcblxuQWxyaWdodCwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZmVhc2libGUgdG8gY3JhZnQgYSBQSFkgZGV2aWNlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgd2hldGhlciB0aGVyZSdzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBieXBhc3MgdGhlIGtlcm5lbCBlbnRpcmVseSwgb3IgYXQgbGVhc3Qgc2lnbmlmaWNhbnRseSBpbnRlcmFjdCB3aXRoIHRoZSBQSFkuIExldCdzIGRpZyBpbnRvIHRoZSBhdmFpbGFibGUgaW50ZXJmYWNlcy5cblxuVGhlIGZpcnN0IGFwcHJvYWNoIHRoYXQganVtcHMgdG8gbWluZCBpcyB0byBzZWUgaWYgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIE1ESU8gaW50ZXJmYWNlIHRocm91Z2ggZWl0aGVyIGFuIGBpb2N0bGAgb3IgYG5ldGxpbmtgIG1ldGhvZC4gTXkgZXhwZXJpZW5jZSBkaWN0YXRlcyB0aGF0IHRoaXMgaXMgdXN1YWxseSB0aGUgcHJpbWFyeSBhdmVudWUgZm9yIGxvdy1sZXZlbCBQSFkgY29udHJvbC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgcmVsZXZhbnQga2VybmVsIGhlYWRlcnMuIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IGV4cG9zaW5nIE1ESU8gcmVnaXN0ZXJzIGluIGEgd2F5IHRoYXTigJlzIGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLiBGaW5kaW5nIGEgcmVsaWFibGUsIHVzZXItc3BhY2UgaW50ZXJmYWNlIHdvdWxkIGJlIGlkZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgzOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjMxLjc1NjYyODc1N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI1NzEwNzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvcnRuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjMxLjg0OTIwNzA3NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTQ3OTY0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyBhIERQODM2NDAgUEhZIHdpdGggc3l6a2FsbGVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBgbWFjYmAgZHJpdmVyIGFuZCBRRU1VLiBRRU1VIGVtdWxhdGVzIHRoZSBgbWFjYmAgd2hpY2gsIG9mIGNvdXJzZSwgaGFzIGFuIE1ESU8gYnVzLiBDYW4gUUVNVSBlbXVsYXRlIHRoZSBEUDgzNjQwIFBIWSBkaXJlY3RseT8gUHJvYmFibHkgbm90IHdpdGhvdXQgZGl2aW5nIGludG8gdGhlIHNvdXJjZS4gSSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIHNvIEkgbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5LlxuXG5XYWl0IGEgc2Vjb25kLCBzeXprYWxsZXIhIEl0IGhhcyB0aGF0IGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwuIEkgcmVtZW1iZXIgdGhhdCBlbXVsYXRlcyBVU0IgZGV2aWNlcy4gTm93LCBpcyB0aGVyZSBhbnkgVVNCIHRvIE1ESU8gYnJpZGdlIHRoYXQgbWlnaHQgYmUgdXNlZnVsP1xuXG5BaGEhIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgIGFuZCBgZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmNgLCBJIHNlZSB0aGV5IGJvdGggaGF2ZSBNRElPIGltcGxlbWVudGF0aW9ucy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGEgVVNCIGRldmljZSwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0ICpwcmVzZW50cyogYW4gTURJTyBidXMsIHdlIG1pZ2h0IGJlIG9udG8gc29tZXRoaW5nLlxuXG5TbywgaWYgd2UgZW11bGF0ZSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHNvbWV0aGluZyBsaWtlIGBsYW43OHh4YCwgYHNtc2M5NXh4YCwgb3IgZXZlbiBgYXg4ODE3OV8xNzhhYCwgdGhlIGRyaXZlciB3b3VsZCB0aGVuIHJlYWQgdGhlIFBIWSBJRCBmcm9tIHRoYXQgZW11bGF0ZWQgTURJTyBidXMuIEJyaWxsaWFudCEgVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciAqY29udHJvbHMqIHRoZSBVU0IgcmVzcG9uc2VzLiBXZSBjYW4gbWFrZSB0aGUgZW11bGF0ZWQgZGV2aWNlIHJlcG9ydCBhIHNwZWNpZmljIFBIWSBJRC5cblxuSWYgd2UgZmVlZCBpdCB0aGUgRFA4MzY0MCdzIFBIWSBJRCwgd2hpY2ggSSBiZWxpZXZlIGlzIGAweDIwMDA1Y2UxYCwgd2hlbiB0aGUgZHJpdmVyIHJlYWRzIHRoZSBNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIgcmVnaXN0ZXJzLCBpdCBzaG91bGQgd29yay5cblxuV2hlbiB0aGUgVVNCIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyB0aGUgTURJTyBidXMgYW5kIHNjYW5zIGl0LCBpdCB3aWxsIGVuY291bnRlciB0aGUgUEhZIElEIHdlIGFyZSBwcmVzZW50aW5nLiBUaGUgTURJTyBjb3JlIHNob3VsZCBtYXRjaCB0aGlzIElELCB0cmlnZ2VyaW5nIHRoZSBiaW5kaW5nIG9mIHRoZSBgZHA4MzY0MGAgUEhZIGRyaXZlci4gQm9vbSFcblxuVGhpcyBpcyBhIHJlYWxseSBjbGV2ZXIgdGVjaG5pcXVlLiBJdCdzIGEgdmVyeSBjb21tb24gYXBwcm9hY2ggd2l0aCBzeXprYWxsZXIuIFlvdSBlc3NlbnRpYWxseSBlbXVsYXRlIGEgVVNCIGRldmljZSB0aGF0J3MgYWN0aW5nIGFzIGEgTURJTyBidXMgYW5kIGluamVjdCB0aGUgYXJiaXRyYXJ5IFBIWSBJRCB0byB0cmljayB0aGUga2VybmVsIGludG8gbG9hZGluZyBkaWZmZXJlbnQgUEhZIGRyaXZlcnMuXG5cbk5vdywgbGV0J3MganVzdCBjb25maXJtIHRoYXQgYGxhbjc4eHhgIGFuZCBzaW1pbGFyIGRyaXZlcnMgYWN0dWFsbHkgdXNlIGBtZGlvYnVzX3JlZ2lzdGVyYCBhbmQgcmVhZCB0aG9zZSBQSFkgSURzLiBUaGF0J3MgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzozOS45OTcxNzU3NTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MjI0NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Njg3OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4OC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz02MT1zdGF0aWMgaW50IGF4ODgxNzJhX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy03OS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYzo4MDpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1kaW8pO1xcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTgxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9MjA5MT1zdGF0aWMgaW50IGxhbjc4eHhfbWRpb19pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIxLVxcdG5vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjEyMjpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cXHUwMDNlbWRpb2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yMTIzLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyNDEtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI0MjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC91c2Ivc21zYzk1eHguYy0xMjQzLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6NDAuMDYxNDA1NDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzODg2NzYzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIERQODM2NDAgUEhZIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHRoaXMgaXMgZXhjaXRpbmcuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGBkcDgzNjQwYCBkcml2ZXIncyBgZHA4MzY0MF9wcm9iZWAgZnVuY3Rpb24gaXMgYWJzb2x1dGVseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGBzbXNjOTV4eGAsIGBsYW43OHh4YCwgYW5kIGBhc2l4YCBkcml2ZXJzIGFsbCByZWdpc3RlciBhbiBNRElPIGJ1cywgYW5kIHRoZSBgbWRpb2J1c19yZWdpc3RlcmAgY2FsbCBzY2FucyB0aGUgYnVzIHVzaW5nIE1JSV9QSFlTSUQxIGFuZCBNSUlfUEhZU0lEMi4gU3l6a2FsbGVyJ3MgYWJpbGl0eSB0byBjb250cm9sIFVTQiBlbmRwb2ludCByZXNwb25zZXMgbWVhbnMgd2UgY2FuIGZlZWQgaXQgdGhlIERQODM2NDAgUEhZIElELiBGYW50YXN0aWMhXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgZm9jdXNlZCBvbiByZWZhY3RvcmluZyBob3cgdGhlIGBkcDgzNjQwX2Nsb2NrYCAod2hpY2ggaXMgY3JpdGljYWwgZm9yIFBUUCkgaXMgbWFuYWdlZC4gUHJldmlvdXNseSwgdGhleSB3ZXJlIHVzaW5nIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiBUaGUgcGF0Y2gncyBtb3ZlZCBpdCB0byBgZGV2bV9waHlfcGFja2FnZV9qb2luYCBhbmQgYHBoeV9wYWNrYWdlX2dldF9wcml2YCwgcGVyLVBIWSBwYWNrYWdlIG1hbmFnZW1lbnQuIEl0J3MgcmVtb3ZpbmcgYGRwODM2NDBfY2xvY2tfZ2V0X2J1c2AgYW5kIGBkcDgzNjQwX2Nsb2NrX3B1dGAgd2hpbGUgYWRkaW5nIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBhcyBhIGRldm0gYWN0aW9uIGZvciBjbGVhbnVwLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBib3RoIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcmVtb3ZlYC4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBlc3NlbnRpYWxseSBhIGxpZmVjeWNsZSBvdmVyaGF1bCBvZiB0aGUgYGRwODM2NDBfY2xvY2tgLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBjYXRjaCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgYnVncywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBwcm9iZS9yZW1vdmUgY3ljbGUsIGVzcGVjaWFsbHkgd2l0aCBtdWx0aXBsZSBQSFlzLlxuXG5MZXQncyBuYWlsIGRvd24gdGhlIGtleSBmdW5jdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGRwODM2NDBfY2xvY2tfaW5pdGAsIHRoZSBuZXcgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9wcm9iZWAsIGFuZCBgZHA4MzY0MF9yZW1vdmVgLlxuXG5XYWl0IGEgbWludXRlLCBgZHA4MzY0MF9yZW1vdmVgIGlzIGEgdGVhcmRvd24gY2FsbGJhY2suIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHdlIHNob3VsZG4ndCBmdXp6IHBhdGNoZXMgdGhhdCAqb25seSogY2hhbmdlIHRlYXJkb3duIGNhbGxiYWNrcy4gQnV0IHRoaXMgcGF0Y2ggKmFsc28qIHRvdWNoZXMgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kIGFkZHMgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBTaW5jZSBpdCBhbHNvIG1vZGlmaWVzIGBkcDgzNjQwX3Byb2JlYCwgd2hpY2ggaXMgdGhlIGluaXRpYWxpemF0aW9uIHBhdGgsIHRoaXMgaXMgbm90IGp1c3QgdGVhcmRvd24gY2FsbGJhY2tzLiBJJ20gZ29vZC4gQW5kIHNpbmNlIFN5emthbGxlciBpcyBzbyBlZmZlY3RpdmUgYXQgZnV6emluZyBwcm9iZSBmdW5jdGlvbnMgKGxpa2UgYnkgZW11bGF0aW5nIFVTQiBkZXZpY2VzKSwgYGRwODM2NDBfcHJvYmVgIGlzIGEgZ3JlYXQgdGFyZ2V0LiAgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGlzIGFsc28gaW1wb3J0YW50IHNpbmNlIGl0J3MgYSBkZXZtIGFjdGlvbiBjYWxsZWQgb24gZGV2aWNlIHJlbW92YWwgb3IgcHJvYmUgZmFpbHVyZSwgd2hpY2ggbWlnaHQgZXhwb3NlIGludGVyZXN0aW5nIGNvZGUgcGF0aHMuIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBkcDgzNjQwX3Byb2JlYC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgZW50cnkuIEknbGwgaW5jbHVkZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYC5cblxuV2hhdCBhYm91dCBgZHA4MzY0MF9jbG9ja19pbml0YD8gSXQncyBtYXJrZWQgYHN0YXRpY2AuIEZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBJIHNob3VsZCBwcmVmZXIgdGhlIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBzbyBJIHdpbGwgbm90IGluY2x1ZGUgaXQsIGBkcDgzNjQwX3Byb2JlYCBpcyBiZXR0ZXIuXG5cbkZpbmFsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlcXVpcmVkIENPTkZJRyBvcHRpb25zLiBMb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgdG8gbW9kaWZ5IGBkcml2ZXJzL3B0cC9LY29uZmlnYC4gWWVzLCB0aGUga2V5IGlzIGBEUDgzNjQwX1BIWWAsIGFuZCBpdCBkZXBlbmRzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AsIGFuZCBzZWxlY3RzIGBDUkMzMmAgYW5kIGBQSFlfUEFDS0FHRWAuICBUaGF0J3MgYWxsIGdvb2QsIEkga25vdyB3aGVyZSB0byBsb29rLiBJJ3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MTUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjU0LjQ1MDA4NDE0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0MjUzMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUDgzNjQwX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9NzI9Y29tbWVudCBcXFwiRW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjc1OmNvbmZpZyBEUDgzNjQwX1BIWVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM3OjU0LjY5NDM0MzU4MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODY4NDQyODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgRFA4MzY0MF9QSFkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgYXNrZWQuIEl0IHNvdW5kcyBsaWtlIHNvbWVvbmUgd2FudHMgbWUgdG8gYW5hbHl6ZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUDgzNjQwX1BIWWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3IgbW9kdWxlcyBgRFA4MzY0MF9QSFlgIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uLiBUaGlzIGNvdWxkIGluY2x1ZGUgb3RoZXIgUEhZIGRyaXZlcnMsIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVycywgUlRPUyBjb21wb25lbnRzLCBldmVuIHNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zIG9yIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBNeSBpbml0aWFsIGFwcHJvYWNoIHdpbGwgYmUgdG8gZXhhbWluZSBhbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24sIHNvdXJjZSBjb2RlLCBhbmQgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZmlsZXMuXG5cbkknbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgYW5kIGlkZW50aWZpZXJzIHdpdGhpbiB0aGUgY29kZSB0aGF0IHBvaW50IHRvd2FyZHMgZXh0ZXJuYWwgZWxlbWVudHMgaXQgaW50ZXJhY3RzIHdpdGguIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gd2F0Y2ggZm9yIGluY2x1ZGUgc3RhdGVtZW50cyAoYCNpbmNsdWRlYCksIGZ1bmN0aW9uIGNhbGxzIHRvIG90aGVyIG1vZHVsZXMsIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBzcGVjaWZ5IHRoZSBleHRlcm5hbCByZXNvdXJjZXMgbmVlZGVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBhbmQgY29uZmlndXJhdGlvbi10aW1lIGRlcGVuZGVuY2llcy5cblxuSWYgdGhlIGRvY3VtZW50YXRpb24gaXMgbGFja2luZywgb3IgaW5jb21wbGV0ZSwgdGhlIGNvZGUgaXRzZWxmIGlzIHdoZXJlIEknbGwgZ2V0IG15IGJlc3QgaW5zaWdodHMuIEkga25vdyB0byBzZWFyY2ggZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgcmV2ZWFsIHRoaXMgbW9kdWxlJ3MgaW50ZXJkZXBlbmRlbmNpZXM6IGluY2x1ZGUgaGVhZGVycywgbWFrZWZpbGUgZGlyZWN0aXZlcywgbGlua2VyIHNjcmlwdHMsIG9yIGRldmljZSB0cmVlIGVudHJpZXMsIGFueXRoaW5nIHRoYXQgY2FuIHJldmVhbCBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlciBtb2R1bGUgb3IgZmlsZS4gSSdsbCBuZWVkIHRvIGJlIHRob3JvdWdoIGFuZCBwcmVjaXNlLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzc6NTguNTYyNzg5NTY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX3FvcmlxLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBIWUxJQj1uIHx8IE5FVFdPUktfUEhZX1RJTUVTVEFNUElORz1uXFxuICA3NDpcXHRcXG4gIDc1OlxcdGNvbmZpZyBEUDgzNjQwX1BIWVxcbiAgNzY6XFx0XFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQSFlMSUJcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDgwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODE6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXFxuICA4NjpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxcbiAgODc6XFx0XFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xcbiAgODg6XFx0XFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cXG4gIDg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozNzo1OC41NjI4OTQzNjdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5OTk3NzY4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBtZW50YWwgY2hlY2tsaXN0IGlzIHRpY2tpbmcgYXdheSBoZXJlLlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVHJhY2luZyB0aGUgUm9vdCoqXG5cblJpZ2h0LCBzbyBgRFA4MzY0MF9QSFlgLCBhcyBJIHJlY2FsbCwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBsZXZlcmFnZXMgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gTWFrZXMgc2Vuc2UsIHRoZSB0aW1lc3RhbXBpbmcgYW5kIFBUUCBlbGVtZW50cyBhcmUga2V5IHRvIHRoYXQgUEhZJ3MgZnVuY3Rpb25hbGl0eS4gTm93LCBJIHdhbnQgdG8gZHJpbGwgZG93biBhbmQgdW5kZXJzdGFuZCB0aGUgY29yZSBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBtYXR0ZXIgbGllcy4gTmVlZCB0byBrbm93IHdoYXQgKml0KiByZWxpZXMgb24gdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjAxLjU2Mjg3NDI1MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTY1NDI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0xNTE9Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcXG4tLVxcbm5ldC9LY29uZmlnLTE1My1cXG5uZXQvS2NvbmZpZzoxNTQ6Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbm5ldC9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJUaW1lc3RhbXBpbmcgaW4gUEhZIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjAzLjc4ODUzMzg5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjE0NjAwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYXNwZWN0IG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGJldHRlci4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvS2NvbmZpZ2AsIHRoYXQncyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb24uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGxpbmUgMTU0IGlzIGxpa2VseSBhIGdvb2QgcG9pbnQgdG8gYmVnaW47IGl0IG1pZ2h0IGRlZmluZSBhIG1vZHVsZSBvciBhIGZlYXR1cmUuIE9mdGVuLCBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkIGxpbmVhcmx5LCBhbmQgdGhlIGtleSBkZWZpbml0aW9ucyBhcmUgZ3JvdXBlZCB0b2dldGhlciBsb2dpY2FsbHkuIFNvLCBzdGFydGluZyB0aGVyZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBmbG93LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzMwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MDguNjQ5OTk2MTE0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXG4gMTUxOlxcdGNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuIDE1MjpcXHRcXHRkZWZfYm9vbCBuXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMTU1OlxcdFxcdGJvb2wgXFxcIlRpbWVzdGFtcGluZyBpbiBQSFkgZGV2aWNlc1xcXCJcXG4gMTU2OlxcdFxcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXFxuIDE1NzpcXHRcXHRoZWxwXFxuIDE1ODpcXHRcXHQgIFRoaXMgYWxsb3dzIHRpbWVzdGFtcGluZyBvZiBuZXR3b3JrIHBhY2tldHMgYnkgUEhZcyAob3JcXG4gMTU5OlxcdFxcdCAgb3RoZXIgTUlJIGJ1cyBzbm9vcGluZyBkZXZpY2VzKSB3aXRoIGhhcmR3YXJlIHRpbWVzdGFtcGluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODowOC42NTAwNzMwODRaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMjg5NDI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqUXVpY2sgTmV0d29yayBUaW1lc3RhbXBpbmcgQ2hlY2sqKlxuXG5SaWdodCwgc28sIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLi4uIG5vIHNwZWNpZmljLCB1bnVzdWFsIGRlcGVuZGVuY2llcyBqdW1wIG91dCBhdCBtZSBpbW1lZGlhdGVseS4gVGhhdCdzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgaW50ZWdyYXRpb24gY29tcGxleGl0aWVzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24g4oCTIGFuZCBpdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBrZWVwIHRoaXMgdG9wLW9mLW1pbmQg4oCTIGlzLCB3aGF0IGFib3V0IGBQSFlMSUJgPyBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW1wYWN0ZWQgaW4gYW55IHdheT8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyB0aGlzIHRpZXMgaW50byB0aGUgcGh5c2ljYWwgbGF5ZXIgbGlicmFyeS4gQXJlIHdlIGxldmVyYWdpbmcgZXhpc3RpbmcgYFBIWUxJQmAgY2FwYWJpbGl0aWVzIG9yIGNpcmN1bXZlbnRpbmcgdGhlbT8gSXMgdGhpcyBhIHN0YW5kYXJkIG9wZXJhdGlvbiwgb3IgYSBjdXN0b20gb25lIHRoYXQgaW50cm9kdWNlcyBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyBmb3IgdGhlIHVzZXIgdG8gY29uc2lkZXI/IEl0IGNvdWxkIGltcGFjdCB0aGluZ3MgbGlrZSBQSFkgZHJpdmVycyBhbmQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gSSdsbCBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgb24gdGhhdCBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwODEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjEzLjQ4Mjk2OTg4OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1OTIyMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEhZTElCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MTUuNjQyMTk2NDVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5NjcyOTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBQSFkgQ29uZmlndXJhdGlvbiBTcGFjZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNvIEknbGwgc3RhcnQgd2l0aCB0aGUgbGlrZWx5IGNhbmRpZGF0ZTogYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gTGluZSAxNSBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBvcmllbnQgbXlzZWxmIHdpdGhpbiB0aGUgZmlsZSdzIHN0cnVjdHVyZS4gSG9wZWZ1bGx5LCBpdCBkZWZpbmVzIG9yIGluY2x1ZGVzIHRoZSBicm9hZGVyIGZyYW1ld29yayBmb3IgUEhZIGRyaXZlcnMgYW5kIHRoZWlyIHNldHRpbmdzLiBJIGV4cGVjdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIGd1aWRlIG1lIHRocm91Z2ggaG93IHZhcmlvdXMgUEhZIHR5cGVzIGFyZSBzZWxlY3RlZCwgZW5hYmxlZCwgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCwgYWxsb3dpbmcgbWUgdG8gc3RhcnQgbXkgbW9yZSBpbi1kZXB0aCBhbmFseXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NjgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODoxOC44Mzg5MjgyMzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTAsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6Mzg6MTguODM5MDA1NjY3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjIzMDk0NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUEhZTElCIERlcGVuZGVuY3kgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gbG9va2luZyBvdmVyIHRoaXMgY29kZSwgSSdtIG5vdCBzcG90dGluZyBhbnkgdW51c3VhbCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBQSFlMSUJgIGNvbXBvbmVudC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBCdXQsIHRoYXQgcHJvbXB0cyBhIHNlY29uZGFyeSB0aG91Z2h0OiB3aGF0IGFib3V0IGludGVyYWN0aW9ucyB3aXRoIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBjbG9jaywgc3BlY2lmaWNhbGx5IGBQVFBfMTU4OF9DTE9DS2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlZ3JhdGlvbiBwb2ludHMgb3Igc2hhcmVkIHJlc291cmNlcyBJIHNob3VsZCBiZSBtaW5kZnVsIG9mLiBXZSB1c2UgYFBIWUxJQmAgYSBsb3QgaW4gdGltaW5nIHNlbnNpdGl2ZSBzeXN0ZW1zLCBzbyB0aGVyZSBjb3VsZCBlYXNpbHkgYmUgc29tZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZyBhdCBmaXJzdCBnbGFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozODoyMi4yMDEzMTk0NzlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTg4NTcyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBUUF8xNTg4X0NMT0NLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI0LjQ2MDE4MjA3N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxNDU2NDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4LlxuXG4qKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSdtIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgY2hvaWNlczogYXJlIHdlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1hc3Npc3RlZCBQVFAsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9ucywgb3IgbWF5YmUgb3B0aW9ucyBmb3Igc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlcnM/IEknbSBhbnRpY2lwYXRpbmcgZmluZGluZyB0aGUgbWFpbiBLY29uZmlnIHN5bWJvbCBhbmQgaXRzIGRlcGVuZGVuY2llcyBvciBwb3NzaWJsZSBkZWZhdWx0cyBoZXJlLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZCBzdHJva2VzIG9mIGhvdyB0aGUgUFRQIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIGZyb20gYSBjb25maWd1cmF0aW9uIHN0YW5kcG9pbnQsIHNvIEkgY2FuIGJldHRlciBncmFzcCBob3cgdG8gdGFpbG9yIG15IHN5c3RlbXMuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI3Ljg2MTY0MDY0OFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgUE9TSVhfVElNRVJTXFxuICAxMTpcXHRcXHRkZWZhdWx0IEVUSEVSTkVUXFxuICAxMjpcXHRcXHRzZWxlY3QgUFBTXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX1BUUF9DTEFTU0lGWVxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGUgSUVFRSAxNTg4IHN0YW5kYXJkIGRlZmluZXMgYSBtZXRob2QgdG8gcHJlY2lzZWx5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjI3Ljg2MTcwMzIwOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA4NTMyNzA4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBmb3IgUmVmYWN0b3JpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgZHA4MzY0MGAgUEhZIGRyaXZlci4gIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AsIHdoaWNoIGFyZSBwcmV0dHkgc3RhbmRhcmQgc3R1ZmYuICBUbyBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LCB0aGUga2V5IGNvbmZpZ3MgYXJlIGRlZmluaXRlbHkgYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gIEFoYSwgYERQODM2NDBfUEhZYCBpcyB0aGUgbWFpbiBvbmU7IGl0IGJyaW5ncyBgUEhZX1BBQ0tBR0VgIGluIHdpdGggaXQuIFNvLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgaW5kZWVkIGJlOiBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgaW1wb3J0YW50IHN5bWJvbHMgZm9yIHRoaXMuIEkgc2VlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgIGp1bXAgb3V0LiBXYWl0IGEgbWludXRlLi4uIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYywgYnV0IGl0ICppcyogY2FsbGVkIGZyb20gYGRwODM2NDBfcHJvYmVgLiBJcyBgZHA4MzY0MF9waHlfcmVsZWFzZWAgc3RhdGljPyBZZXMsIGBzdGF0aWMgdm9pZCBkcDgzNjQwX3BoeV9yZWxlYXNlKHZvaWQgKmRhdGEpYC4gQWgsIGl0J3MgcGFzc2VkIHRvIGBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXRgLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGUgcHJvbXB0IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGZvbGxvd2luZyB0aGF0IGd1aWRlbGluZSwgc28gbGV0J3MgZG91YmxlLWNoZWNrLlxuXG5Pa2F5LCBsZXQncyBsb29rIGF0IGBkcDgzNjQwX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AuICBZdXAsIGl0J3Mgc3RhdGljISBCdXQgaXQncyBwYXJ0IG9mIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0LCBzbyBpdCBpcyBhbiBBUEkgZW50cnkgcG9pbnQ6XG5cbmBgYGNcbnN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xue1xuXHQucGh5X2lkXHRcdD0gRFA4MzY0MF9QSFlfSUQsXG5cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuXHQubmFtZVx0XHQ9IFwiTmF0U2VtaSBEUDgzNjQwXCIsXG5cdC8qIFBIWV9CQVNJQ19GRUFUVVJFUyAqL1xuXHQucHJvYmVcdFx0PSBkcDgzNjQwX3Byb2JlLFxuXHQucmVtb3ZlXHRcdD0gZHA4MzY0MF9yZW1vdmUsXG4uLi5cbmBgYFxuXG5TbywgYGRwODM2NDBfcHJvYmVgIGlzIHRvdGFsbHkgZmluZSBhcyBhIGZvY3VzIHN5bWJvbC4gQW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBhbHNvIGZpbmUsIGFzIGl0J3MgYSBkZXZtIGFjdGlvbiBjYWxsYmFjay5cblxuTGV0J3MgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiAgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgZHA4MzY0MF9wcm9iZWAsIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIGBkcDgzNjQwX3JlbW92ZWAgaXMgYSB0ZWFyZG93biBjYWxsYmFjayBhbmQgZGVmaW5pdGVseSBtb2RpZmllZC4gIEFuZCB0aGUgY2xvY2sgZnVuY3Rpb25zIGBkcDgzNjQwX2Nsb2NrX2dldF9idXNgLCBgZHA4MzY0MF9jbG9ja19wdXRgLCBhbmQgYGRwODM2NDBfY2xvY2tfZ2V0YCBoYXZlIGFsbCBiZWVuIHJlbW92ZWQuXG5cblNvLCB0aGUgZGVmaW5pdGl2ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgYmVjb21lczogYGRwODM2NDBfcHJvYmVgIGFuZCBgZHA4MzY0MF9waHlfcmVsZWFzZWAuXG5cbkxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbiAtIGBEUDgzNjQwX1BIWWAgZGVwZW5kcyBvbiBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBJJ2xsIGRlZmluaXRlbHkgaW5jbHVkZSBhbGwgb2YgdGhlbSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5Pa2F5LCB0aGUgcmVhc29uaW5nIGhlcmUgaXMgc29saWQuIFRoZSBjaGFuZ2UgaXMgYWJvdXQgbGV2ZXJhZ2luZyBgcGh5X3BhY2thZ2VgIGZvciBzaGFyZWQgY2xvY2sgc3RhdGUsIHdoaWNoIHJlcGxhY2VzIGEgZ2xvYmFsIGxpc3QgYW5kIG11dGV4LiAgSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGluaXRpYWxpemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBXZSBjYW4gdHJpZ2dlciB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uICh0aGluayBgc21zYzk1eHhgLCBgbGFuNzh4eGAgc2NlbmFyaW9zKSwgd2hpY2ggcmVnaXN0ZXIgYW4gTURJTyBidXMgYW5kIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBhdGggaGVyZSBuZWNlc3NpdGF0ZXMgZnV6emluZyB0byByb290IG91dCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC4gSSdsbCBuZWVkIHRvIHdyaXRlIHVwIHRoZSBmaW5hbCByZXN1bHRzIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MTAsIk91dHB1dFRva2VucyI6MjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjM4OjQxLjk0NzAzMjQ3NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzMxMDc2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIGRwODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIHBoeV9wYWNrYWdlIEFQSSBmb3IgbWFuYWdpbmcgc2hhcmVkIGNsb2NrIHN0YXRlLCByZXBsYWNpbmcgYSBnbG9iYWwgbGlzdCBhbmQgbXV0ZXguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgbG9naWMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHZpYSBVU0IgbmV0d29yayBhZGFwdGVyIGVtdWxhdGlvbiAoZS5nLiwgc21zYzk1eHgsIGxhbjc4eHgpLCB3aGljaCByZWdpc3RlcnMgYW4gTURJTyBidXMgYW5kIGNhbiByZXBvcnQgdGhlIERQODM2NDAgUEhZIElEIHRvIHRyaWdnZXIgdGhlIGJpbmRpbmcgb2YgdGhpcyBkcml2ZXIuIEZ1enppbmcgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdXNlLWFmdGVyLWZyZWUsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zIGR1cmluZyBwcm9iZSBvciB3aGVuIG11bHRpcGxlIFBIWXMgYXJlIGluc3RhbnRpYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9waHlfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgZHA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgcGh5X3BhY2thZ2UgQVBJIGZvciBtYW5hZ2luZyBzaGFyZWQgY2xvY2sgc3RhdGUsIHJlcGxhY2luZyBhIGdsb2JhbCBsaXN0IGFuZCBtdXRleC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBsb2dpYy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdmlhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgZW11bGF0aW9uIChlLmcuLCBzbXNjOTV4eCwgbGFuNzh4eCksIHdoaWNoIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgY2FuIHJlcG9ydCB0aGUgRFA4MzY0MCBQSFkgSUQgdG8gdHJpZ2dlciB0aGUgYmluZGluZyBvZiB0aGlzIGRyaXZlci4gRnV6emluZyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB1c2UtYWZ0ZXItZnJlZSwgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHByb2JlIG9yIHdoZW4gbXVsdGlwbGUgUEhZcyBhcmUgaW5zdGFudGlhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[1] Phase: Succeeded StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 08:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 08:38:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2] Phase: Succeeded StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 08:39:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 08:38:53 +0000 UTC FinishedAt: 2026-08-05 08:38:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2421651012/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 08:39:03 +0000 UTC FinishedAt: 2026-08-05 08:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 08:39:03 +0000 UTC FinishedAt: 2026-08-05 08:55:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b765d702-5134-4e85-9bc9-4f376793334c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2421651012/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "aabde2f8-b73f-44b6-a55c-e86254cd0a7c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-2074982786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 08:39:03 +0000 UTC FinishedAt: 2026-08-05 08:55:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b765d702-5134-4e85-9bc9-4f376793334c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2421651012/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "aabde2f8-b73f-44b6-a55c-e86254cd0a7c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-2074982786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 08:55:22 +0000 UTC FinishedAt: 2026-08-05 08:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 08:55:22 +0000 UTC FinishedAt: 2026-08-05 08:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 08:55:22 +0000 UTC FinishedAt: 2026-08-05 08:55:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 08:55:22 +0000 UTC FinishedAt: 2026-08-05 08:55:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2521434307/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 08:55:32 +0000 UTC FinishedAt: 2026-08-05 08:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 08:55:32 +0000 UTC FinishedAt: 2026-08-05 08:57:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aabde2f8-b73f-44b6-a55c-e86254cd0a7c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-2074982786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 08:57:38 +0000 UTC FinishedAt: 2026-08-05 08:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 08:57:39 +0000 UTC FinishedAt: 2026-08-05 08:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 08:57:39 +0000 UTC FinishedAt: 2026-08-05 09:16:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 08:57:39 +0000 UTC FinishedAt: 2026-08-05 09:16:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b765d702-5134-4e85-9bc9-4f376793334c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2521434307/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5e388d55-757d-459b-bd33-3aeaa92498d6", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-3876156279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 08:57:39 +0000 UTC FinishedAt: 2026-08-05 09:16:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b765d702-5134-4e85-9bc9-4f376793334c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-2521434307/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5e388d55-757d-459b-bd33-3aeaa92498d6", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-3876156279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 09:16:17 +0000 UTC FinishedAt: 2026-08-05 09:16:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 09:16:17 +0000 UTC FinishedAt: 2026-08-05 09:16:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 09:16:17 +0000 UTC FinishedAt: 2026-08-05 09:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 09:16:17 +0000 UTC FinishedAt: 2026-08-05 09:18:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5e388d55-757d-459b-bd33-3aeaa92498d6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-3876156279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*aabde2f8-b73f-44b6-a55c-e86254cd0a7c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5e388d55-757d-459b-bd33-3aeaa92498d6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-2074982786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-3876156279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 09:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 09:18:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-749435356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 09:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 09:18:15 +0000 UTC FinishedAt: 2026-08-05 09:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 09:18:16 +0000 UTC FinishedAt: 2026-08-05 09:18:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 09:18:26 +0000 UTC FinishedAt: 2026-08-05 10:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfbrg6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dp83640_probe","dp83640_phy_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"5f442b7e-c9ec-4b95-88b5-066e3ea45bbb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 09:18:26 +0000 UTC FinishedAt: 2026-08-05 10:17:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aabde2f8-b73f-44b6-a55c-e86254cd0a7c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5e388d55-757d-459b-bd33-3aeaa92498d6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-2074982786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-build-action-3876156279/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfbrg6/series-workflowfbrg6-convert-artifact-749435356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}