Name: series-workflowpr6nv Phase: Succeeded StartedAt: 2026-08-07 08:35:15 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[0] Phase: Succeeded StartedAt: 2026-08-07 08:35:15 +0000 UTC FinishedAt: 2026-08-07 09:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 08:35:15 +0000 UTC FinishedAt: 2026-08-07 09:32: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": "594d905195024b228c962627ae5ae7c17bd582a4", "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": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "df5a4671-3e6b-41d8-acfa-0758156db8b9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_phy_release", "phy_package_lock", "phy_package_unlock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhIGluc3RlYWQgb2YgYSBnbG9iYWwgbGlzdCwgYW5kIGFkZHMgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjlhNTVlNjcwZGMxMjJjMTc4N2JmMjBjZDY1OTA1YmU1OWZiZWFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwOToyNTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNTQzZjYzZWFjOWNhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwmIzM0OzogXCYjMzQ7IGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbkBAIC0yMSw2ICYjNDM7MjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2RwODM2NDBfcmVnLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cGh5bGliLmhcJiMzNDtcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgJiM0MzsxMzAsNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbi1cdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICYjNDM7MTQ0LDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xuIFx0LyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcbiYjNDM7XHQvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi9cbiYjNDM7XHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xuIH07XG4gXG4gLyogZ2xvYmFscyAqL1xuQEAgLTIwNiwxMCAmIzQzOzIwNiw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICYjNDM7OTQ5LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbiB7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdGNsb2NrLVx1MDAzZWJ1cyA9IGJ1cztcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuJiM0MztcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCYjMzQ7ZHA4MzY0MCB0aW1lclwmIzM0Oyk7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm1heF9hZGpcdD0gMTk1MzEyNDtcbkBAIC05NzcsMTQgJiM0Mzs5NzIsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbiYjNDM7XHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG4gXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdC8qXG4tXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuXG4tXHQgKi9cbi1cdGdldF9kZXZpY2UoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbkBAIC05OTksNTggJiM0Mzs5ODgsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0aWYgKGNsb2NrKVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0cmV0dXJuIGNsb2NrO1xuLX1cbi1cbi0vKlxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cbi0gKi9cbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLXtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XG4tXHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xuLVx0XHRpZiAodG1wLVx1MDAzZWJ1cyA9PSBidXMpIHtcbi1cdFx0XHRjbG9jayA9IHRtcDtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVx0fVxuLVx0aWYgKGNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYyxcbi1cdFx0XHRcdFx0ICAgICAgRFA4MzY0MF9OX1BJTlMpO1xuLVx0aWYgKCFjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpIHtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0XHRjbG9jayA9IE5VTEw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xuLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0LCBcdTAwMjZwaHl0ZXJfY2xvY2tzKTtcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0xMzk4LDIyICYjNDM7MTMzNSw3MCBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcbiB7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4mIzQzO1xuJiM0MztcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbiYjNDM7XHRwaHlkZXYgPSBkcDgzNjQwLVx1MDAzZXBoeWRldjtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiYjNDM7XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0c193b3JrKTtcbiYjNDM7XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4mIzQzO1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuJiM0MztcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbiYjNDM7XHRcdGNsb2NrLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4mIzQzO1x0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuJiM0MztcdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuJiM0MztcdFx0XHRpZiAodG1wID09IGRwODM2NDApIHtcbiYjNDM7XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiYjNDM7XHRrZnJlZShkcDgzNjQwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiBcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDA7XG4tXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcbiYjNDM7XHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4mIzQzO1x0aW50IGVyciwgaTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4tXHRpZiAoIWNsb2NrKVxuJiM0MztcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbiYjNDM7XHRcdFx0XHQgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRnb3RvIG5vX2Nsb2NrO1xuIFxuJiM0MztcdGNsb2NrID0gcGh5X3BhY2thZ2VfZ2V0X3ByaXYocGh5ZGV2KTtcbiYjNDM7XHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4mIzQzO1x0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuJiM0MztcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4mIzQzO1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuJiM0MztcdHBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiBcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcbi1cdGlmICghZHA4MzY0MClcbiYjNDM7XHRpZiAoIWRwODM2NDApIHtcbiYjNDM7XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuJiM0MztcdH1cbiBcbiBcdGRwODM2NDAtXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xuIFx0ZHA4MzY0MC1cdTAwM2VtaWlfdHMucnh0c3RhbXAgPSBkcDgzNjQwX3J4dHN0YW1wO1xuQEAgLTE0NTAsNjggJiM0MzsxNDM1LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0fSBlbHNlXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHA4MzY0MC1cdTAwM2VsaXN0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiBcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1xuJiM0MztcdGVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gbm9fY2xvY2s6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuLVx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbi1cbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiBcbiBcdGVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4tXG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0eF9xdWV1ZSk7XG4tXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtXHUwMDNlY2xvY2spO1xuLVxuLVx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4tXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4tXHRcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4tXHR9IGVsc2Uge1xuLVx0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuLVx0XHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XG4tXHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4tXHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdH1cbi1cdFx0fVxuLVx0fVxuLVxuLVx0aWYgKCFjbG9jay1cdTAwM2VjaG9zZW4gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkpXG4tXHRcdHJlbW92ZV9jbG9jayA9IHRydWU7XG4tXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tXHRrZnJlZShkcDgzNjQwKTtcbi1cbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbkBAIC01Miw2ICYjNDM7NTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbiYjNDM7ICpcbiYjNDM7ICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9ja1xuJiM0MzsgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5AQCAtMTIsNiAmIzQzOzEyLDggQEAgc3RydWN0IG1paV9idXM7XG4gXG4gc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbiBcdFx0ICAgICAgIHUzMiByZWdudW0pO1xuIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbiYjNDM7XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBQSFkgcGFja2FnZSBjb3JlIGZvciBzaGFyZWQgZGF0YSBpbnN0ZWFkIG9mIGEgZ2xvYmFsIGxpc3QsIGFuZCBhZGRzIGxvY2tpbmcgZnVuY3Rpb25zIHRvIHRoZSBQSFkgcGFja2FnZSBjb3JlLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgd2l0aCBhbiBNRElPIGJ1cyBhbmQgdGhlIERQODM2NDAgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGY5YTU1ZTY3MGRjMTIyYzE3ODdiZjIwY2Q2NTkwNWJlNTlmYmVhZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDk6MjU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwppbmRleCA5ODQ3MmFiZGQzOTIwLi41NDNmNjNlYWM5Y2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAmIzM0OzogJiMzNDsgZm10CiAKICNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UvZGV2cmVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRodG9vbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKQEAgLTIxLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2RwODM2NDBfcmVnLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cGh5bGliLmgmIzM0OwogCiAjZGVmaW5lIERQODM2NDBfUEhZX0lECTB4MjAwMDVjZTEKICNkZWZpbmUgUEFHRVNFTAkJMHgxMwpAQCAtMTI4LDEwICYjNDM7MTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7CiB9OwogCiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7Ci0JLyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAmIzM5O3BoeXRlcl9jbG9ja3MmIzM5OyBsaXN0ICovCi0Jc3RydWN0IGxpc3RfaGVhZCBsaXN0OwotCS8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi8KLQlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwogCS8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovCiAJc3RydWN0IG11dGV4IGV4dHJlZ19sb2NrOwogCS8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovCkBAIC0xNDYsNiAmIzQzOzE0NCw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7CiAJLyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi8KIAlzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7CiYjNDM7CS8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqLwomIzQzOwlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdOwogfTsKIAogLyogZ2xvYmFscyAqLwpAQCAtMjA2LDEwICYjNDM7MjA2LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKQogCX0KIH0KIAotLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovCi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpOwotc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spOwotCiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovCkBAIC05NTMsMTMgJiM0Mzs5NDksMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLAogCX0KIH0KIAotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQogewotCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCWNsb2NrLSZndDtidXMgPSBidXM7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KTsKJiM0MzsJY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGNsb2NrLSZndDtwaW5fY29uZmlnOwogCWNsb2NrLSZndDtjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7CiAJc3ByaW50ZihjbG9jay0mZ3Q7Y2Fwcy5uYW1lLCAmIzM0O2RwODM2NDAgdGltZXImIzM0Oyk7CiAJY2xvY2stJmd0O2NhcHMubWF4X2Fkagk9IDE5NTMxMjQ7CkBAIC05NzcsMTQgJiM0Mzs5NzIsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCWNsb2NrLSZndDtjYXBzLnNldHRpbWU2NAk9IHB0cF9kcDgzNjQwX3NldHRpbWU7CiAJY2xvY2stJmd0O2NhcHMuZW5hYmxlCT0gcHRwX2RwODM2NDBfZW5hYmxlOwogCWNsb2NrLSZndDtjYXBzLnZlcmlmeQk9IHB0cF9kcDgzNjQwX3ZlcmlmeTsKLQkvKgotCSAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi4KLQkgKi8KJiM0MzsJLyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqLwogCWRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkvKgotCSAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS4KLQkgKi8KLQlnZXRfZGV2aWNlKCZhbXA7YnVzLSZndDtkZXYpOwogfQogCiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCkBAIC05OTksNTggJiM0Mzs5ODgsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCWlmIChjbG9jaykKLQkJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQlyZXR1cm4gY2xvY2s7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLgotICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cykKLXsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCWxpc3RfZm9yX2VhY2godGhpcywgJmFtcDtwaHl0ZXJfY2xvY2tzKSB7Ci0JCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpOwotCQlpZiAodG1wLSZndDtidXMgPT0gYnVzKSB7Ci0JCQljbG9jayA9IHRtcDsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTsKLQlpZiAoIWNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYywKLQkJCQkJICAgICAgRFA4MzY0MF9OX1BJTlMpOwotCWlmICghY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZykgewotCQlrZnJlZShjbG9jayk7Ci0JCWNsb2NrID0gTlVMTDsKLQkJZ290byBvdXQ7Ci0JfQotCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTsKLQlsaXN0X2FkZF90YWlsKCZhbXA7Y2xvY2stJmd0O2xpc3QsICZhbXA7cGh5dGVyX2Nsb2Nrcyk7Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCXJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci19Ci0KIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IHJldDsKQEAgLTEzOTgsMjIgJiM0MzsxMzM1LDcwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKQogewomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTsKJiM0MzsJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CXBoeWRldiA9IGRwODM2NDAtJmd0O3BoeWRldjsKJiM0MzsJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkcDgzNjQwLSZndDt0c193b3JrKTsKJiM0MzsJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwomIzQzOwlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwomIzQzOwkJY2xvY2stJmd0O3B0cF9jbG9jayA9IE5VTEw7CiYjNDM7CQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCAmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSB7CiYjNDM7CQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKJiM0MzsJCQlpZiAodG1wID09IGRwODM2NDApIHsKJiM0MzsJCQkJbGlzdF9kZWxfaW5pdCgmYW1wO3RtcC0mZ3Q7bGlzdCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7ZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKJiM0MzsJa2ZyZWUoZHA4MzY0MCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKJiM0MzsJZXJyID0gZGV2bV9waHlfcGFja2FnZV9qb2luKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgcGh5ZGV2LAomIzQzOwkJCQkgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTsKJiM0MzsJaWYgKGVycikKIAkJZ290byBub19jbG9jazsKIAomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJcGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpOwomIzQzOwlpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKQomIzQzOwkJZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiAJZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpOwotCWlmICghZHA4MzY0MCkKJiM0MzsJaWYgKCFkcDgzNjQwKSB7CiYjNDM7CQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG5vX21lbW9yeTsKJiM0MzsJfQogCiAJZHA4MzY0MC0mZ3Q7cGh5ZGV2ID0gcGh5ZGV2OwogCWRwODM2NDAtJmd0O21paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7CkBAIC0xNDUwLDY4ICYjNDM7MTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAl9IGVsc2UKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwODM2NDAtJmd0O2xpc3QsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwogCi0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CWVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldCgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYsCiYjNDM7CQkJCSAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIG5vX3JlZ2lzdGVyOgogCWNsb2NrLSZndDtjaG9zZW4gPSBOVUxMOwomIzQzOwljbG9jay0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlOwomIzQzOwlwaHlkZXYtJmd0O21paV90cyA9IE5VTEw7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IE5VTEw7CiAJa2ZyZWUoZHA4MzY0MCk7CiBub19tZW1vcnk6Ci0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiBub19jbG9jazoKIAlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKLQlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKLQlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LSZndDtwcml2OwotCWJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7Ci0KIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybjsKIAogCXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKIAogCWVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2RwODM2NDAtJmd0O3RzX3dvcmspOwotCi0Jc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwotCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RwODM2NDAtJmd0O3R4X3F1ZXVlKTsKLQotCWNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC0mZ3Q7Y2xvY2spOwotCi0JaWYgKGRwODM2NDAgPT0gY2xvY2stJmd0O2Nob3NlbikgewotCQlwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay0mZ3Q7cHRwX2Nsb2NrKTsKLQkJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7Ci0JfSBlbHNlIHsKLQkJbGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpIHsKLQkJCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7Ci0JCQlpZiAodG1wID09IGRwODM2NDApIHsKLQkJCQlsaXN0X2RlbF9pbml0KCZhbXA7dG1wLSZndDtsaXN0KTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCX0KLQotCWlmICghY2xvY2stJmd0O2Nob3NlbiAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkpCi0JCXJlbW92ZV9jbG9jayA9IHRydWU7Ci0KLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7Ci0Ja2ZyZWUoZHA4MzY0MCk7Ci0KLQlpZiAocmVtb3ZlX2Nsb2NrKSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCQlsaXN0X2RlbCgmYW1wO2Nsb2NrLSZndDtsaXN0KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2V4dHJlZ19sb2NrKTsKLQkJbXV0ZXhfZGVzdHJveSgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQkJcHV0X2RldmljZSgmYW1wO2Nsb2NrLSZndDtidXMtJmd0O2Rldik7Ci0JCWtmcmVlKGNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpOwotCQlrZnJlZShjbG9jayk7Ci0JfQogfQogCiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKQEAgLTUyLDYgJiM0Mzs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogfQogRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpOwogCiYjNDM7LyoqCiYjNDM7ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2sKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZQomIzQzOyAqCiYjNDM7ICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9jawomIzQzOyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuCiYjNDM7ICovCiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7c2hhcmVkX2xvY2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2UKJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7c2hhcmVkX2xvY2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spOwomIzQzOwogc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCmluZGV4IDBmYmEyNDVmOTc0NTguLmM2ZTI2YWM2YjI4ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKQEAgLTEyLDYgJiM0MzsxMiw4IEBAIHN0cnVjdCBtaWlfYnVzOwogCiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IF9fcGh5X3BhY2thZ2VfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsCiAJCSAgICAgICB1MzIgcmVnbnVtKTsKIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnCmluZGV4IGI5MzY0MGNhMDhiNzIuLmZlYjUwZjhjYzQwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZwpAQCAtNzgsNiAmIzQzOzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZCiAJZGVwZW5kcyBvbiBQSFlMSUIKIAlkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLCiAJc2VsZWN0IENSQzMyCiYjNDM7CXNlbGVjdCBQSFlfUEFDS0FHRQogCWhlbHAKIAkgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy4KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTM5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZHA4MzY0MCBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY2AuIFRoaXMgc2VlbXMgdG8gYmUgcmVmYWN0b3JpbmcgaG93IHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgbWFuYWdlcyBpdHMgY2xvY2sgYW5kIHByaXZhdGUgZGF0YSwgbW92aW5nIGF3YXkgZnJvbSBhIGdsb2JhbCBsaXN0LCBgcGh5dGVyX2Nsb2Nrc2AsIHRvd2FyZHMgYHBoeV9wYWNrYWdlX2dldF9wcml2KClgIGFuZCBgZGV2bV9waHlfcGFja2FnZV9qb2luKClgLiBBbHNvLCB0aGVyZSBhcmUgbmV3IGxvY2sgZnVuY3Rpb25zIGluIGBwaHlfcGFja2FnZS5jYC4gQW5kIGl0IGxvb2tzIGxpa2UgdGhlIEtjb25maWcgaXMgYmVpbmcgdXBkYXRlZCB0byBzZWxlY3QgYFBIWV9QQUNLQUdFYCBzcGVjaWZpY2FsbHkgZm9yIGBEUDgzNjQwX1BIWWAuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkmIzM5O20gdXNlZCB0byBkZWFsaW5nIHdpdGggUEhZIGRyaXZlcnMgaW4gcmVhbCBoYXJkd2FyZSBzY2VuYXJpb3MsIGJ1dCBzb21ldGltZXMgdGhlcmUgYXJlIHNpbXVsYXRlZCBQSFlzIG9yIHZpcnR1YWwgTUFDcyB0aGF0IGludGVyYWN0IHdpdGggdGhlbS4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIGdldCBwcm9iZWQgd2hlbiBhIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgdGhlbiBzY2FucyBmb3IgUEhZcy4KCkxldCYjMzk7cyBzZWUsIHdoYXQgdmlydHVhbCBNRElPIGJ1c2VzIG9yIG5ldHdvcmsgZHJpdmVycyBhcmUgb3V0IHRoZXJlIHRoYXQgbWlnaHQgdHJpZ2dlciBQSFkgcHJvYmVzIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEkgdGhpbmsgb2YgdGhpbmdzIGxpa2UgYG1hY2JgLCBgZmVjYCwgYGUxMDAwYCAodGhvdWdoLCB3YWl0LCBkb2VzIGBlMTAwMGAgaGF2ZSBpdHMgb3duIFBIWSBjb2RlPyksIGB2aXJ0aW8tbmV0YCAobm8sIG5vdCB0aGF0IG9uZSksIGFuZCBtYXliZSBgZHNhX2xvb3BgPwoKQWN0dWFsbHksIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHN5emthbGxlciBoYXZlIGEgdmlydHVhbCBNRElPIGJ1cyBvciBjYW4gaXQgaW5qZWN0IE1ESU8gZGV2aWNlcyB0aHJvdWdoIG5ldGxpbms/IEhtbSwgbm8sIHVzdWFsbHkgc3l6a2FsbGVyIGZvY3VzZXMgb24gZnV6emluZyBVU0IgZGV2aWNlcywgd2hpY2ggKmNvdWxkKiBoYXZlIE1ESU8gYnVzZXMsIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgbGFuNzh4eGAuIFRoYXQmIzM5O3MgYSB0aG91Z2h0Li4uIFVTQiBuZXR3b3JrIGFkYXB0ZXJzISBPZnRlbiwgdGhlc2UgaGF2ZSBhbiBNRElPIGJ1cyBhbmQgY291bGQgYmluZCB0byBhIGdlbmVyaWMgb3Igc3BlY2lmaWMgUEhZIGRyaXZlci4KClNvLCBpZiBJIGVuYWJsZSBgRFA4MzY0MF9QSFlgLCBjb3VsZCBpdCBiZSBwcm9iZWQgdmlhIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB0aGF0IG1pZ2h0IGFsbG93IGFyYml0cmFyeSBQSFkgSURzPyBUaGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGtub3cuIENhbiB0aGlzIGJlIGZ1enplZD8KClRoZSBwYXRjaCBpdHNlbGYgaXMgdG91Y2hpbmcgYGRwODM2NDAuY2AgKGEgUEhZIGRyaXZlcikgYW5kIGBwaHlfcGFja2FnZS5jYCAoUEhZIHBhY2thZ2UgY29yZSkuIFRoZSBxdWVzdGlvbiBpcywgaXMgYGRwODM2NDBgIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIEkgZ3Vlc3MgSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgYERQODM2NDBfUEhZYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz0xMzc9Q09ORklHX1NQSV9QTDAyMj15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy0xMzktQ09ORklHX0dQSU9MSUI9eVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQmIzQzOz0gZGF2aWNvbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVx0JiM0Mzs9IGRwODM2NDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoyNzojZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI4LSNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDcwPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcxLXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MjpcdC5waHlfaWRcdFx0PSBEUDgzNjQwX1BIWV9JRCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3My1cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0OTI6XHR7IERQODM2NDBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTMtXHR7IH1cbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUi4gVGhlIGRyaXZlciBpdHNlbGYgaXMgcHJldHR5IHN0YW5kYXJkLCBhbmQgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgYm91bmQgdG8gYSBzcGVjaWZpYyBQSFkgSUQsIGAweDIwMDA1Y2UxYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgYmUgdXNlZCB0byB0cmljayB0aGUga2VybmVsIGludG8gcHJvYmluZyB0aGlzIGRyaXZlcj8gR2l2ZW4gaXRzIGNhcGFiaWxpdGllcywgSSB0aGluayB0aGUgYW5zd2VyIGlzIHllcy4KCkkga25vdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIG5ldHdvcmsgYWRhcHRlcnMgdXNpbmcgdGhlIGB2aGNpYCBpbnRlcmZhY2UuIFRoaXMgaXMgaG93IGl0IGludGVyYWN0cyB3aXRoIGRyaXZlcnMgbGlrZSBgc21zYzk1eHhgIG9yIGBhc2l4YC4gVGhlc2UgYWRhcHRlcnMgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCBjcnVjaWFsbHksIHRoZXkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIGEgY3JhZnRlZCBJRCwgc3VjaCBhcyBgMHgyMDAwNWNlMWAsIGR1cmluZyBNRElPIGJ1cyBzY2Fucy4gVGhpcyBzaG91bGQgZm9yY2UgdGhlIGBkcDgzNjQwYCBkcml2ZXIgdG8gYmUgcHJvYmVkLCBhbGxvd2luZyBtZSB0byBpbnRlcmFjdCB3aXRoIGl0LgoKSSBhbHNvIHJlbWVtYmVyIHN5emthbGxlciBoYXMgb3RoZXIgdG9vbHMsIGxpa2UgYHN5el9nZW5ldGxpbmtgLCB0aGF0IG1pZ2h0IGFsbG93IGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIFBIWXMsIGJ1dCBpbmplY3RpbmcgSURzIHZpYSBVU0IgZW11bGF0aW9uIGlzIHRoZSBtb3N0IGNvbW1vbiBhbmQgbGlrZWx5IHRoZSBtb3N0IHJlbGlhYmxlIG1ldGhvZCBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgpXYWl0LCBsb29raW5nIGNsb3NlciwgdGhpcyBpcyBhICpQSFkgZHJpdmVyKiwgbm90IGp1c3QgYSByYW5kb20gbmV0d29yayBkZXZpY2UuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAsIGFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBwaHlfcGFja2FnZS5jYCwgd2hpY2ggaXMgY29yZSBQSFkgY29kZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBiZWNhdXNlIGl0IG1lYW5zIHRoZSBpc3N1ZSBtYXkgYmUgaW4gYSBzaGFyZWQgcGFydC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCYjMzk7cyBkZWFsaW5nIHdpdGggbG9ja2luZywgc3BlY2lmaWNhbGx5IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzg5LVx0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzkwOlx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzkxLVx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz01Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTUtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo1NjogKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02MS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjY2OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTE0PXZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjE1OnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDEzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFBIWSBQYWNrYWdlIExvY2tpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgaW50byBgcGh5X3BhY2thZ2UuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQgaW4gdGhlIGNvcmUgb2YgdGhpbmdzLiBJJiMzOTttIHRoaW5raW5nLCBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gQWJzb2x1dGVseSwgeWVhaCwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgUEhZIGRyaXZlciwgdG91Y2hpbmcgdGhlIFBIWSBjb3JlIGl0c2VsZiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHBsYWNlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMuCgpOb3csIGhvdyBkbyB3ZSBnZXQgYXQgaXQ/IEFoLCByaWdodCwgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi4gVGhhdCYjMzk7cyBvdXIgcHJvYmUgcG9pbnQuIExldCYjMzk7cyBzZWUuLi4gd2hhdCBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmU/IEhtbSwgbGV0JiMzOTtzIGxpc3QgdGhvc2UgdXA6IGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgZnVuY3Rpb25zIHRoZW1zZWx2ZXMsIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AuCgpIYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gYGRwODM2NDBfcGh5X3JlbGVhc2VgIGlzIGEgYGRldm1gIGFjdGlvbiBjYWxsYmFjaywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyBpbiBgZHA4MzY0MC5jYCB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzE0PXN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzMzctXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzMzg6c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzM5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDQwLVx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ0MTpcdFx0XHRcdCAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ0Mi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBEUDgzNjQwX1BIWWAgZHJpdmVyIGNvZGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW1tZWRpYXRlbHkgYXJlIGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIGBkcDgzNjQwX3Byb2JlYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcHJvYmFibHkgcmVzcG9uc2libGUgZm9yIGRldmljZSBkZXRlY3Rpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBnZW5lcmFsIHNldHVwLiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgd2lsbCBiZSB0aGUgY291bnRlcnBhcnQsIGhhbmRsaW5nIGNsZWFudXAgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbiB1cG9uIGRyaXZlciB1bmxvYWQgb3IgZGV2aWNlIHJlbW92YWwuIEFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4uLiB3ZWxsLCB0aGF0JiMzOTtzIGNydWNpYWwuIFBIWXMgYXJlIG5vdG9yaW91cyBmb3IgdGhlaXIgY2xvY2tpbmcgcmVxdWlyZW1lbnRzLCBzbyBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIG1hbmFnZXMgY2xvY2sgY29uZmlndXJhdGlvbnMsIFBMTCBzZXR1cCwgYW5kIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24gZm9yIHRoZSBEUDgzNjQwLiBUaGlzIGlzIHRoZSBoZWFydCBvZiByZWxpYWJsZSBvcGVyYXRpb24uCgpOb3csIEkmIzM5O20gYWxzbyBzZWVpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBsaXN0ZWQuIFRoZXNlIHN0cm9uZ2x5IHN1Z2dlc3QgYSBsb2NraW5nIG1lY2hhbmlzbSBpcyBpbiBwbGFjZSwgcHJvYmFibHkgdG8gcHJvdGVjdCBhZ2FpbnN0IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgb3IgcHJvY2Vzc2VzIG1pZ2h0IGJlIGFjY2Vzc2luZyBvciBjb25maWd1cmluZyB0aGUgUEhZLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBsb2NrOyBpcyBpdCBhdCB0aGUgUEhZIGxldmVsLCB0aGUgcGFja2FnZSBsZXZlbCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IENvbmN1cnJlbnQgYWNjZXNzIHRvIFBIWXMgaXMgY29tbW9uLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUuIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhpcyBkcml2ZXIgaGFzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgUEhZIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uPyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBjb250ZXh0IGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHNheXMgYWJvdXQgYERQODM2NDBfUEhZYC4gVGhpcyB3aWxsIGRyaXZlIG15IG5leHQgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzNjQwX1BIWSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQyMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgUFRQIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHNwZWNpZmljIHN1YnN5c3RlbSBsaWtlIHRoaXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDc1OyBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSBzb21lIG9mIHRoZSBtb3JlIGltcG9ydGFudCB0b3AtbGV2ZWwgb3B0aW9ucywgb3IgcGVyaGFwcyBhIHNlY3Rpb24gaGVhZGluZywgd2lsbCBiZSBsb2NhdGVkLiBUaGlzIHdpbGwgbGlrZWx5IGdpdmUgbWUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtYWpvciBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgUFRQIGRyaXZlci4gS25vd2luZyB0aGF0IHN0YXJ0aW5nIHBvaW50IHdpbGwgbGlrZWx5IGFsbG93IG1lIHRvIHVuZGVyc3RhbmQgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGluIGl0cyByZWxldmFudCBjb250ZXh0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdFx0ZGVwZW5kcyBvbiBHSUFORkFSIHx8IEZTTF9EUEFBX0VUSCB8fCBGU0xfRFBBQTJfRVRIIHx8IEZTTF9FTkVUQyB8fCBGU0xfRU5FVENfVkYgfHwgQ09NUElMRV9URVNUXG4gIDYxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gIDYyOlx0XHRkZWZhdWx0IHkgaWYgR0lBTkZBUiB8fCBGU0xfRFBBQV9FVEggfHwgRlNMX0RQQUEyX0VUSCB8fCBGU0xfRU5FVEMgfHwgRlNMX0VORVRDX1ZGXG4gIDYzOlx0XHRoZWxwXG4gIDY0Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIEZyZWVzY2FsZSBRb3JJUSAxNTg4XG4gIDY1Olx0XHQgIHRpbWVyIGFzIGEgUFRQIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQXG4gIDY2Olx0XHQgIHByb2dyYW1zIGFyZSBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXRcbiAgNjc6XHRcdCAgcGFja2V0cyB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgNjg6XHRcbiAgNjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcW9yaXEuXG4gIDcxOlx0XG4gIDcyOlx0Y29tbWVudCBcJiMzNDtFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cJiMzNDtcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgRFA4MzY0MF9QSFlcbiAgNzY6XHRcdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiAgNzc6XHRcdGRlcGVuZHMgb24gTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gIDc4Olx0XHRkZXBlbmRzIG9uIFBIWUxJQlxuICA3OTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA4MDpcdFx0c2VsZWN0IENSQzMyXG4gIDgxOlx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXG4gIDg2Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxuICA4NzpcdFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xuICA4ODpcdFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBEUDgzNjQwX1BIWWAgaXMgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gdGhyZWUga2V5IGNvbXBvbmVudHM6IGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIEtub3dpbmcgbXkgZmllbGQsIHRoaXMgaW5zdGFudGx5IHNldHMgb2ZmIGEgbWVudGFsIGNoZWNrbGlzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdG8gZGlnIGludG8gdGhlIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIGRlcGVuZGVuY3kuIExldCYjMzk7cyBzdGFydCB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIHByb3ZpZGVzLCBhbmQgaG93IHRoZSBgRFA4MzY0MF9QSFlgIGxldmVyYWdlcyBpdC4gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCB0aW1pbmcgaXNzdWVzLCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMsIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgZGVlcGVyIGltcGxpY2F0aW9ucyB0aGF0IHRoaXMgUEhZIHJlcXVpcmVzIHNwZWNpZmljIGZlYXR1cmVzIGZvciBwcmVjaXNlIHRpbWVzdGFtcGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0xNTE9Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcbi0tXG5uZXQvS2NvbmZpZy0xNTMtXG5uZXQvS2NvbmZpZzoxNTQ6Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xubmV0L0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtUaW1lc3RhbXBpbmcgaW4gUEhZIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NzAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYFBUUF8xNTg4X0NMT0NLYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBvZiBjb3Vyc2UsIGlzIGEgZGlyZWN0IGNhbGwgdG8gYWN0aW9uOiAmIzM0O0xldCYjMzk7cyBjaGVjayBgUFRQXzE1ODhfQ0xPQ0tgLiYjMzQ7IE5vIGZsdWZmLCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHRhc2sgaXMgb24gdGhlIGFnZW5kYSwgbGlrZWx5IHRyb3VibGVzaG9vdGluZywgdmFsaWRhdGlvbiwgb3IgcGVyaGFwcyBzaW1wbHkgZ2F0aGVyaW5nIGRhdGEgcmVsYXRlZCB0byBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jayBmdW5jdGlvbmFsaXR5LiBUaGVyZSYjMzk7cyBhIGNvbnRleHQgaW1wbGllZCBoZXJlIOKAkyBhIHN5c3RlbSwgbmV0d29yaywgb3IgYXBwbGljYXRpb24gdGhhdCByZWxpZXMgb24gYWNjdXJhdGUgdGltZSBzeW5jaHJvbml6YXRpb24uIE15IGZvY3VzIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHdoYXRldmVyIGFzcGVjdHMgb2YgYFBUUF8xNTg4X0NMT0NLYCBuZWVkIHRvIGJlIGFkZHJlc3NlZC4gV2hlcmUmIzM5O3MgdGhlIHByb2JsZW0/IFdoYXQgbmVlZHMgdG8gYmUgdW5kZXJzdG9vZD8gV2hhdCYjMzk7cyB0aGUgbmV4dCBhY3Rpb24/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXHRib29sIFwmIzM0O0ludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVx0dHJpc3RhdGUgXCYjMzQ7SURUIDgyUDMzeHh4IFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cdHRyaXN0YXRlIFwmIzM0O0lEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlIFwmIzM0O1JFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtNb2NrLXVwIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODk2CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXR3b3JraW5nIHNldHVwIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgaW4gcGxhY2UgZm9yIHByZWNpc2UgdGltaW5nIGFuZCBzeW5jaHJvbml6YXRpb24uIE15IGNoZWNrbGlzdCBpczogYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdGltZXN0YW1waW5nLCBvYnZpb3VzbHkuIFRoZW4sIGBQSFlMSUJgIC0gb2YgY291cnNlIEkgbmVlZCB0aGUgUEhZIGxpYnJhcnkuIE5leHQgdXAsIHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIC0gdGhhdCYjMzk7cyBlc3NlbnRpYWwgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIHN1cHBvcnQsIHZpdGFsIGZvciBtYW55IG9mIG15IGFwcGxpY2F0aW9ucy4gRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYERQODM2NDBfUEhZYCBvciB0aGUgY29ycmVjdCBQSFkgZHJpdmVyLiBJdCBpcyBhbHNvIGltcG9ydGFudCB0byB2ZXJpZnkgYFBIWUxJQmAgYXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgdG8gdmVyaWZ5IGl0cyBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyODYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBQSFlMSUJgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0aGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgYXBwZWFycyB0aGF0IGBEUDgzNjQwX1BIWWAgcmVsaWVzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyBpdHMgZnVuY3Rpb25hbGl0eS4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgaG93IGBkcDgzNjQwX3Byb2JlYCBpcyBhY2Nlc3NpYmxlLiBBaCwgcmlnaHQsIHRocm91Z2ggTURJTyBidXMgc2Nhbm5pbmcuIFRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBEUDgzNjQwIGhhcmR3YXJlLCBidXQgc3l6a2FsbGVyIHByb3ZpZGVzIGEgcm91dGUsIGVtdWxhdGluZyBVU0IgZGV2aWNlcyB0aGF0IGV4cG9zZSBhbiBNRElPIGJ1cyBhbmQgbWFzcXVlcmFkaW5nIGFzIGEgRFA4MzY0MCBQSFkuIFRoaXMgc2hvdWxkIGFsbG93IGZvciB0ZXN0aW5nLgoKRnVydGhlcm1vcmUsIHRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIFRoZXNlIGFyZSAqZXhwb3J0ZWQqIHN5bWJvbHMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhleSBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgY29kZSBhbmQgdGh1cyB1c2VkIGJ5IG90aGVyIFBIWSBkcml2ZXJzLiBCdXQsIGN1cnJlbnRseSwgSSB0aGluayBvbmx5IERQODM2NDAgdXNlcyB0aGVtLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBkaWcgZGVlcGVyIHRvIGJlIHN1cmUgYWJvdXQgdGhpcyBjcm9zcy1kcml2ZXIgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzc0PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM4OS1cdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM5MDpcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM5MS1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9NTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NTY6ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoxNTp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjY3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBoeV9wYWNrYWdlX2xvY2tgIGlzIG9ubHkgdXNlZCB3aXRoaW4gYGRwODM2NDAuY2AgcmlnaHQgbm93LCB3aGljaCBpcyB0aGUga2V5IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlci4gSSYjMzk7bSB0aGlua2luZyBvZiBlbmFibGluZyBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBUaG91Z2gsIGhvbmVzdGx5LCBgUEhZTElCYCBhbmQgYFBUUF8xNTg4X0NMT0NLYCBhcmUgcHJldHR5IGNvbW1vbiBhbmQgb2Z0ZW4gZW5hYmxlZCBieSBkZWZhdWx0IG9yIG90aGVyIG5ldHdvcmsgZHJpdmVycy4gU3RpbGwsIGJldHRlciB0byBiZSB0aG9yb3VnaCBhbmQgbGlzdCB0aGVtIG91dC4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBZZXMsIGl0IGlzLCBieSB1c2luZyBVU0IgTURJTyBlbXVsYXRpb24uCgpOb3cgZm9yIGZvY3VzaW5nIG9uIGtleSBzeW1ib2xzLiBJIG5lZWQgdG8gemVybyBpbiBvbjogYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAsIGBkcDgzNjQwX2Nsb2NrX2luaXRgLCBhbmQgdGhlbiBvZiBjb3Vyc2UgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4KCkhhbmcgb24sIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljLiBZZXAsIGl0IGlzOiBgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylgLiBCZWNhdXNlIGl0JiMzOTtzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgaW4gYGRwODM2NDBfcHJvYmVgLCBpdCAqbWlnaHQqIGJlIGlubGluZWQuIExldCYjMzk7cyBxdWlja2x5IGd1ZXNzIGlmIGl0JiMzOTtzIGxhcmdlIGVub3VnaCB0byBwcmV2ZW50IGlubGluaW5nLiBJdCYjMzk7cyBhYm91dCB0d2VudHkgbGluZXMuIFByb2JhYmx5ICptaWdodCogYmUsIHNvIEkmIzM5O2xsIGp1c3QgaW5jbHVkZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYC4gQnV0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGV4cG9ydGVkLCBzbyB0aG9zZSB3b24mIzM5O3QgYmUgaW5saW5lZCBmb3Igc3VyZS4KCk9rYXksIGxldCBtZSBjaGVjayBgZHA4MzY0MF9waHlfcmVsZWFzZWAuIEl0JiMzOTtzIHN0YXRpYywgYnV0IHVzZWQgYXMgYSBjYWxsYmFjayBmb3IgYGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50ISBDYWxsYmFja3MgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gU28sIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBmb2N1cyBzeW1ib2wuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZToKCiogICBgZHA4MzY0MF9wcm9iZWAKKiAgIGBkcDgzNjQwX3BoeV9yZWxlYXNlYAoqICAgYHBoeV9wYWNrYWdlX2xvY2tgCiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYAoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2guIEl0JiMzOTtzIG1vZGlmeWluZyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEsIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBsaXN0LiBUaGF0JiMzOTtzIGdvb2QsIGFuZCBpdCYjMzk7cyBhZGRpbmcgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIEl0IHNvdW5kcyBsaWtlIGZ1bmN0aW9uYWwgY29kZSByZWFjaGVkIGJ5IHRoZSBVU0IgTURJTyBlbXVsYXRpb24uCgpBbmQgdGhlIGNvbmZpZ3VyYXRpb25zIHdlIHdlcmUgZGlzY3Vzc2luZyBhcmU6CmBEUDgzNjQwX1BIWWAKYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AKYFBIWUxJQmAKYFBUUF8xNTg4X0NMT0NLYAoKTGV0IG1lIGNoZWNrIGlmIGBQSFlfUEFDS0FHRWAgaXMgYSBjb25maWcgaXRzZWxmLiBBaCwgaXQmIzM5O3MgYHNlbGVjdCBQSFlfUEFDS0FHRWAuIEludGVyZXN0aW5nLiBTbyBpdCYjMzk7cyBzZWxlY3RlZCBieSBgRFA4MzY0MF9QSFlgLiBTbywgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZW5hYmxlIGl0IGV4cGxpY2l0bHkuIEp1c3QgaW5jbHVkZSBgRFA4MzY0MF9QSFlgLgoKTm93LCB0aW1lIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMgb24gYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQmIzM5O3Mgd2hhdCBJIHdhbnQgdG8gc2VlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODY4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogSXNvbGF0ZWQgQ29tcG9uZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyB0aGluZywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgZW50aXJlbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gc2hhcmVkIHJlc291cmNlcywgbm90aGluZy4gQSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMuIEl0JiMzOTtzIGEgY2xlYW4gc2xhdGUsIHdoaWNoIGltbWVkaWF0ZWx5IHNpbXBsaWZpZXMgdGhlIHRyb3VibGVzaG9vdGluZyBhbmQgZGVwbG95bWVudCBwcm9jZXNzLCBsZXNzIHRvIHdvcnJ5IGFib3V0LgoKTm93LCBiZWNhdXNlIGl0IGlzIGlzb2xhdGVkLCBJIHdhbnQgdG8gdGFrZSBhIGRlZXBlciBsb29rIGF0IGBQVFBfMTU4OF9DTE9DS2AuIExldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBpZiBpdCBoYXMgdGhlbS4gSSB3b3VsZCBwcmVmZXIgdG8ga25vdyBub3csIHJhdGhlciB0aGFuIGxhdGVyIHdoZW4gc29tZXRoaW5nIGdvZXMgc2lkZXdheXMuIElmIHRoaXMgcmVhbGx5IGlzIGlzb2xhdGVkLCB0aGVuIHRoaXMgdmVyaWZpY2F0aW9uIHNob3VsZCBiZSBxdWljayBhbmQgZWFzeS4gSWYgbm90Li4uIHRoYXQmIzM5O3MgYSB3aG9sZSBvdGhlciBiYWxsZ2FtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxOTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDguCgoqKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSBtYWluIEtjb25maWcgc3ltYm9sIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9yIHBvc3NpYmxlIGRlZmF1bHRzIGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkIHN0cm9rZXMgb2YgaG93IHRoZSBQVFAgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgc28gSSBjYW4gYmV0dGVyIGdyYXNwIGhvdyB0byB0YWlsb3IgbXkgc3lzdGVtcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBQT1NJWF9USU1FUlNcbiAgMTE6XHRcdGRlZmF1bHQgRVRIRVJORVRcbiAgMTI6XHRcdHNlbGVjdCBQUFNcbiAgMTM6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoZSBJRUVFIDE1ODggc3RhbmRhcmQgZGVmaW5lcyBhIG1ldGhvZCB0byBwcmVjaXNlbHlcbiAgMTY6XHRcdCAgc3luY2hyb25pemUgZGlzdHJpYnV0ZWQgY2xvY2tzIG92ZXIgRXRoZXJuZXQgbmV0d29ya3MuIFRoZVxuICAxNzpcdFx0ICBzdGFuZGFyZCBkZWZpbmVzIGEgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCksIHdoaWNoIGNhblxuICAxODpcdFx0ICBiZSB1c2VkIHRvIGFjaGlldmUgc3luY2hyb25pemF0aW9uIHdpdGhpbiBhIGZldyBkb3plblxuICAxOTpcdFx0ICBtaWNyb3NlY29uZHMuIEluIGFkZGl0aW9uLCB3aXRoIHRoZSBoZWxwIG9mIHNwZWNpYWwgaGFyZHdhcmVcbiAgMjA6XHRcdCAgdGltZSBzdGFtcGluZyB1bml0cywgaXQgY2FuIGJlIHBvc3NpYmxlIHRvIGFjaGlldmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3MjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB0d28gZXNzZW50aWFsLCBicm9hZGx5IGFjY2VwdGVkIHN0YW5kYXJkczogYE5FVGAgYW5kIGBQT1NJWF9USU1FUlNgLiBUaGF0JiMzOTtzIGEgc29saWQgZm91bmRhdGlvbi4gR2l2ZW4gdGhvc2UsIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGVzZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGludGVycGxheSBvZiB0aGVzZSB3aWxsIGRldGVybWluZSB0aGUgdWx0aW1hdGUgZnVuY3Rpb25hbGl0eS4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCBgUEhZTElCYCBmaXJzdC4gSSB3YW50IHRvIHNlZSBpZiBpdCBicmluZ3MgaW4gYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIFRob3NlIGRlcGVuZGVuY2llcyB3aWxsIGZ1cnRoZXIgZGVmaW5lIHRoZSBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODIwMwoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIERQODM2NDAgUEhZIGRyaXZlci4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IGl0JiMzOTtzIHNoaWZ0aW5nIHRvd2FyZHMgdXNpbmcgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGEgZ2xvYmFsIGxpc3QuIFNtYXJ0IG1vdmUg4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgZGlyZWN0aW9uIHdlIHdhbnQgdG8gYmUgaGVhZGVkIGZvciBiZXR0ZXIgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWwgY29uY3VycmVuY3kgY29udHJvbC4gQW5kICpQSFlMSUIqIGl0c2VsZiBoYXMgbm8gZGVwZW5kZW5jaWVzLCB0aGF0JiMzOTtzIGltcG9ydGFudCB0byBrbm93IGZvciBwb3J0YWJpbGl0eSBhbmQgZWFzZSBvZiBpbnRlZ3JhdGlvbi4KClRoZSBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCBhcmU6ICpEUDgzNjQwX1BIWSwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HLCBQSFlMSUIsIFBUUF8xNTg4X0NMT0NLKi4gR29vZCwgdGhvc2UgYWxsIG1ha2Ugc2Vuc2UgaW4gY29udGV4dC4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIGltcGFjdGVkLiBJIHNlZSB0aGUgZm9jdXMgaXMgb24gYGRwODM2NDBfcHJvYmVgIChlbnRyeSBwb2ludCBmb3IgUEhZIHByb2JpbmcpLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAgKGRldm0gcmVsZWFzZSBjYWxsYmFjaywgc3RhbmRhcmQgc3R1ZmYpLCBhbmQgdGhlIG5ldyBjb3JlIGZ1bmN0aW9ucywgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQWxsIGFyZSBub24taW5saW5lZCwgc28gZWFzaWVyIHRvIHRyYWNlLiBZZXMsIHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNvdW5kOyB0aGUgY29kZSBpcyBjZXJ0YWlubHkgcmVhY2hhYmxlLiBFbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRCBpcyBhbiBleGNlbGxlbnQgd2F5IHRvIHRlc3QgdGhpcy4KCkFscmlnaHQsIHdpdGggdGhhdCBmaW5hbCBjaGVjayBkb25lLCB0aGUgZnVuY3Rpb24gc3ltYm9scyBhbGwgbG9vayBjbGVhbiwgYW5kIHRoZSByZWFzb25pbmcgaXMgc291bmQsIEkgY2FuIHNldCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjExLjQ3ODU1MTU3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDc2NTUyMzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9waHlfcmVsZWFzZVwiLFxuICAgIFwicGh5X3BhY2thZ2VfbG9ja1wiLFxuICAgIFwicGh5X3BhY2thZ2VfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhIGluc3RlYWQgb2YgYSBnbG9iYWwgbGlzdCwgYW5kIGFkZHMgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjExLjQ3ODU1NjA4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzI5NzUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRmOWE1NWU2NzBkYzEyMmMxNzg3YmYyMGNkNjU5MDViZTU5ZmJlYWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAwOToyNTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjU0M2Y2M2VhYzljYWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NyYzMyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG5AQCAtMjEsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImRwODM2NDBfcmVnLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJwaHlsaWIuaFxcXCJcXG4gXFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuICNkZWZpbmUgUEFHRVNFTFxcdFxcdDB4MTNcXG5AQCAtMTI4LDEwICsxMzAsNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4tXFx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLVxcdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cXG4tXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4gXFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cXG4gXFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xcbiBcXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xcbkBAIC0xNDYsNiArMTQ0LDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XFxuIFxcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXFxuIFxcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcXG4rXFx0LyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovXFxuK1xcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XFxuIH07XFxuIFxcbiAvKiBnbG9iYWxzICovXFxuQEAgLTIwNiwxMCArMjA2LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiBcXHR9XFxuIH1cXG4gXFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xcbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xcbkBAIC05NTMsMTMgKzk0OSwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4ge1xcbi1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZWxpc3QpO1xcbi1cXHRjbG9jay1cXHUwMDNlYnVzID0gYnVzO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlZXh0cmVnX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuK1xcdGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cXHUwMDNlcGluX2NvbmZpZztcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcXG4gXFx0c3ByaW50ZihjbG9jay1cXHUwMDNlY2Fwcy5uYW1lLCBcXFwiZHA4MzY0MCB0aW1lclxcXCIpO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5tYXhfYWRqXFx0PSAxOTUzMTI0O1xcbkBAIC05NzcsMTQgKzk3Miw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnNldHRpbWU2NFxcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMuZW5hYmxlXFx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnZlcmlmeVxcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xcbi1cXHQvKlxcbi1cXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXFxuLVxcdCAqL1xcbitcXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXFxuIFxcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcXG4tXFx0LypcXG4tXFx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxcbi1cXHQgKi9cXG4tXFx0Z2V0X2RldmljZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXFxuQEAgLTk5OSw1OCArOTg4LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLXtcXG4tXFx0aWYgKGNsb2NrKVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuLVxcdHJldHVybiBjbG9jaztcXG4tfVxcbi1cXG4tLypcXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cXG4tICovXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLXtcXG4tXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbi1cXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFxcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XFxuLVxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xcbi1cXHRcXHRpZiAodG1wLVxcdTAwM2VidXMgPT0gYnVzKSB7XFxuLVxcdFxcdFxcdGNsb2NrID0gdG1wO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0XFx0Y2xvY2sgPSBOVUxMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuQEAgLTEzOTgsMjIgKzEzMzUsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcXG4rXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcXG4gXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbitcXG4rXFx0Y2xvY2sgPSBkcDgzNjQwLVxcdTAwM2VjbG9jaztcXG4rXFx0cGh5ZGV2ID0gZHA4MzY0MC1cXHUwMDNlcGh5ZGV2O1xcbitcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHNfd29yayk7XFxuK1xcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbitcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4rXFx0XFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdFxcdGNsb2NrLVxcdTAwM2VjaG9zZW4gPSBOVUxMO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSB7XFxuK1xcdFxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XFxuK1xcdFxcdFxcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0bXAtXFx1MDAzZWxpc3QpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IE5VTEw7XFxuK1xcdGtmcmVlKGRwODM2NDApO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbiBcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xcbi1cXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcXG4rXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRpbnQgZXJyLCBpO1xcbiBcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cXHUwMDNlbWRpby5idXMpO1xcbi1cXHRpZiAoIWNsb2NrKVxcbitcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gbm9fY2xvY2s7XFxuIFxcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCw2OCArMTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4rXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIG5vX3JlZ2lzdGVyOlxcbiBcXHRjbG9jay1cXHUwMDNlY2hvc2VuID0gTlVMTDtcXG4rXFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdHBoeWRldi1cXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtaWlfdHMgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRrZnJlZShkcDgzNjQwKTtcXG4gbm9fbWVtb3J5Olxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBub19jbG9jazpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbi1cXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xcbi1cXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuIFxcbiBcXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2V0c193b3JrKTtcXG4tXFxuLVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4tXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cXHUwMDNlY2xvY2spO1xcbi1cXG4tXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbi1cXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4tXFx0XFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpIHtcXG4tXFx0XFx0XFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcXG4tXFx0XFx0XFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XFxuLVxcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2hvc2VuIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSlcXG4tXFx0XFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcXG4tXFxuLVxcdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcXG4tXFx0a2ZyZWUoZHA4MzY0MCk7XFxuLVxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKlxcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXFxuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXFxuKyAqL1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VzaGFyZWRfbG9jayk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuK1xcbisvKipcXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKi9cXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xcbitcXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcXG4gXFx0XFx0ICAgICAgIHUzMiByZWdudW0pO1xcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxcbiBcXHRkZXBlbmRzIG9uIFBIWUxJQlxcbiBcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIFxcdHNlbGVjdCBDUkMzMlxcbitcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gXFx0aGVscFxcbiBcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjEyLjgxNjU1Njk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM5NDI3NTA5ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGY5YTU1ZTY3MGRjMTIyYzE3ODdiZjIwY2Q2NTkwNWJlNTlmYmVhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDk6MjU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNTQzZjYzZWFjOWNhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC04LDYgKzgsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCI6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuQEAgLTIxLDYgKzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImRwODM2NDBfcmVnLmhcIlxuKyNpbmNsdWRlIFwicGh5bGliLmhcIlxuIFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbiAjZGVmaW5lIFBBR0VTRUxcdFx0MHgxM1xuQEAgLTEyOCwxMCArMTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XG4gfTtcbiBcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4tXHQvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICdwaHl0ZXJfY2xvY2tzJyBsaXN0ICovXG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXG4tXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cbiBcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcbiBcdC8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovXG5AQCAtMTQ2LDYgKzE0NCw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDtcbiBcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XG4rXHQvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi9cbitcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XG4gfTtcbiBcbiAvKiBnbG9iYWxzICovXG5AQCAtMjA2LDEwICsyMDYsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gXHR9XG4gfVxuIFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xuLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7XG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xuQEAgLTk1MywxMyArOTQ5LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbitzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuIHtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0Y2xvY2stXHUwMDNlYnVzID0gYnVzO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4rXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cdTAwM2VwaW5fY29uZmlnO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5vd25lciA9IFRISVNfTU9EVUxFO1xuIFx0c3ByaW50ZihjbG9jay1cdTAwM2VjYXBzLm5hbWUsIFwiZHA4MzY0MCB0aW1lclwiKTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMubWF4X2Fkalx0PSAxOTUzMTI0O1xuQEAgLTk3NywxNCArOTcyLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdGNsb2NrLVx1MDAzZWNhcHMuc2V0dGltZTY0XHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLmVuYWJsZVx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLnZlcmlmeVx0PSBwdHBfZHA4MzY0MF92ZXJpZnk7XG4tXHQvKlxuLVx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxuLVx0ICovXG4rXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG4gXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdC8qXG4tXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuXG4tXHQgKi9cbi1cdGdldF9kZXZpY2UoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbkBAIC05OTksNTggKzk4OCw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRpZiAoY2xvY2spXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRyZXR1cm4gY2xvY2s7XG4tfVxuLVxuLS8qXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cbi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LlxuLSAqL1xuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXG4te1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFx1MDAyNnBoeXRlcl9jbG9ja3MpIHtcbi1cdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7XG4tXHRcdGlmICh0bXAtXHUwMDNlYnVzID09IGJ1cykge1xuLVx0XHRcdGNsb2NrID0gdG1wO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXHR9XG4tXHRpZiAoY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxuLVx0XHRcdFx0XHQgICAgICBEUDgzNjQwX05fUElOUyk7XG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZykge1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHRcdGNsb2NrID0gTlVMTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QsIFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi19XG4tXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgcmV0O1xuQEAgLTEzOTgsMjIgKzEzMzUsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcbitcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcDtcbitcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuK1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbitcbitcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbitcdHBoeWRldiA9IGRwODM2NDAtXHUwMDNlcGh5ZGV2O1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0c193b3JrKTtcbitcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbitcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbitcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbitcdFx0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSB7XG4rXHRcdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcbitcdFx0XHRpZiAodG1wID09IGRwODM2NDApIHtcbitcdFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2dG1wLVx1MDAzZWxpc3QpO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4rXHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbitcdGtmcmVlKGRwODM2NDApO1xuK31cbitcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbi1cdGlmICghY2xvY2spXG4rXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG4rXHRcdFx0XHQgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbitcdGlmIChlcnIpXG4gXHRcdGdvdG8gbm9fY2xvY2s7XG4gXG4rXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4rXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4rXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4rXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuK1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuK1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuK1xuIFx0ZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpO1xuLVx0aWYgKCFkcDgzNjQwKVxuK1x0aWYgKCFkcDgzNjQwKSB7XG4rXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuK1x0fVxuIFxuIFx0ZHA4MzY0MC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4gXHRkcDgzNjQwLVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7XG5AQCAtMTQ1MCw2OCArMTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4rXHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuK1x0XHRcdFx0ICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbitcdGNsb2NrLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbitcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuK1x0cGh5ZGV2LVx1MDAzZXByaXYgPSBOVUxMO1xuIFx0a2ZyZWUoZHA4MzY0MCk7XG4gbm9fbWVtb3J5OlxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIG5vX2Nsb2NrOlxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbi1cdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbi1cdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XG4tXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4gXG4gXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuLVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuLVxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbi1cbi1cdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuLVx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuLVx0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuLVx0fSBlbHNlIHtcbi1cdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbi1cdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuLVx0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuLVx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH1cbi1cdH1cbi1cbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuLVx0a2ZyZWUoZHA4MzY0MCk7XG4tXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG5pbmRleCAxNmFlOGQxYzFmODlhLi43MzU4MDZjNWJlYTg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG5AQCAtNTIsNiArNTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuIFxuKy8qKlxuKyAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4rICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbisgKlxuKyAqIFVzZSB0aGlzIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFJlbGVhc2UgdGhlIGxvY2tcbisgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLlxuKyAqL1xuK3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XG4rXG4rLyoqXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4rICovXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTtcbitcbiBzdGF0aWMgaW50IHBoeV9wYWNrYWdlX2FkZHJlc3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbmluZGV4IDBmYmEyNDVmOTc0NTguLmM2ZTI2YWM2YjI4ZjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuQEAgLTEyLDYgKzEyLDggQEAgc3RydWN0IG1paV9idXM7XG4gXG4gc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IF9fcGh5X3BhY2thZ2VfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXG4gXHRcdCAgICAgICB1MzIgcmVnbnVtKTtcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbmluZGV4IGI5MzY0MGNhMDhiNzIuLmZlYjUwZjhjYzQwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5AQCAtNzgsNiArNzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbitcdHNlbGVjdCBQSFlfUEFDS0FHRVxuIFx0aGVscFxuIFx0ICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToxMi44MTY1NTgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MjE3NjkzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBkcDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jYC4gVGhpcyBzZWVtcyB0byBiZSByZWZhY3RvcmluZyBob3cgdGhlIGRwODM2NDAgUEhZIGRyaXZlciBtYW5hZ2VzIGl0cyBjbG9jayBhbmQgcHJpdmF0ZSBkYXRhLCBtb3ZpbmcgYXdheSBmcm9tIGEgZ2xvYmFsIGxpc3QsIGBwaHl0ZXJfY2xvY2tzYCwgdG93YXJkcyBgcGh5X3BhY2thZ2VfZ2V0X3ByaXYoKWAgYW5kIGBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oKWAuIEFsc28sIHRoZXJlIGFyZSBuZXcgbG9jayBmdW5jdGlvbnMgaW4gYHBoeV9wYWNrYWdlLmNgLiBBbmQgaXQgbG9va3MgbGlrZSB0aGUgS2NvbmZpZyBpcyBiZWluZyB1cGRhdGVkIHRvIHNlbGVjdCBgUEhZX1BBQ0tBR0VgIHNwZWNpZmljYWxseSBmb3IgYERQODM2NDBfUEhZYC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gdXNlZCB0byBkZWFsaW5nIHdpdGggUEhZIGRyaXZlcnMgaW4gcmVhbCBoYXJkd2FyZSBzY2VuYXJpb3MsIGJ1dCBzb21ldGltZXMgdGhlcmUgYXJlIHNpbXVsYXRlZCBQSFlzIG9yIHZpcnR1YWwgTUFDcyB0aGF0IGludGVyYWN0IHdpdGggdGhlbS4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIGdldCBwcm9iZWQgd2hlbiBhIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgdGhlbiBzY2FucyBmb3IgUEhZcy5cblxuTGV0J3Mgc2VlLCB3aGF0IHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXR3b3JrIGRyaXZlcnMgYXJlIG91dCB0aGVyZSB0aGF0IG1pZ2h0IHRyaWdnZXIgUEhZIHByb2JlcyBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJIHRoaW5rIG9mIHRoaW5ncyBsaWtlIGBtYWNiYCwgYGZlY2AsIGBlMTAwMGAgKHRob3VnaCwgd2FpdCwgZG9lcyBgZTEwMDBgIGhhdmUgaXRzIG93biBQSFkgY29kZT8pLCBgdmlydGlvLW5ldGAgKG5vLCBub3QgdGhhdCBvbmUpLCBhbmQgbWF5YmUgYGRzYV9sb29wYD9cblxuQWN0dWFsbHksIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHN5emthbGxlciBoYXZlIGEgdmlydHVhbCBNRElPIGJ1cyBvciBjYW4gaXQgaW5qZWN0IE1ESU8gZGV2aWNlcyB0aHJvdWdoIG5ldGxpbms/IEhtbSwgbm8sIHVzdWFsbHkgc3l6a2FsbGVyIGZvY3VzZXMgb24gZnV6emluZyBVU0IgZGV2aWNlcywgd2hpY2ggKmNvdWxkKiBoYXZlIE1ESU8gYnVzZXMsIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgbGFuNzh4eGAuIFRoYXQncyBhIHRob3VnaHQuLi4gVVNCIG5ldHdvcmsgYWRhcHRlcnMhIE9mdGVuLCB0aGVzZSBoYXZlIGFuIE1ESU8gYnVzIGFuZCBjb3VsZCBiaW5kIHRvIGEgZ2VuZXJpYyBvciBzcGVjaWZpYyBQSFkgZHJpdmVyLlxuXG5TbywgaWYgSSBlbmFibGUgYERQODM2NDBfUEhZYCwgY291bGQgaXQgYmUgcHJvYmVkIHZpYSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdGhhdCBtaWdodCBhbGxvdyBhcmJpdHJhcnkgUEhZIElEcz8gVGhhdCdzIHdoYXQgSSB3YW50IHRvIGtub3cuIENhbiB0aGlzIGJlIGZ1enplZD9cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgZHA4MzY0MC5jYCAoYSBQSFkgZHJpdmVyKSBhbmQgYHBoeV9wYWNrYWdlLmNgIChQSFkgcGFja2FnZSBjb3JlKS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgZHA4MzY0MGAgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gSSBndWVzcyBJJ2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIGBEUDgzNjQwX1BIWWAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToyMi43MzgzMzA0MTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDE0MTM3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTEzNz1DT05GSUdfU1BJX1BMMDIyPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctMTM5LUNPTkZJR19HUElPTElCPXlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXFx0Kz0gZGF2aWNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNTctb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI3OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yOC0jZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0NzA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcxLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NzI6XFx0LnBoeV9pZFxcdFxcdD0gRFA4MzY0MF9QSFlfSUQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDczLVxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDkyOlxcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXFxcIkVuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo3NTpjb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToyNC4zNDg0NzcxNTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNDgzMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSLiBUaGUgZHJpdmVyIGl0c2VsZiBpcyBwcmV0dHkgc3RhbmRhcmQsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGJvdW5kIHRvIGEgc3BlY2lmaWMgUEhZIElELCBgMHgyMDAwNWNlMWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGJlIHVzZWQgdG8gdHJpY2sgdGhlIGtlcm5lbCBpbnRvIHByb2JpbmcgdGhpcyBkcml2ZXI/IEdpdmVuIGl0cyBjYXBhYmlsaXRpZXMsIEkgdGhpbmsgdGhlIGFuc3dlciBpcyB5ZXMuXG5cbkkga25vdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIG5ldHdvcmsgYWRhcHRlcnMgdXNpbmcgdGhlIGB2aGNpYCBpbnRlcmZhY2UuIFRoaXMgaXMgaG93IGl0IGludGVyYWN0cyB3aXRoIGRyaXZlcnMgbGlrZSBgc21zYzk1eHhgIG9yIGBhc2l4YC4gVGhlc2UgYWRhcHRlcnMgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCBjcnVjaWFsbHksIHRoZXkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIGEgY3JhZnRlZCBJRCwgc3VjaCBhcyBgMHgyMDAwNWNlMWAsIGR1cmluZyBNRElPIGJ1cyBzY2Fucy4gVGhpcyBzaG91bGQgZm9yY2UgdGhlIGBkcDgzNjQwYCBkcml2ZXIgdG8gYmUgcHJvYmVkLCBhbGxvd2luZyBtZSB0byBpbnRlcmFjdCB3aXRoIGl0LlxuXG5JIGFsc28gcmVtZW1iZXIgc3l6a2FsbGVyIGhhcyBvdGhlciB0b29scywgbGlrZSBgc3l6X2dlbmV0bGlua2AsIHRoYXQgbWlnaHQgYWxsb3cgZGlyZWN0IGludGVyYWN0aW9uIHdpdGggUEhZcywgYnV0IGluamVjdGluZyBJRHMgdmlhIFVTQiBlbXVsYXRpb24gaXMgdGhlIG1vc3QgY29tbW9uIGFuZCBsaWtlbHkgdGhlIG1vc3QgcmVsaWFibGUgbWV0aG9kIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci5cblxuV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoaXMgaXMgYSAqUEhZIGRyaXZlciosIG5vdCBqdXN0IGEgcmFuZG9tIG5ldHdvcmsgZGV2aWNlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGZ1bmN0aW9ucyBsaWtlIGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIFRoYXQncyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBwaHlfcGFja2FnZS5jYCwgd2hpY2ggaXMgY29yZSBQSFkgY29kZS4gVGhhdCdzIGEgZ29vZCBzaWduIGJlY2F1c2UgaXQgbWVhbnMgdGhlIGlzc3VlIG1heSBiZSBpbiBhIHNoYXJlZCBwYXJ0LiBMZXQncyBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCdzIGRlYWxpbmcgd2l0aCBsb2NraW5nLCBzcGVjaWZpY2FsbHkgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTozMS4wMDk5NjI1MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMjkwOTY1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfcGFja2FnZV9sb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTM3ND1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM4OS1cXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzkwOlxcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzOTEtXFx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTUzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjU2OiAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MTU6dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6MzIuNTQyODc3ODA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzODkwNjc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBQSFkgUGFja2FnZSBMb2NraW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgaW50byBgcGh5X3BhY2thZ2UuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQgaW4gdGhlIGNvcmUgb2YgdGhpbmdzLiBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZWFoLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBIWSBkcml2ZXIsIHRvdWNoaW5nIHRoZSBQSFkgY29yZSBpdHNlbGYsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBwbGFjZSB0byBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5Ob3csIGhvdyBkbyB3ZSBnZXQgYXQgaXQ/IEFoLCByaWdodCwgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi4gVGhhdCdzIG91ciBwcm9iZSBwb2ludC4gTGV0J3Mgc2VlLi4uIHdoYXQgYXJlIHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlPyBIbW0sIGxldCdzIGxpc3QgdGhvc2UgdXA6IGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgZnVuY3Rpb25zIHRoZW1zZWx2ZXMsIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AuXG5cbkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgaXMgYSBgZGV2bWAgYWN0aW9uIGNhbGxiYWNrLCBpc24ndCBpdD8gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyBpbiBgZHA4MzY0MC5jYCB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjM3LjA4MTc4Njk1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ5ODY1ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzE0PXN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzMzg6c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NDAtXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ0MTpcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDQyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjM4LjgzMTY1NzAzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDI5NjE0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucyBhbmQgdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBgRFA4MzY0MF9QSFlgIGRyaXZlciBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGltbWVkaWF0ZWx5IGFyZSBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYW5kIGBkcDgzNjQwX2Nsb2NrX2luaXRgLiBgZHA4MzY0MF9wcm9iZWAsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXZpY2UgZGV0ZWN0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZ2VuZXJhbCBzZXR1cC4gYGRwODM2NDBfcGh5X3JlbGVhc2VgIHdpbGwgYmUgdGhlIGNvdW50ZXJwYXJ0LCBoYW5kbGluZyBjbGVhbnVwIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24gdXBvbiBkcml2ZXIgdW5sb2FkIG9yIGRldmljZSByZW1vdmFsLiBBbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuLi4gd2VsbCwgdGhhdCdzIGNydWNpYWwuIFBIWXMgYXJlIG5vdG9yaW91cyBmb3IgdGhlaXIgY2xvY2tpbmcgcmVxdWlyZW1lbnRzLCBzbyBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIG1hbmFnZXMgY2xvY2sgY29uZmlndXJhdGlvbnMsIFBMTCBzZXR1cCwgYW5kIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24gZm9yIHRoZSBEUDgzNjQwLiBUaGlzIGlzIHRoZSBoZWFydCBvZiByZWxpYWJsZSBvcGVyYXRpb24uXG5cbk5vdywgSSdtIGFsc28gc2VlaW5nIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgbGlzdGVkLiBUaGVzZSBzdHJvbmdseSBzdWdnZXN0IGEgbG9ja2luZyBtZWNoYW5pc20gaXMgaW4gcGxhY2UsIHByb2JhYmx5IHRvIHByb3RlY3QgYWdhaW5zdCByYWNlIGNvbmRpdGlvbnMgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBtaWdodCBiZSBhY2Nlc3Npbmcgb3IgY29uZmlndXJpbmcgdGhlIFBIWS4gVGhpcyBpcyBnb29kIHByYWN0aWNlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBsb2NrOyBpcyBpdCBhdCB0aGUgUEhZIGxldmVsLCB0aGUgcGFja2FnZSBsZXZlbCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IENvbmN1cnJlbnQgYWNjZXNzIHRvIFBIWXMgaXMgY29tbW9uLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlLiBJICpuZWVkKiB0byB1bmRlcnN0YW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgZHJpdmVyIGhhcy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIFBIWSB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbj8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2lkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHNheXMgYWJvdXQgYERQODM2NDBfUEhZYC4gVGhpcyB3aWxsIGRyaXZlIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0My4zMzQ2MjA0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTEyNDcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4MzY0MF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiRHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NDQuODEzNzUxMTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzU4MTQyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgUFRQIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHNwZWNpZmljIHN1YnN5c3RlbSBsaWtlIHRoaXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgNzU7IEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSBzb21lIG9mIHRoZSBtb3JlIGltcG9ydGFudCB0b3AtbGV2ZWwgb3B0aW9ucywgb3IgcGVyaGFwcyBhIHNlY3Rpb24gaGVhZGluZywgd2lsbCBiZSBsb2NhdGVkLiBUaGlzIHdpbGwgbGlrZWx5IGdpdmUgbWUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtYWpvciBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgUFRQIGRyaXZlci4gS25vd2luZyB0aGF0IHN0YXJ0aW5nIHBvaW50IHdpbGwgbGlrZWx5IGFsbG93IG1lIHRvIHVuZGVyc3RhbmQgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGluIGl0cyByZWxldmFudCBjb250ZXh0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0OC43NDk1NjgwMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHRkZXBlbmRzIG9uIEdJQU5GQVIgfHwgRlNMX0RQQUFfRVRIIHx8IEZTTF9EUEFBMl9FVEggfHwgRlNMX0VORVRDIHx8IEZTTF9FTkVUQ19WRiB8fCBDT01QSUxFX1RFU1RcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDYyOlxcdFxcdGRlZmF1bHQgeSBpZiBHSUFORkFSIHx8IEZTTF9EUEFBX0VUSCB8fCBGU0xfRFBBQTJfRVRIIHx8IEZTTF9FTkVUQyB8fCBGU0xfRU5FVENfVkZcXG4gIDYzOlxcdFxcdGhlbHBcXG4gIDY0OlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgRnJlZXNjYWxlIFFvcklRIDE1ODhcXG4gIDY1OlxcdFxcdCAgdGltZXIgYXMgYSBQVFAgY2xvY2suIFRoaXMgY2xvY2sgaXMgb25seSB1c2VmdWwgaWYgeW91ciBQVFBcXG4gIDY2OlxcdFxcdCAgcHJvZ3JhbXMgYXJlIGdldHRpbmcgaGFyZHdhcmUgdGltZSBzdGFtcHMgb24gdGhlIFBUUCBFdGhlcm5ldFxcbiAgNjc6XFx0XFx0ICBwYWNrZXRzIHVzaW5nIHRoZSBTT19USU1FU1RBTVBJTkcgQVBJLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX3FvcmlxLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBIWUxJQj1uIHx8IE5FVFdPUktfUEhZX1RJTUVTVEFNUElORz1uXFxuICA3NDpcXHRcXG4gIDc1OlxcdGNvbmZpZyBEUDgzNjQwX1BIWVxcbiAgNzY6XFx0XFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQSFlMSUJcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDgwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODE6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXFxuICA4NjpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxcbiAgODc6XFx0XFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xcbiAgODg6XFx0XFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cXG4gIDg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0OC43NDk2MzQ3NjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyODE3ODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYERQODM2NDBfUEhZYCBpcyBpbnRyaW5zaWNhbGx5IGxpbmtlZCB0byB0aHJlZSBrZXkgY29tcG9uZW50czogYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gS25vd2luZyBteSBmaWVsZCwgdGhpcyBpbnN0YW50bHkgc2V0cyBvZmYgYSBtZW50YWwgY2hlY2tsaXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0byBkaWcgaW50byB0aGUgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AgZGVwZW5kZW5jeS4gTGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIHByb3ZpZGVzLCBhbmQgaG93IHRoZSBgRFA4MzY0MF9QSFlgIGxldmVyYWdlcyBpdC4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHRpbWluZyBpc3N1ZXMsIGludGVycnVwdCBjb25maWd1cmF0aW9ucywgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIHRoZSBkZWVwZXIgaW1wbGljYXRpb25zIHRoYXQgdGhpcyBQSFkgcmVxdWlyZXMgc3BlY2lmaWMgZmVhdHVyZXMgZm9yIHByZWNpc2UgdGltZXN0YW1waW5nLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIG9wZXJhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NTMuMDc3ODE1NjM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU4NDY4NjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuLS1cXG5uZXQvS2NvbmZpZy0xNTMtXFxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5uZXQvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo1NC41MzYyODk3MDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNzMxMjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYFBUUF8xNTg4X0NMT0NLYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCwgb2YgY291cnNlLCBpcyBhIGRpcmVjdCBjYWxsIHRvIGFjdGlvbjogXCJMZXQncyBjaGVjayBgUFRQXzE1ODhfQ0xPQ0tgLlwiIE5vIGZsdWZmLCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHRhc2sgaXMgb24gdGhlIGFnZW5kYSwgbGlrZWx5IHRyb3VibGVzaG9vdGluZywgdmFsaWRhdGlvbiwgb3IgcGVyaGFwcyBzaW1wbHkgZ2F0aGVyaW5nIGRhdGEgcmVsYXRlZCB0byBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jayBmdW5jdGlvbmFsaXR5LiBUaGVyZSdzIGEgY29udGV4dCBpbXBsaWVkIGhlcmUg4oCTIGEgc3lzdGVtLCBuZXR3b3JrLCBvciBhcHBsaWNhdGlvbiB0aGF0IHJlbGllcyBvbiBhY2N1cmF0ZSB0aW1lIHN5bmNocm9uaXphdGlvbi4gTXkgZm9jdXMgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gd2hhdGV2ZXIgYXNwZWN0cyBvZiBgUFRQXzE1ODhfQ0xPQ0tgIG5lZWQgdG8gYmUgYWRkcmVzc2VkLiBXaGVyZSdzIHRoZSBwcm9ibGVtPyBXaGF0IG5lZWRzIHRvIGJlIHVuZGVyc3Rvb2Q/IFdoYXQncyB0aGUgbmV4dCBhY3Rpb24/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTcwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NTguOTQzNjA0NTIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI2OTIyMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI2OjAwLjM3MDUzMDU5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDg4MDM2NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldHdvcmtpbmcgc2V0dXAgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGluIHBsYWNlIGZvciBwcmVjaXNlIHRpbWluZyBhbmQgc3luY2hyb25pemF0aW9uLiBNeSBjaGVja2xpc3QgaXM6IGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdGltZXN0YW1waW5nLCBvYnZpb3VzbHkuIFRoZW4sIGBQSFlMSUJgIC0gb2YgY291cnNlIEkgbmVlZCB0aGUgUEhZIGxpYnJhcnkuIE5leHQgdXAsIHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIC0gdGhhdCdzIGVzc2VudGlhbCBmb3IgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgc3VwcG9ydCwgdml0YWwgZm9yIG1hbnkgb2YgbXkgYXBwbGljYXRpb25zLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBEUDgzNjQwX1BIWWAgb3IgdGhlIGNvcnJlY3QgUEhZIGRyaXZlci4gSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gdmVyaWZ5IGBQSFlMSUJgIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRvIHZlcmlmeSBpdHMgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4OTYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNjowNy44NTg1Njg4NTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzQ4MzI0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjY6MDkuMjkzNDA3OTM1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODM5ODA2MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gY29uZmlybWluZyB0aGF0IGBQSFlMSUJgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0aGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgYXBwZWFycyB0aGF0IGBEUDgzNjQwX1BIWWAgcmVsaWVzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyBpdHMgZnVuY3Rpb25hbGl0eS5cblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGRwODM2NDBfcHJvYmVgIGlzIGFjY2Vzc2libGUuIEFoLCByaWdodCwgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZy4gVGhhdCBjbGFyaWZpZXMgdGhpbmdzLiBJdCBzZWVtcyBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgRFA4MzY0MCBoYXJkd2FyZSwgYnV0IHN5emthbGxlciBwcm92aWRlcyBhIHJvdXRlLCBlbXVsYXRpbmcgVVNCIGRldmljZXMgdGhhdCBleHBvc2UgYW4gTURJTyBidXMgYW5kIG1hc3F1ZXJhZGluZyBhcyBhIERQODM2NDAgUEhZLiBUaGlzIHNob3VsZCBhbGxvdyBmb3IgdGVzdGluZy5cblxuRnVydGhlcm1vcmUsIHRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIFRoZXNlIGFyZSAqZXhwb3J0ZWQqIHN5bWJvbHMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhleSBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgY29kZSBhbmQgdGh1cyB1c2VkIGJ5IG90aGVyIFBIWSBkcml2ZXJzLiBCdXQsIGN1cnJlbnRseSwgSSB0aGluayBvbmx5IERQODM2NDAgdXNlcyB0aGVtLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCdzIGRpZyBkZWVwZXIgdG8gYmUgc3VyZSBhYm91dCB0aGlzIGNyb3NzLWRyaXZlciB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyODYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MzE6NTcuNjkxNDczMDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzcyNTgzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3BhY2thZ2VfbG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzODktXFx0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM5MDpcXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzkxLVxcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz01Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy01NS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo1NjogKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02MS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NjY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9MTQ9dm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjE1OnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjMxOjU5LjE2ODczNjQ3NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg0MjIwMjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcGh5X3BhY2thZ2VfbG9ja2AgaXMgb25seSB1c2VkIHdpdGhpbiBgZHA4MzY0MC5jYCByaWdodCBub3csIHdoaWNoIGlzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaGVyZS5cblxuTGV0J3MgcXVpY2tseSByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlci4gSSdtIHRoaW5raW5nIG9mIGVuYWJsaW5nIGBEUDgzNjQwX1BIWWAsIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIFRob3VnaCwgaG9uZXN0bHksIGBQSFlMSUJgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgIGFyZSBwcmV0dHkgY29tbW9uIGFuZCBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igb3RoZXIgbmV0d29yayBkcml2ZXJzLiBTdGlsbCwgYmV0dGVyIHRvIGJlIHRob3JvdWdoIGFuZCBsaXN0IHRoZW0gb3V0LlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBZZXMsIGl0IGlzLCBieSB1c2luZyBVU0IgTURJTyBlbXVsYXRpb24uXG5cbk5vdyBmb3IgZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMuIEkgbmVlZCB0byB6ZXJvIGluIG9uOiBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYGRwODM2NDBfY2xvY2tfaW5pdGAsIGFuZCB0aGVuIG9mIGNvdXJzZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgLlxuXG5IYW5nIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrIGlmIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYy4gWWVwLCBpdCBpczogYHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spYC4gQmVjYXVzZSBpdCdzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgaW4gYGRwODM2NDBfcHJvYmVgLCBpdCAqbWlnaHQqIGJlIGlubGluZWQuIExldCdzIHF1aWNrbHkgZ3Vlc3MgaWYgaXQncyBsYXJnZSBlbm91Z2ggdG8gcHJldmVudCBpbmxpbmluZy4gSXQncyBhYm91dCB0d2VudHkgbGluZXMuIFByb2JhYmx5ICptaWdodCogYmUsIHNvIEknbGwganVzdCBpbmNsdWRlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBCdXQgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBhcmUgZXhwb3J0ZWQsIHNvIHRob3NlIHdvbid0IGJlIGlubGluZWQgZm9yIHN1cmUuXG5cbk9rYXksIGxldCBtZSBjaGVjayBgZHA4MzY0MF9waHlfcmVsZWFzZWAuIEl0J3Mgc3RhdGljLCBidXQgdXNlZCBhcyBhIGNhbGxiYWNrIGZvciBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YC4gVGhhdCdzIGltcG9ydGFudCEgQ2FsbGJhY2tzIGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gU28sIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBmb2N1cyBzeW1ib2wuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOlxuXG4qICAgYGRwODM2NDBfcHJvYmVgXG4qICAgYGRwODM2NDBfcGh5X3JlbGVhc2VgXG4qICAgYHBoeV9wYWNrYWdlX2xvY2tgXG4qICAgYHBoeV9wYWNrYWdlX3VubG9ja2BcblxuTm93LCBsZXQncyByZXZpZXcgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaC4gSXQncyBtb2RpZnlpbmcgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhLCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgbGlzdC4gVGhhdCdzIGdvb2QsIGFuZCBpdCdzIGFkZGluZyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gSXQgc291bmRzIGxpa2UgZnVuY3Rpb25hbCBjb2RlIHJlYWNoZWQgYnkgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi5cblxuQW5kIHRoZSBjb25maWd1cmF0aW9ucyB3ZSB3ZXJlIGRpc2N1c3NpbmcgYXJlOlxuYERQODM2NDBfUEhZYFxuYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BcbmBQSFlMSUJgXG5gUFRQXzE1ODhfQ0xPQ0tgXG5cbkxldCBtZSBjaGVjayBpZiBgUEhZX1BBQ0tBR0VgIGlzIGEgY29uZmlnIGl0c2VsZi4gQWgsIGl0J3MgYHNlbGVjdCBQSFlfUEFDS0FHRWAuIEludGVyZXN0aW5nLiBTbyBpdCdzIHNlbGVjdGVkIGJ5IGBEUDgzNjQwX1BIWWAuIFNvLCB3ZSBkb24ndCBuZWVkIHRvIGVuYWJsZSBpdCBleHBsaWNpdGx5LiBKdXN0IGluY2x1ZGUgYERQODM2NDBfUEhZYC5cblxuTm93LCB0aW1lIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMgb24gYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQncyB3aGF0IEkgd2FudCB0byBzZWUgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MzI6MTAuMDEwOTQxMTc4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTIwNDM4MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuLS1cXG5uZXQvS2NvbmZpZy0xNTMtXFxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5uZXQvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxMS41MzEzODUzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxODAxNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBJc29sYXRlZCBDb21wb25lbnQqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyB0aGluZywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgZW50aXJlbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gc2hhcmVkIHJlc291cmNlcywgbm90aGluZy4gQSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMuIEl0J3MgYSBjbGVhbiBzbGF0ZSwgd2hpY2ggaW1tZWRpYXRlbHkgc2ltcGxpZmllcyB0aGUgdHJvdWJsZXNob290aW5nIGFuZCBkZXBsb3ltZW50IHByb2Nlc3MsIGxlc3MgdG8gd29ycnkgYWJvdXQuXG5cbk5vdywgYmVjYXVzZSBpdCBpcyBpc29sYXRlZCwgSSB3YW50IHRvIHRha2UgYSBkZWVwZXIgbG9vayBhdCBgUFRQXzE1ODhfQ0xPQ0tgLiBMZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBpZiBpdCBoYXMgdGhlbS4gSSB3b3VsZCBwcmVmZXIgdG8ga25vdyBub3csIHJhdGhlciB0aGFuIGxhdGVyIHdoZW4gc29tZXRoaW5nIGdvZXMgc2lkZXdheXMuIElmIHRoaXMgcmVhbGx5IGlzIGlzb2xhdGVkLCB0aGVuIHRoaXMgdmVyaWZpY2F0aW9uIHNob3VsZCBiZSBxdWljayBhbmQgZWFzeS4gSWYgbm90Li4uIHRoYXQncyBhIHdob2xlIG90aGVyIGJhbGxnYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg2OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjMyOjE0LjY1MzE4ODcxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTIyMDM1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjktXFxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctOTItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIlpIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXFx0dHJpc3RhdGUgXFxcIklEVCA4MlAzM3h4eCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cXHR0cmlzdGF0ZSBcXFwiSURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXFx0dHJpc3RhdGUgXFxcIlJFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cXHR0cmlzdGF0ZSBcXFwiT3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxNi4xMzI0MTM2ODRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5NTU0Njc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgOC5cblxuKipFeGFtaW5pbmcgdGhlIFBUUCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBsaW5lIDgsIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBkcml2ZXJzIGluIHRoZSBrZXJuZWwuIEtub3dpbmcgdGhlIGZpbGUgc3RydWN0dXJlIGZyb20gcGFzdCBleHBlcmllbmNlcywgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgcG9pbnQgd2hlcmUgdGhlIGJyb2FkIGZlYXR1cmUgc2V0IGlzIGRlZmluZWQuIEknbSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1haW4gS2NvbmZpZyBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb3IgcG9zc2libGUgZGVmYXVsdHMgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhlIFBUUCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCBmcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBzbyBJIGNhbiBiZXR0ZXIgZ3Jhc3AgaG93IHRvIHRhaWxvciBteSBzeXN0ZW1zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmluZXIgZGV0YWlscyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxOS44Mjc5NjI1NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQVFAgY2xvY2sgc3VwcG9ydCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IFBPU0lYX1RJTUVSU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCBFVEhFUk5FVFxcbiAgMTI6XFx0XFx0c2VsZWN0IFBQU1xcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxcbiAgMTY6XFx0XFx0ICBzeW5jaHJvbml6ZSBkaXN0cmlidXRlZCBjbG9ja3Mgb3ZlciBFdGhlcm5ldCBuZXR3b3Jrcy4gVGhlXFxuICAxNzpcXHRcXHQgIHN0YW5kYXJkIGRlZmluZXMgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSwgd2hpY2ggY2FuXFxuICAxODpcXHRcXHQgIGJlIHVzZWQgdG8gYWNoaWV2ZSBzeW5jaHJvbml6YXRpb24gd2l0aGluIGEgZmV3IGRvemVuXFxuICAxOTpcXHRcXHQgIG1pY3Jvc2Vjb25kcy4gSW4gYWRkaXRpb24sIHdpdGggdGhlIGhlbHAgb2Ygc3BlY2lhbCBoYXJkd2FyZVxcbiAgMjA6XFx0XFx0ICB0aW1lIHN0YW1waW5nIHVuaXRzLCBpdCBjYW4gYmUgcG9zc2libGUgdG8gYWNoaWV2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxOS44MjgwMzcyNDNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMjY3OTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHR3byBlc3NlbnRpYWwsIGJyb2FkbHkgYWNjZXB0ZWQgc3RhbmRhcmRzOiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIEdpdmVuIHRob3NlLCBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGVzZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGludGVycGxheSBvZiB0aGVzZSB3aWxsIGRldGVybWluZSB0aGUgdWx0aW1hdGUgZnVuY3Rpb25hbGl0eS5cblxuTGV0IG1lIHRha2UgYSBsb29rIGF0IGBQSFlMSUJgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGlmIGl0IGJyaW5ncyBpbiBhbnkgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gVGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgZnVydGhlciBkZWZpbmUgdGhlIGJ1aWxkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoyMy4zNTA3MTg3MjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoyMy4zNTA3OTE2MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgxNzE2MzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIERQODM2NDAgUEhZIGRyaXZlci4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IGl0J3Mgc2hpZnRpbmcgdG93YXJkcyB1c2luZyB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBnbG9iYWwgbGlzdC4gU21hcnQgbW92ZSDigJMgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGRpcmVjdGlvbiB3ZSB3YW50IHRvIGJlIGhlYWRlZCBmb3IgYmV0dGVyIG9yZ2FuaXphdGlvbiBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGNvbnRyb2wuIEFuZCAqUEhZTElCKiBpdHNlbGYgaGFzIG5vIGRlcGVuZGVuY2llcywgdGhhdCdzIGltcG9ydGFudCB0byBrbm93IGZvciBwb3J0YWJpbGl0eSBhbmQgZWFzZSBvZiBpbnRlZ3JhdGlvbi5cblxuVGhlIGNvbmZpZyBvcHRpb25zIGludm9sdmVkIGFyZTogKkRQODM2NDBfUEhZLCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcsIFBIWUxJQiwgUFRQXzE1ODhfQ0xPQ0sqLiBHb29kLCB0aG9zZSBhbGwgbWFrZSBzZW5zZSBpbiBjb250ZXh0LlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmdW5jdGlvbiBjYWxscyB0aGF0IGFyZSBpbXBhY3RlZC4gSSBzZWUgdGhlIGZvY3VzIGlzIG9uIGBkcDgzNjQwX3Byb2JlYCAoZW50cnkgcG9pbnQgZm9yIFBIWSBwcm9iaW5nKSwgYGRwODM2NDBfcGh5X3JlbGVhc2VgIChkZXZtIHJlbGVhc2UgY2FsbGJhY2ssIHN0YW5kYXJkIHN0dWZmKSwgYW5kIHRoZSBuZXcgY29yZSBmdW5jdGlvbnMsIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIEFsbCBhcmUgbm9uLWlubGluZWQsIHNvIGVhc2llciB0byB0cmFjZS4gWWVzLCB0aGlzIGlzIGZ1bmN0aW9uYWxseSBzb3VuZDsgdGhlIGNvZGUgaXMgY2VydGFpbmx5IHJlYWNoYWJsZS4gRW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQgaXMgYW4gZXhjZWxsZW50IHdheSB0byB0ZXN0IHRoaXMuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBmaW5hbCBjaGVjayBkb25lLCB0aGUgZnVuY3Rpb24gc3ltYm9scyBhbGwgbG9vayBjbGVhbiwgYW5kIHRoZSByZWFzb25pbmcgaXMgc291bmQsIEkgY2FuIHNldCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIwMywiT3V0cHV0VG9rZW5zIjoxNzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjozMi4xNjc5NTY4NjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjEwNzMyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBQSFkgcGFja2FnZSBjb3JlIGZvciBzaGFyZWQgZGF0YSBpbnN0ZWFkIG9mIGEgZ2xvYmFsIGxpc3QsIGFuZCBhZGRzIGxvY2tpbmcgZnVuY3Rpb25zIHRvIHRoZSBQSFkgcGFja2FnZSBjb3JlLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgd2l0aCBhbiBNRElPIGJ1cyBhbmQgdGhlIERQODM2NDAgUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 08:35:15 +0000 UTC FinishedAt: 2026-08-07 09:32:33 +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": "594d905195024b228c962627ae5ae7c17bd582a4", "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": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DP83640_PHY", "NETWORK_PHY_TIMESTAMPING", "PHYLIB", "PTP_1588_CLOCK" ], "series_id": "df5a4671-3e6b-41d8-acfa-0758156db8b9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dp83640_probe", "dp83640_phy_release", "phy_package_lock", "phy_package_unlock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RQODM2NDBfUEhZJiMzNDssCiAgICAmIzM0O05FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UFRQXzE1ODhfQ0xPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcDgzNjQwX3Byb2JlJiMzNDssCiAgICAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhIGluc3RlYWQgb2YgYSBnbG9iYWwgbGlzdCwgYW5kIGFkZHMgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZjlhNTVlNjcwZGMxMjJjMTc4N2JmMjBjZDY1OTA1YmU1OWZiZWFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwOToyNTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNTQzZjYzZWFjOWNhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwmIzM0OzogXCYjMzQ7IGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlL2RldnJlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saXN0LmhcdTAwM2VcbkBAIC0yMSw2ICYjNDM7MjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2RwODM2NDBfcmVnLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cGh5bGliLmhcJiMzNDtcbiBcbiAjZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG4gI2RlZmluZSBQQUdFU0VMXHRcdDB4MTNcbkBAIC0xMjgsMTAgJiM0MzsxMzAsNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcbiB9O1xuIFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbi1cdC8qIGtlZXBzIHRoZSBpbnN0YW5jZSBpbiB0aGUgJiMzOTtwaHl0ZXJfY2xvY2tzJiMzOTsgbGlzdCAqL1xuLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLVx0Lyogd2UgY3JlYXRlIG9uZSBjbG9jayBpbnN0YW5jZSBwZXIgTUlJIGJ1cyAqL1xuLVx0c3RydWN0IG1paV9idXMgKmJ1cztcbiBcdC8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovXG4gXHRzdHJ1Y3QgbXV0ZXggZXh0cmVnX2xvY2s7XG4gXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xuQEAgLTE0Niw2ICYjNDM7MTQ0LDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBwaHlsaXN0O1xuIFx0LyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcbiYjNDM7XHQvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi9cbiYjNDM7XHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdO1xuIH07XG4gXG4gLyogZ2xvYmFscyAqL1xuQEAgLTIwNiwxMCAmIzQzOzIwNiw2IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjICpwZClcbiBcdH1cbiB9XG4gXG4tLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovXG4tc3RhdGljIExJU1RfSEVBRChwaHl0ZXJfY2xvY2tzKTtcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4gc3RhdGljIHZvaWQgcnhfdGltZXN0YW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovXG5AQCAtOTUzLDEzICYjNDM7OTQ5LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbiB7XG4tXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdGNsb2NrLVx1MDAzZWJ1cyA9IGJ1cztcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpO1xuJiM0MztcdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGNsb2NrLVx1MDAzZXBpbl9jb25maWc7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7XG4gXHRzcHJpbnRmKGNsb2NrLVx1MDAzZWNhcHMubmFtZSwgXCYjMzQ7ZHA4MzY0MCB0aW1lclwmIzM0Oyk7XG4gXHRjbG9jay1cdTAwM2VjYXBzLm1heF9hZGpcdD0gMTk1MzEyNDtcbkBAIC05NzcsMTQgJiM0Mzs5NzIsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuIFx0Y2xvY2stXHUwMDNlY2Fwcy5zZXR0aW1lNjRcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMuZW5hYmxlXHQ9IHB0cF9kcDgzNjQwX2VuYWJsZTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMudmVyaWZ5XHQ9IHB0cF9kcDgzNjQwX3ZlcmlmeTtcbi1cdC8qXG4tXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXG4tXHQgKi9cbiYjNDM7XHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG4gXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdC8qXG4tXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuXG4tXHQgKi9cbi1cdGdldF9kZXZpY2UoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbkBAIC05OTksNTggJiM0Mzs5ODgsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXG4te1xuLVx0aWYgKGNsb2NrKVxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0cmV0dXJuIGNsb2NrO1xuLX1cbi1cbi0vKlxuLSAqIExvb2sgdXAgYW5kIGxvY2sgYSBjbG9jayBieSBidXMgaW5zdGFuY2UuXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cbi0gKi9cbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0X2J1cyhzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxuLXtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayA9IE5VTEwsICp0bXA7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzO1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0bGlzdF9mb3JfZWFjaCh0aGlzLCBcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XG4tXHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xuLVx0XHRpZiAodG1wLVx1MDAzZWJ1cyA9PSBidXMpIHtcbi1cdFx0XHRjbG9jayA9IHRtcDtcbi1cdFx0XHRicmVhaztcbi1cdFx0fVxuLVx0fVxuLVx0aWYgKGNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrID0ga3phbGxvY19vYmooc3RydWN0IGRwODM2NDBfY2xvY2spO1xuLVx0aWYgKCFjbG9jaylcbi1cdFx0Z290byBvdXQ7XG4tXG4tXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYyxcbi1cdFx0XHRcdFx0ICAgICAgRFA4MzY0MF9OX1BJTlMpO1xuLVx0aWYgKCFjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpIHtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0XHRjbG9jayA9IE5VTEw7XG4tXHRcdGdvdG8gb3V0O1xuLVx0fVxuLVx0ZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrLCBidXMpO1xuLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0LCBcdTAwMjZwaHl0ZXJfY2xvY2tzKTtcbi1vdXQ6XG4tXHRtdXRleF91bmxvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cbi1cdHJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tfVxuLVxuIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4ge1xuIFx0aW50IHJldDtcbkBAIC0xMzk4LDIyICYjNDM7MTMzNSw3MCBAQCBzdGF0aWMgaW50IGRwODM2NDBfdHNfaW5mbyhzdHJ1Y3QgbWlpX3RpbWVzdGFtcGVyICptaWlfdHMsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcbiB7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCA9IGRhdGE7XG4mIzQzO1x0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuJiM0MztcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4mIzQzO1xuJiM0MztcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbiYjNDM7XHRwaHlkZXYgPSBkcDgzNjQwLVx1MDAzZXBoeWRldjtcbiYjNDM7XHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiYjNDM7XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0c193b3JrKTtcbiYjNDM7XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4mIzQzO1x0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuJiM0MztcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbiYjNDM7XHRcdGNsb2NrLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4mIzQzO1x0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuJiM0MztcdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuJiM0MztcdFx0XHRpZiAodG1wID09IGRwODM2NDApIHtcbiYjNDM7XHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiYjNDM7XHRrZnJlZShkcDgzNjQwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiBcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDA7XG4tXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcbiYjNDM7XHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4mIzQzO1x0aW50IGVyciwgaTtcbiBcbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cdTAwM2VtZGlvLmJ1cyk7XG4tXHRpZiAoIWNsb2NrKVxuJiM0MztcdGVyciA9IGRldm1fcGh5X3BhY2thZ2Vfam9pbihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsIHBoeWRldixcbiYjNDM7XHRcdFx0XHQgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRnb3RvIG5vX2Nsb2NrO1xuIFxuJiM0MztcdGNsb2NrID0gcGh5X3BhY2thZ2VfZ2V0X3ByaXYocGh5ZGV2KTtcbiYjNDM7XHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4mIzQzO1x0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuJiM0MztcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4mIzQzO1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuJiM0MztcdHBoeV9wYWNrYWdlX3VubG9jayhwaHlkZXYpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuJiM0MztcbiBcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcbi1cdGlmICghZHA4MzY0MClcbiYjNDM7XHRpZiAoIWRwODM2NDApIHtcbiYjNDM7XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuJiM0MztcdH1cbiBcbiBcdGRwODM2NDAtXHUwMDNlcGh5ZGV2ID0gcGh5ZGV2O1xuIFx0ZHA4MzY0MC1cdTAwM2VtaWlfdHMucnh0c3RhbXAgPSBkcDgzNjQwX3J4dHN0YW1wO1xuQEAgLTE0NTAsNjggJiM0MzsxNDM1LDM2IEBAIHN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIFx0fSBlbHNlXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHA4MzY0MC1cdTAwM2VsaXN0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KTtcbiBcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4mIzQzO1xuJiM0MztcdGVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbiYjNDM7XHRjbG9jay1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2VkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuJiM0MztcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbiBcdGtmcmVlKGRwODM2NDApO1xuIG5vX21lbW9yeTpcbi1cdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4gbm9fY2xvY2s6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuIHtcbi1cdHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaztcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuLVx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wLCAqZHA4MzY0MCA9IHBoeWRldi1cdTAwM2Vwcml2O1xuLVx0Ym9vbCByZW1vdmVfY2xvY2sgPSBmYWxzZTtcbi1cbiBcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwaHlkZXYtXHUwMDNlbWlpX3RzID0gTlVMTDtcbiBcbiBcdGVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRwODM2NDAtXHUwMDNldHNfd29yayk7XG4tXG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2VyeF9xdWV1ZSk7XG4tXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0eF9xdWV1ZSk7XG4tXG4tXHRjbG9jayA9IGRwODM2NDBfY2xvY2tfZ2V0KGRwODM2NDAtXHUwMDNlY2xvY2spO1xuLVxuLVx0aWYgKGRwODM2NDAgPT0gY2xvY2stXHUwMDNlY2hvc2VuKSB7XG4tXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLVx1MDAzZXB0cF9jbG9jayk7XG4tXHRcdGNsb2NrLVx1MDAzZWNob3NlbiA9IE5VTEw7XG4tXHR9IGVsc2Uge1xuLVx0XHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkge1xuLVx0XHRcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XG4tXHRcdFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XG4tXHRcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnRtcC1cdTAwM2VsaXN0KTtcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdH1cbi1cdFx0fVxuLVx0fVxuLVxuLVx0aWYgKCFjbG9jay1cdTAwM2VjaG9zZW4gXHUwMDI2XHUwMDI2IGxpc3RfZW1wdHkoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCkpXG4tXHRcdHJlbW92ZV9jbG9jayA9IHRydWU7XG4tXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4tXHRrZnJlZShkcDgzNjQwKTtcbi1cbi1cdGlmIChyZW1vdmVfY2xvY2spIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVx0XHRsaXN0X2RlbChcdTAwMjZjbG9jay1cdTAwM2VsaXN0KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2Y2xvY2stXHUwMDNlZXh0cmVnX2xvY2spO1xuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuLVx0XHRwdXRfZGV2aWNlKFx1MDAyNmNsb2NrLVx1MDAzZWJ1cy1cdTAwM2VkZXYpO1xuLVx0XHRrZnJlZShjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcpO1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHR9XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbkBAIC01Miw2ICYjNDM7NTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbiYjNDM7ICpcbiYjNDM7ICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9ja1xuJiM0MzsgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VzaGFyZWRfbG9jayk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxuJiM0MzsgKi9cbiYjNDM7dm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlc2hhcmVkX2xvY2spO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX3VubG9jayk7XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5X3BhY2thZ2VfYWRkcmVzcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaCBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXG5AQCAtMTIsNiAmIzQzOzEyLDggQEAgc3RydWN0IG1paV9idXM7XG4gXG4gc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbiBcdFx0ICAgICAgIHUzMiByZWdudW0pO1xuIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3B0cC9LY29uZmlnIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbkBAIC03OCw2ICYjNDM7NzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbiYjNDM7XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbiBcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUDgzNjQwX1BIWSYjMzQ7LAogICAgJiMzNDtORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHA4MzY0MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtkcDgzNjQwX3BoeV9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0OywKICAgICYjMzQ7cGh5X3BhY2thZ2VfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBQSFkgcGFja2FnZSBjb3JlIGZvciBzaGFyZWQgZGF0YSBpbnN0ZWFkIG9mIGEgZ2xvYmFsIGxpc3QsIGFuZCBhZGRzIGxvY2tpbmcgZnVuY3Rpb25zIHRvIHRoZSBQSFkgcGFja2FnZSBjb3JlLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgd2l0aCBhbiBNRElPIGJ1cyBhbmQgdGhlIERQODM2NDAgUEhZIElELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGY5YTU1ZTY3MGRjMTIyYzE3ODdiZjIwY2Q2NTkwNWJlNTlmYmVhZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDk6MjU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYwppbmRleCA5ODQ3MmFiZGQzOTIwLi41NDNmNjNlYWM5Y2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAmIzM0OzogJiMzNDsgZm10CiAKICNpbmNsdWRlICZsdDtsaW51eC9jcmMzMi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UvZGV2cmVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRodG9vbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKQEAgLTIxLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2RwODM2NDBfcmVnLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cGh5bGliLmgmIzM0OwogCiAjZGVmaW5lIERQODM2NDBfUEhZX0lECTB4MjAwMDVjZTEKICNkZWZpbmUgUEFHRVNFTAkJMHgxMwpAQCAtMTI4LDEwICYjNDM7MTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7CiB9OwogCiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7Ci0JLyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAmIzM5O3BoeXRlcl9jbG9ja3MmIzM5OyBsaXN0ICovCi0Jc3RydWN0IGxpc3RfaGVhZCBsaXN0OwotCS8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi8KLQlzdHJ1Y3QgbWlpX2J1cyAqYnVzOwogCS8qIHByb3RlY3RzIGV4dGVuZGVkIHJlZ2lzdGVycyBmcm9tIGNvbmN1cnJlbnQgYWNjZXNzICovCiAJc3RydWN0IG11dGV4IGV4dHJlZ19sb2NrOwogCS8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovCkBAIC0xNDYsNiAmIzQzOzE0NCw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7CiAJLyogcmVmZXJlbmNlIHRvIG91ciBQVFAgaGFyZHdhcmUgY2xvY2sgKi8KIAlzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7CiYjNDM7CS8qIHByb3RlY3RlZCBieSB0aGUgUFRQIGNvcmUgcGluIGNvbmZpZ3VyYXRpb24gbG9jayAqLwomIzQzOwlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIHBpbl9jb25maWdbRFA4MzY0MF9OX1BJTlNdOwogfTsKIAogLyogZ2xvYmFscyAqLwpAQCAtMjA2LDEwICYjNDM7MjA2LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKQogCX0KIH0KIAotLyogYSBsaXN0IG9mIGNsb2NrcyBhbmQgYSBtdXRleCB0byBwcm90ZWN0IGl0ICovCi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpOwotc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spOwotCiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiAvKiBleHRlbmRlZCByZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovCkBAIC05NTMsMTMgJiM0Mzs5NDksMTIgQEAgc3RhdGljIHZvaWQgZGVjb2RlX3N0YXR1c19mcmFtZShzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwLAogCX0KIH0KIAotc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cykKJiM0MztzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQogewotCUlOSVRfTElTVF9IRUFEKCZhbXA7Y2xvY2stJmd0O2xpc3QpOwotCWNsb2NrLSZndDtidXMgPSBidXM7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtleHRyZWdfbG9jayk7CiAJbXV0ZXhfaW5pdCgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KTsKJiM0MzsJY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZyA9IGNsb2NrLSZndDtwaW5fY29uZmlnOwogCWNsb2NrLSZndDtjYXBzLm93bmVyID0gVEhJU19NT0RVTEU7CiAJc3ByaW50ZihjbG9jay0mZ3Q7Y2Fwcy5uYW1lLCAmIzM0O2RwODM2NDAgdGltZXImIzM0Oyk7CiAJY2xvY2stJmd0O2NhcHMubWF4X2Fkagk9IDE5NTMxMjQ7CkBAIC05NzcsMTQgJiM0Mzs5NzIsOCBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLCBzdHJ1Y3QgbWlpX2J1cyAqYnVzKQogCWNsb2NrLSZndDtjYXBzLnNldHRpbWU2NAk9IHB0cF9kcDgzNjQwX3NldHRpbWU7CiAJY2xvY2stJmd0O2NhcHMuZW5hYmxlCT0gcHRwX2RwODM2NDBfZW5hYmxlOwogCWNsb2NrLSZndDtjYXBzLnZlcmlmeQk9IHB0cF9kcDgzNjQwX3ZlcmlmeTsKLQkvKgotCSAqIENvbnZlcnQgdGhlIG1vZHVsZSBwYXJhbSBkZWZhdWx0cyBpbnRvIGEgZHluYW1pYyBwaW4gY29uZmlndXJhdGlvbi4KLQkgKi8KJiM0MzsJLyogSW5pdGlhbGl6ZSB0aGUgcnVudGltZSBwaW4gY29uZmlndXJhdGlvbiBmcm9tIGdwaW9fdGFiLiAqLwogCWRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay0mZ3Q7Y2Fwcy5waW5fY29uZmlnKTsKLQkvKgotCSAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIGJ1cyBpbnN0YW5jZS4KLQkgKi8KLQlnZXRfZGV2aWNlKCZhbXA7YnVzLSZndDtkZXYpOwogfQogCiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCkBAIC05OTksNTggJiM0Mzs5ODgsNiBAQCBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKQotewotCWlmIChjbG9jaykKLQkJbXV0ZXhfbG9jaygmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQlyZXR1cm4gY2xvY2s7Ci19Ci0KLS8qCi0gKiBMb29rIHVwIGFuZCBsb2NrIGEgY2xvY2sgYnkgYnVzIGluc3RhbmNlLgotICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldF9idXMoc3RydWN0IG1paV9idXMgKmJ1cykKLXsKLQlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2sgPSBOVUxMLCAqdG1wOwotCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7Ci0KLQltdXRleF9sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCWxpc3RfZm9yX2VhY2godGhpcywgJmFtcDtwaHl0ZXJfY2xvY2tzKSB7Ci0JCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpOwotCQlpZiAodG1wLSZndDtidXMgPT0gYnVzKSB7Ci0JCQljbG9jayA9IHRtcDsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCWlmIChjbG9jaykKLQkJZ290byBvdXQ7Ci0KLQljbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTsKLQlpZiAoIWNsb2NrKQotCQlnb3RvIG91dDsKLQotCWNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcgPSBremFsbG9jX29ianMoc3RydWN0IHB0cF9waW5fZGVzYywKLQkJCQkJICAgICAgRFA4MzY0MF9OX1BJTlMpOwotCWlmICghY2xvY2stJmd0O2NhcHMucGluX2NvbmZpZykgewotCQlrZnJlZShjbG9jayk7Ci0JCWNsb2NrID0gTlVMTDsKLQkJZ290byBvdXQ7Ci0JfQotCWRwODM2NDBfY2xvY2tfaW5pdChjbG9jaywgYnVzKTsKLQlsaXN0X2FkZF90YWlsKCZhbXA7Y2xvY2stJmd0O2xpc3QsICZhbXA7cGh5dGVyX2Nsb2Nrcyk7Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCXJldHVybiBkcDgzNjQwX2Nsb2NrX2dldChjbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfcHV0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaykKLXsKLQltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7Ci19Ci0KIHN0YXRpYyBpbnQgZHA4MzY0MF9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7CiAJaW50IHJldDsKQEAgLTEzOTgsMjIgJiM0MzsxMzM1LDcwIEBAIHN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cywKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKQogewomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTsKJiM0MzsJc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wOwomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKIAlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7CiYjNDM7CiYjNDM7CWNsb2NrID0gZHA4MzY0MC0mZ3Q7Y2xvY2s7CiYjNDM7CXBoeWRldiA9IGRwODM2NDAtJmd0O3BoeWRldjsKJiM0MzsJcGh5ZGV2LSZndDttaWlfdHMgPSBOVUxMOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkcDgzNjQwLSZndDt0c193b3JrKTsKJiM0MzsJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwomIzQzOwlza2JfcXVldWVfcHVyZ2UoJmFtcDtkcDgzNjQwLSZndDt0eF9xdWV1ZSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CWlmIChkcDgzNjQwID09IGNsb2NrLSZndDtjaG9zZW4pIHsKJiM0MzsJCXB0cF9jbG9ja191bnJlZ2lzdGVyKGNsb2NrLSZndDtwdHBfY2xvY2spOwomIzQzOwkJY2xvY2stJmd0O3B0cF9jbG9jayA9IE5VTEw7CiYjNDM7CQljbG9jay0mZ3Q7Y2hvc2VuID0gTlVMTDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCAmYW1wO2Nsb2NrLSZndDtwaHlsaXN0KSB7CiYjNDM7CQkJdG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTsKJiM0MzsJCQlpZiAodG1wID09IGRwODM2NDApIHsKJiM0MzsJCQkJbGlzdF9kZWxfaW5pdCgmYW1wO3RtcC0mZ3Q7bGlzdCk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfQomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CXBoeWRldi0mZ3Q7ZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTsKJiM0MzsJcGh5ZGV2LSZndDtwcml2ID0gTlVMTDsKJiM0MzsJa2ZyZWUoZHA4MzY0MCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKIAlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwOwotCWludCBlcnIgPSAtRU5PTUVNLCBpOwomIzQzOwlzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7CiYjNDM7CWludCBlcnIsIGk7CiAKIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybiAwOwogCi0JY2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LSZndDttZGlvLmJ1cyk7Ci0JaWYgKCFjbG9jaykKJiM0MzsJZXJyID0gZGV2bV9waHlfcGFja2FnZV9qb2luKCZhbXA7cGh5ZGV2LSZndDttZGlvLmRldiwgcGh5ZGV2LAomIzQzOwkJCQkgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTsKJiM0MzsJaWYgKGVycikKIAkJZ290byBub19jbG9jazsKIAomIzQzOwljbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7CiYjNDM7CS8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi8KJiM0MzsJcGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpOwomIzQzOwlpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKQomIzQzOwkJZHA4MzY0MF9jbG9ja19pbml0KGNsb2NrKTsKJiM0MzsJcGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiAJZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpOwotCWlmICghZHA4MzY0MCkKJiM0MzsJaWYgKCFkcDgzNjQwKSB7CiYjNDM7CQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG5vX21lbW9yeTsKJiM0MzsJfQogCiAJZHA4MzY0MC0mZ3Q7cGh5ZGV2ID0gcGh5ZGV2OwogCWRwODM2NDAtJmd0O21paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7CkBAIC0xNDUwLDY4ICYjNDM7MTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAl9IGVsc2UKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwODM2NDAtJmd0O2xpc3QsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpOwogCi0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiYjNDM7CiYjNDM7CWVyciA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldCgmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYsCiYjNDM7CQkJCSAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIG5vX3JlZ2lzdGVyOgogCWNsb2NrLSZndDtjaG9zZW4gPSBOVUxMOwomIzQzOwljbG9jay0mZ3Q7cHRwX2Nsb2NrID0gTlVMTDsKJiM0MzsJcGh5ZGV2LSZndDtkZWZhdWx0X3RpbWVzdGFtcCA9IGZhbHNlOwomIzQzOwlwaHlkZXYtJmd0O21paV90cyA9IE5VTEw7CiYjNDM7CXBoeWRldi0mZ3Q7cHJpdiA9IE5VTEw7CiAJa2ZyZWUoZHA4MzY0MCk7CiBub19tZW1vcnk6Ci0JZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjbG9jay0mZ3Q7Y2xvY2tfbG9jayk7CiBub19jbG9jazoKIAlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgdm9pZCBkcDgzNjQwX3JlbW92ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogewotCXN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jazsKLQlzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDsKLQlzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LSZndDtwcml2OwotCWJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7Ci0KIAlpZiAocGh5ZGV2LSZndDttZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpCiAJCXJldHVybjsKIAogCXBoeWRldi0mZ3Q7bWlpX3RzID0gTlVMTDsKIAogCWVuYWJsZV9zdGF0dXNfZnJhbWVzKHBoeWRldiwgZmFsc2UpOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2RwODM2NDAtJmd0O3RzX3dvcmspOwotCi0Jc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZHA4MzY0MC0mZ3Q7cnhfcXVldWUpOwotCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2RwODM2NDAtJmd0O3R4X3F1ZXVlKTsKLQotCWNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC0mZ3Q7Y2xvY2spOwotCi0JaWYgKGRwODM2NDAgPT0gY2xvY2stJmd0O2Nob3NlbikgewotCQlwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay0mZ3Q7cHRwX2Nsb2NrKTsKLQkJY2xvY2stJmd0O2Nob3NlbiA9IE5VTEw7Ci0JfSBlbHNlIHsKLQkJbGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsICZhbXA7Y2xvY2stJmd0O3BoeWxpc3QpIHsKLQkJCXRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7Ci0JCQlpZiAodG1wID09IGRwODM2NDApIHsKLQkJCQlsaXN0X2RlbF9pbml0KCZhbXA7dG1wLSZndDtsaXN0KTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCX0KLQotCWlmICghY2xvY2stJmd0O2Nob3NlbiAmYW1wOyZhbXA7IGxpc3RfZW1wdHkoJmFtcDtjbG9jay0mZ3Q7cGh5bGlzdCkpCi0JCXJlbW92ZV9jbG9jayA9IHRydWU7Ci0KLQlkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7Ci0Ja2ZyZWUoZHA4MzY0MCk7Ci0KLQlpZiAocmVtb3ZlX2Nsb2NrKSB7Ci0JCW11dGV4X2xvY2soJmFtcDtwaHl0ZXJfY2xvY2tzX2xvY2spOwotCQlsaXN0X2RlbCgmYW1wO2Nsb2NrLSZndDtsaXN0KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5dGVyX2Nsb2Nrc19sb2NrKTsKLQotCQltdXRleF9kZXN0cm95KCZhbXA7Y2xvY2stJmd0O2V4dHJlZ19sb2NrKTsKLQkJbXV0ZXhfZGVzdHJveSgmYW1wO2Nsb2NrLSZndDtjbG9ja19sb2NrKTsKLQkJcHV0X2RldmljZSgmYW1wO2Nsb2NrLSZndDtidXMtJmd0O2Rldik7Ci0JCWtmcmVlKGNsb2NrLSZndDtjYXBzLnBpbl9jb25maWcpOwotCQlrZnJlZShjbG9jayk7Ci0JfQogfQogCiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKaW5kZXggMTZhZThkMWMxZjg5YS4uNzM1ODA2YzViZWE4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMKQEAgLTUyLDYgJiM0Mzs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogfQogRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpOwogCiYjNDM7LyoqCiYjNDM7ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2sKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZQomIzQzOyAqCiYjNDM7ICogVXNlIHRoaXMgdG8gc2VyaWFsaXplIGFjY2VzcyB0byBwYWNrYWdlLXByaXZhdGUgZGF0YS4gUmVsZWFzZSB0aGUgbG9jawomIzQzOyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuCiYjNDM7ICovCiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7cGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7c2hhcmVkX2xvY2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBwaHlfcGFja2FnZV91bmxvY2sgLSByZWxlYXNlIHRoZSBQSFkgcGFja2FnZSBsb2NrCiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2UKJiM0MzsgKi8KJiM0Mzt2b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQomIzQzO3sKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5ZGV2LSZndDttZGlvLmJ1cy0mZ3Q7c2hhcmVkX2xvY2spOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spOwomIzQzOwogc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oCmluZGV4IDBmYmEyNDVmOTc0NTguLmM2ZTI2YWM2YjI4ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmgKQEAgLTEyLDYgJiM0MzsxMiw4IEBAIHN0cnVjdCBtaWlfYnVzOwogCiBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9wYWNrYWdlX2dldF9ub2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CiYjNDM7dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwomIzQzO3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogaW50IF9fcGh5X3BhY2thZ2VfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsCiAJCSAgICAgICB1MzIgcmVnbnVtKTsKIGludCBfX3BoeV9wYWNrYWdlX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnCmluZGV4IGI5MzY0MGNhMDhiNzIuLmZlYjUwZjhjYzQwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHRwL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wdHAvS2NvbmZpZwpAQCAtNzgsNiAmIzQzOzc4LDcgQEAgY29uZmlnIERQODM2NDBfUEhZCiAJZGVwZW5kcyBvbiBQSFlMSUIKIAlkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLCiAJc2VsZWN0IENSQzMyCiYjNDM7CXNlbGVjdCBQSFlfUEFDS0FHRQogCWhlbHAKIAkgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy4KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTM5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZHA4MzY0MCBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY2AuIFRoaXMgc2VlbXMgdG8gYmUgcmVmYWN0b3JpbmcgaG93IHRoZSBkcDgzNjQwIFBIWSBkcml2ZXIgbWFuYWdlcyBpdHMgY2xvY2sgYW5kIHByaXZhdGUgZGF0YSwgbW92aW5nIGF3YXkgZnJvbSBhIGdsb2JhbCBsaXN0LCBgcGh5dGVyX2Nsb2Nrc2AsIHRvd2FyZHMgYHBoeV9wYWNrYWdlX2dldF9wcml2KClgIGFuZCBgZGV2bV9waHlfcGFja2FnZV9qb2luKClgLiBBbHNvLCB0aGVyZSBhcmUgbmV3IGxvY2sgZnVuY3Rpb25zIGluIGBwaHlfcGFja2FnZS5jYC4gQW5kIGl0IGxvb2tzIGxpa2UgdGhlIEtjb25maWcgaXMgYmVpbmcgdXBkYXRlZCB0byBzZWxlY3QgYFBIWV9QQUNLQUdFYCBzcGVjaWZpY2FsbHkgZm9yIGBEUDgzNjQwX1BIWWAuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkmIzM5O20gdXNlZCB0byBkZWFsaW5nIHdpdGggUEhZIGRyaXZlcnMgaW4gcmVhbCBoYXJkd2FyZSBzY2VuYXJpb3MsIGJ1dCBzb21ldGltZXMgdGhlcmUgYXJlIHNpbXVsYXRlZCBQSFlzIG9yIHZpcnR1YWwgTUFDcyB0aGF0IGludGVyYWN0IHdpdGggdGhlbS4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIGdldCBwcm9iZWQgd2hlbiBhIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgdGhlbiBzY2FucyBmb3IgUEhZcy4KCkxldCYjMzk7cyBzZWUsIHdoYXQgdmlydHVhbCBNRElPIGJ1c2VzIG9yIG5ldHdvcmsgZHJpdmVycyBhcmUgb3V0IHRoZXJlIHRoYXQgbWlnaHQgdHJpZ2dlciBQSFkgcHJvYmVzIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEkgdGhpbmsgb2YgdGhpbmdzIGxpa2UgYG1hY2JgLCBgZmVjYCwgYGUxMDAwYCAodGhvdWdoLCB3YWl0LCBkb2VzIGBlMTAwMGAgaGF2ZSBpdHMgb3duIFBIWSBjb2RlPyksIGB2aXJ0aW8tbmV0YCAobm8sIG5vdCB0aGF0IG9uZSksIGFuZCBtYXliZSBgZHNhX2xvb3BgPwoKQWN0dWFsbHksIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHN5emthbGxlciBoYXZlIGEgdmlydHVhbCBNRElPIGJ1cyBvciBjYW4gaXQgaW5qZWN0IE1ESU8gZGV2aWNlcyB0aHJvdWdoIG5ldGxpbms/IEhtbSwgbm8sIHVzdWFsbHkgc3l6a2FsbGVyIGZvY3VzZXMgb24gZnV6emluZyBVU0IgZGV2aWNlcywgd2hpY2ggKmNvdWxkKiBoYXZlIE1ESU8gYnVzZXMsIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgbGFuNzh4eGAuIFRoYXQmIzM5O3MgYSB0aG91Z2h0Li4uIFVTQiBuZXR3b3JrIGFkYXB0ZXJzISBPZnRlbiwgdGhlc2UgaGF2ZSBhbiBNRElPIGJ1cyBhbmQgY291bGQgYmluZCB0byBhIGdlbmVyaWMgb3Igc3BlY2lmaWMgUEhZIGRyaXZlci4KClNvLCBpZiBJIGVuYWJsZSBgRFA4MzY0MF9QSFlgLCBjb3VsZCBpdCBiZSBwcm9iZWQgdmlhIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB0aGF0IG1pZ2h0IGFsbG93IGFyYml0cmFyeSBQSFkgSURzPyBUaGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGtub3cuIENhbiB0aGlzIGJlIGZ1enplZD8KClRoZSBwYXRjaCBpdHNlbGYgaXMgdG91Y2hpbmcgYGRwODM2NDAuY2AgKGEgUEhZIGRyaXZlcikgYW5kIGBwaHlfcGFja2FnZS5jYCAoUEhZIHBhY2thZ2UgY29yZSkuIFRoZSBxdWVzdGlvbiBpcywgaXMgYGRwODM2NDBgIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIEkgZ3Vlc3MgSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgYERQODM2NDBfUEhZYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFA4MzY0MF9QSFkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz0xMzc9Q09ORklHX1NQSV9QTDAyMj15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy0xMzktQ09ORklHX0dQSU9MSUI9eVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQmIzQzOz0gZGF2aWNvbS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVx0JiM0Mzs9IGRwODM2NDAub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTU3LW9iai0kKENPTkZJR19EUDgzODIyX1BIWSlcdCYjNDM7PSBkcDgzODIyLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoyNzojZGVmaW5lIERQODM2NDBfUEhZX0lEXHQweDIwMDA1Y2UxXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTI4LSNkZWZpbmUgUEFHRVNFTFx0XHQweDEzXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xNDcwPXN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkcDgzNjQwX2RyaXZlcltdID0ge1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcxLXtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ3MjpcdC5waHlfaWRcdFx0PSBEUDgzNjQwX1BIWV9JRCxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ3My1cdC5waHlfaWRfbWFza1x0PSAweGZmZmZmZmYwLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0OTI6XHR7IERQODM2NDBfUEhZX0lELCAweGZmZmZmZmYwIH0sXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTMtXHR7IH1cbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgZm9yIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUi4gVGhlIGRyaXZlciBpdHNlbGYgaXMgcHJldHR5IHN0YW5kYXJkLCBhbmQgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgYm91bmQgdG8gYSBzcGVjaWZpYyBQSFkgSUQsIGAweDIwMDA1Y2UxYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgYmUgdXNlZCB0byB0cmljayB0aGUga2VybmVsIGludG8gcHJvYmluZyB0aGlzIGRyaXZlcj8gR2l2ZW4gaXRzIGNhcGFiaWxpdGllcywgSSB0aGluayB0aGUgYW5zd2VyIGlzIHllcy4KCkkga25vdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIG5ldHdvcmsgYWRhcHRlcnMgdXNpbmcgdGhlIGB2aGNpYCBpbnRlcmZhY2UuIFRoaXMgaXMgaG93IGl0IGludGVyYWN0cyB3aXRoIGRyaXZlcnMgbGlrZSBgc21zYzk1eHhgIG9yIGBhc2l4YC4gVGhlc2UgYWRhcHRlcnMgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCBjcnVjaWFsbHksIHRoZXkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIGEgY3JhZnRlZCBJRCwgc3VjaCBhcyBgMHgyMDAwNWNlMWAsIGR1cmluZyBNRElPIGJ1cyBzY2Fucy4gVGhpcyBzaG91bGQgZm9yY2UgdGhlIGBkcDgzNjQwYCBkcml2ZXIgdG8gYmUgcHJvYmVkLCBhbGxvd2luZyBtZSB0byBpbnRlcmFjdCB3aXRoIGl0LgoKSSBhbHNvIHJlbWVtYmVyIHN5emthbGxlciBoYXMgb3RoZXIgdG9vbHMsIGxpa2UgYHN5el9nZW5ldGxpbmtgLCB0aGF0IG1pZ2h0IGFsbG93IGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIFBIWXMsIGJ1dCBpbmplY3RpbmcgSURzIHZpYSBVU0IgZW11bGF0aW9uIGlzIHRoZSBtb3N0IGNvbW1vbiBhbmQgbGlrZWx5IHRoZSBtb3N0IHJlbGlhYmxlIG1ldGhvZCBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgpXYWl0LCBsb29raW5nIGNsb3NlciwgdGhpcyBpcyBhICpQSFkgZHJpdmVyKiwgbm90IGp1c3QgYSByYW5kb20gbmV0d29yayBkZXZpY2UuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAsIGFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBwaHlfcGFja2FnZS5jYCwgd2hpY2ggaXMgY29yZSBQSFkgY29kZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBiZWNhdXNlIGl0IG1lYW5zIHRoZSBpc3N1ZSBtYXkgYmUgaW4gYSBzaGFyZWQgcGFydC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCYjMzk7cyBkZWFsaW5nIHdpdGggbG9ja2luZywgc3BlY2lmaWNhbGx5IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X3BhY2thZ2VfbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzg5LVx0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzkwOlx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzkxLVx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz01Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTUtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo1NjogKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2Vcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02MS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjY2OkVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2xvY2spO1xuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oPTE0PXZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjE1OnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDEzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFBIWSBQYWNrYWdlIExvY2tpbmcqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgaW50byBgcGh5X3BhY2thZ2UuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQgaW4gdGhlIGNvcmUgb2YgdGhpbmdzLiBJJiMzOTttIHRoaW5raW5nLCBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gQWJzb2x1dGVseSwgeWVhaCwgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgUEhZIGRyaXZlciwgdG91Y2hpbmcgdGhlIFBIWSBjb3JlIGl0c2VsZiwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHBsYWNlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBpc3N1ZXMuCgpOb3csIGhvdyBkbyB3ZSBnZXQgYXQgaXQ/IEFoLCByaWdodCwgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi4gVGhhdCYjMzk7cyBvdXIgcHJvYmUgcG9pbnQuIExldCYjMzk7cyBzZWUuLi4gd2hhdCBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmU/IEhtbSwgbGV0JiMzOTtzIGxpc3QgdGhvc2UgdXA6IGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgZnVuY3Rpb25zIHRoZW1zZWx2ZXMsIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AuCgpIYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gYGRwODM2NDBfcGh5X3JlbGVhc2VgIGlzIGEgYGRldm1gIGFjdGlvbiBjYWxsYmFjaywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyBpbiBgZHA4MzY0MC5jYCB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RwODM2NDBfcGh5X3JlbGVhc2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzE0PXN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzMzctXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzMzg6c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzM5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDQwLVx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldixcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ0MTpcdFx0XHRcdCAgICAgICBkcDgzNjQwX3BoeV9yZWxlYXNlLCBkcDgzNjQwKTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTQ0Mi1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zIGFuZCB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBEUDgzNjQwX1BIWWAgZHJpdmVyIGNvZGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgaW1tZWRpYXRlbHkgYXJlIGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIGBkcDgzNjQwX3Byb2JlYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgcHJvYmFibHkgcmVzcG9uc2libGUgZm9yIGRldmljZSBkZXRlY3Rpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBnZW5lcmFsIHNldHVwLiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgd2lsbCBiZSB0aGUgY291bnRlcnBhcnQsIGhhbmRsaW5nIGNsZWFudXAgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbiB1cG9uIGRyaXZlciB1bmxvYWQgb3IgZGV2aWNlIHJlbW92YWwuIEFuZCBgZHA4MzY0MF9jbG9ja19pbml0YC4uLiB3ZWxsLCB0aGF0JiMzOTtzIGNydWNpYWwuIFBIWXMgYXJlIG5vdG9yaW91cyBmb3IgdGhlaXIgY2xvY2tpbmcgcmVxdWlyZW1lbnRzLCBzbyBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIG1hbmFnZXMgY2xvY2sgY29uZmlndXJhdGlvbnMsIFBMTCBzZXR1cCwgYW5kIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24gZm9yIHRoZSBEUDgzNjQwLiBUaGlzIGlzIHRoZSBoZWFydCBvZiByZWxpYWJsZSBvcGVyYXRpb24uCgpOb3csIEkmIzM5O20gYWxzbyBzZWVpbmcgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBsaXN0ZWQuIFRoZXNlIHN0cm9uZ2x5IHN1Z2dlc3QgYSBsb2NraW5nIG1lY2hhbmlzbSBpcyBpbiBwbGFjZSwgcHJvYmFibHkgdG8gcHJvdGVjdCBhZ2FpbnN0IHJhY2UgY29uZGl0aW9ucyB3aGVuIG11bHRpcGxlIHRocmVhZHMgb3IgcHJvY2Vzc2VzIG1pZ2h0IGJlIGFjY2Vzc2luZyBvciBjb25maWd1cmluZyB0aGUgUEhZLiBUaGlzIGlzIGdvb2QgcHJhY3RpY2UuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBsb2NrOyBpcyBpdCBhdCB0aGUgUEhZIGxldmVsLCB0aGUgcGFja2FnZSBsZXZlbCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IENvbmN1cnJlbnQgYWNjZXNzIHRvIFBIWXMgaXMgY29tbW9uLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUuIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhpcyBkcml2ZXIgaGFzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgUEhZIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gQXJlIHRoZXJlIHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uPyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBjb250ZXh0IGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHNheXMgYWJvdXQgYERQODM2NDBfUEhZYC4gVGhpcyB3aWxsIGRyaXZlIG15IG5leHQgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUDgzNjQwX1BIWSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXCYjMzQ7RW5hYmxlIFBIWUxJQiBhbmQgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HIHRvIHNlZSB0aGUgYWRkaXRpb25hbCBjbG9ja3MuXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy03NC1cbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVx0dHJpc3RhdGUgXCYjMzQ7RHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQyMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgUFRQIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHNwZWNpZmljIHN1YnN5c3RlbSBsaWtlIHRoaXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDc1OyBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSBzb21lIG9mIHRoZSBtb3JlIGltcG9ydGFudCB0b3AtbGV2ZWwgb3B0aW9ucywgb3IgcGVyaGFwcyBhIHNlY3Rpb24gaGVhZGluZywgd2lsbCBiZSBsb2NhdGVkLiBUaGlzIHdpbGwgbGlrZWx5IGdpdmUgbWUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtYWpvciBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgUFRQIGRyaXZlci4gS25vd2luZyB0aGF0IHN0YXJ0aW5nIHBvaW50IHdpbGwgbGlrZWx5IGFsbG93IG1lIHRvIHVuZGVyc3RhbmQgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGluIGl0cyByZWxldmFudCBjb250ZXh0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdFx0ZGVwZW5kcyBvbiBHSUFORkFSIHx8IEZTTF9EUEFBX0VUSCB8fCBGU0xfRFBBQTJfRVRIIHx8IEZTTF9FTkVUQyB8fCBGU0xfRU5FVENfVkYgfHwgQ09NUElMRV9URVNUXG4gIDYxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gIDYyOlx0XHRkZWZhdWx0IHkgaWYgR0lBTkZBUiB8fCBGU0xfRFBBQV9FVEggfHwgRlNMX0RQQUEyX0VUSCB8fCBGU0xfRU5FVEMgfHwgRlNMX0VORVRDX1ZGXG4gIDYzOlx0XHRoZWxwXG4gIDY0Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgdGhlIEZyZWVzY2FsZSBRb3JJUSAxNTg4XG4gIDY1Olx0XHQgIHRpbWVyIGFzIGEgUFRQIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQXG4gIDY2Olx0XHQgIHByb2dyYW1zIGFyZSBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXRcbiAgNjc6XHRcdCAgcGFja2V0cyB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgNjg6XHRcbiAgNjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcW9yaXEuXG4gIDcxOlx0XG4gIDcyOlx0Y29tbWVudCBcJiMzNDtFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cJiMzNDtcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEhZTElCPW4gfHwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HPW5cbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgRFA4MzY0MF9QSFlcbiAgNzY6XHRcdHRyaXN0YXRlIFwmIzM0O0RyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcJiMzNDtcbiAgNzc6XHRcdGRlcGVuZHMgb24gTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gIDc4Olx0XHRkZXBlbmRzIG9uIFBIWUxJQlxuICA3OTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA4MDpcdFx0c2VsZWN0IENSQzMyXG4gIDgxOlx0XHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiAgODI6XHRcdGhlbHBcbiAgODM6XHRcdCAgU3VwcG9ydHMgdGhlIERQODM2NDAgUEhZVEVSIHdpdGggSUVFRSAxNTg4IGZlYXR1cmVzLlxuICA4NDpcdFxuICA4NTpcdFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXG4gIDg2Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxuICA4NzpcdFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xuICA4ODpcdFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cbiAgODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBEUDgzNjQwX1BIWWAgaXMgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gdGhyZWUga2V5IGNvbXBvbmVudHM6IGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIEtub3dpbmcgbXkgZmllbGQsIHRoaXMgaW5zdGFudGx5IHNldHMgb2ZmIGEgbWVudGFsIGNoZWNrbGlzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdG8gZGlnIGludG8gdGhlIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIGRlcGVuZGVuY3kuIExldCYjMzk7cyBzdGFydCB0aGVyZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIHByb3ZpZGVzLCBhbmQgaG93IHRoZSBgRFA4MzY0MF9QSFlgIGxldmVyYWdlcyBpdC4gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCB0aW1pbmcgaXNzdWVzLCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMsIGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgZGVlcGVyIGltcGxpY2F0aW9ucyB0aGF0IHRoaXMgUEhZIHJlcXVpcmVzIHNwZWNpZmljIGZlYXR1cmVzIGZvciBwcmVjaXNlIHRpbWVzdGFtcGluZy4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0xNTE9Y29uZmlnIE5FVF9QVFBfQ0xBU1NJRllcbi0tXG5uZXQvS2NvbmZpZy0xNTMtXG5uZXQvS2NvbmZpZzoxNTQ6Y29uZmlnIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xubmV0L0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtUaW1lc3RhbXBpbmcgaW4gUEhZIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NzAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYFBUUF8xNTg4X0NMT0NLYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBvZiBjb3Vyc2UsIGlzIGEgZGlyZWN0IGNhbGwgdG8gYWN0aW9uOiAmIzM0O0xldCYjMzk7cyBjaGVjayBgUFRQXzE1ODhfQ0xPQ0tgLiYjMzQ7IE5vIGZsdWZmLCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHRhc2sgaXMgb24gdGhlIGFnZW5kYSwgbGlrZWx5IHRyb3VibGVzaG9vdGluZywgdmFsaWRhdGlvbiwgb3IgcGVyaGFwcyBzaW1wbHkgZ2F0aGVyaW5nIGRhdGEgcmVsYXRlZCB0byBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jayBmdW5jdGlvbmFsaXR5LiBUaGVyZSYjMzk7cyBhIGNvbnRleHQgaW1wbGllZCBoZXJlIOKAkyBhIHN5c3RlbSwgbmV0d29yaywgb3IgYXBwbGljYXRpb24gdGhhdCByZWxpZXMgb24gYWNjdXJhdGUgdGltZSBzeW5jaHJvbml6YXRpb24uIE15IGZvY3VzIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHdoYXRldmVyIGFzcGVjdHMgb2YgYFBUUF8xNTg4X0NMT0NLYCBuZWVkIHRvIGJlIGFkZHJlc3NlZC4gV2hlcmUmIzM5O3MgdGhlIHByb2JsZW0/IFdoYXQgbmVlZHMgdG8gYmUgdW5kZXJzdG9vZD8gV2hhdCYjMzk7cyB0aGUgbmV4dCBhY3Rpb24/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXHRib29sIFwmIzM0O0ludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7RnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1pIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVx0dHJpc3RhdGUgXCYjMzQ7SURUIDgyUDMzeHh4IFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cdHRyaXN0YXRlIFwmIzM0O0lEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlIFwmIzM0O1JFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtNb2NrLXVwIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODk2CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXR3b3JraW5nIHNldHVwIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgaW4gcGxhY2UgZm9yIHByZWNpc2UgdGltaW5nIGFuZCBzeW5jaHJvbml6YXRpb24uIE15IGNoZWNrbGlzdCBpczogYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdGltZXN0YW1waW5nLCBvYnZpb3VzbHkuIFRoZW4sIGBQSFlMSUJgIC0gb2YgY291cnNlIEkgbmVlZCB0aGUgUEhZIGxpYnJhcnkuIE5leHQgdXAsIHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIC0gdGhhdCYjMzk7cyBlc3NlbnRpYWwgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIHN1cHBvcnQsIHZpdGFsIGZvciBtYW55IG9mIG15IGFwcGxpY2F0aW9ucy4gRmluYWxseSwgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYERQODM2NDBfUEhZYCBvciB0aGUgY29ycmVjdCBQSFkgZHJpdmVyLiBJdCBpcyBhbHNvIGltcG9ydGFudCB0byB2ZXJpZnkgYFBIWUxJQmAgYXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgdG8gdmVyaWZ5IGl0cyBwcmVzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUEhZTElCJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTY9Y29uZmlnIFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1Om1lbnVjb25maWcgUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1BIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz00Nj1jb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo0OTpjb25maWcgUEhZTElCX0xFRFNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUwLVx0ZGVmX2Jvb2wgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyODYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBQSFlMSUJgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0aGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgYXBwZWFycyB0aGF0IGBEUDgzNjQwX1BIWWAgcmVsaWVzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyBpdHMgZnVuY3Rpb25hbGl0eS4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgaG93IGBkcDgzNjQwX3Byb2JlYCBpcyBhY2Nlc3NpYmxlLiBBaCwgcmlnaHQsIHRocm91Z2ggTURJTyBidXMgc2Nhbm5pbmcuIFRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBEUDgzNjQwIGhhcmR3YXJlLCBidXQgc3l6a2FsbGVyIHByb3ZpZGVzIGEgcm91dGUsIGVtdWxhdGluZyBVU0IgZGV2aWNlcyB0aGF0IGV4cG9zZSBhbiBNRElPIGJ1cyBhbmQgbWFzcXVlcmFkaW5nIGFzIGEgRFA4MzY0MCBQSFkuIFRoaXMgc2hvdWxkIGFsbG93IGZvciB0ZXN0aW5nLgoKRnVydGhlcm1vcmUsIHRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIFRoZXNlIGFyZSAqZXhwb3J0ZWQqIHN5bWJvbHMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhleSBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgY29kZSBhbmQgdGh1cyB1c2VkIGJ5IG90aGVyIFBIWSBkcml2ZXJzLiBCdXQsIGN1cnJlbnRseSwgSSB0aGluayBvbmx5IERQODM2NDAgdXNlcyB0aGVtLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBkaWcgZGVlcGVyIHRvIGJlIHN1cmUgYWJvdXQgdGhpcyBjcm9zcy1kcml2ZXIgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9wYWNrYWdlX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzc0PXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM4OS1cdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM5MDpcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM5MS1cdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM9NTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NTY6ICogcGh5X3BhY2thZ2VfbG9jayAtIGFjcXVpcmUgdGhlIFBIWSBwYWNrYWdlIGxvY2tcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaDoxNTp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjY3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBoeV9wYWNrYWdlX2xvY2tgIGlzIG9ubHkgdXNlZCB3aXRoaW4gYGRwODM2NDAuY2AgcmlnaHQgbm93LCB3aGljaCBpcyB0aGUga2V5IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlci4gSSYjMzk7bSB0aGlua2luZyBvZiBlbmFibGluZyBgRFA4MzY0MF9QSFlgLCBgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HYCwgYFBIWUxJQmAsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgLiBUaG91Z2gsIGhvbmVzdGx5LCBgUEhZTElCYCBhbmQgYFBUUF8xNTg4X0NMT0NLYCBhcmUgcHJldHR5IGNvbW1vbiBhbmQgb2Z0ZW4gZW5hYmxlZCBieSBkZWZhdWx0IG9yIG90aGVyIG5ldHdvcmsgZHJpdmVycy4gU3RpbGwsIGJldHRlciB0byBiZSB0aG9yb3VnaCBhbmQgbGlzdCB0aGVtIG91dC4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBZZXMsIGl0IGlzLCBieSB1c2luZyBVU0IgTURJTyBlbXVsYXRpb24uCgpOb3cgZm9yIGZvY3VzaW5nIG9uIGtleSBzeW1ib2xzLiBJIG5lZWQgdG8gemVybyBpbiBvbjogYGRwODM2NDBfcHJvYmVgLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAsIGBkcDgzNjQwX2Nsb2NrX2luaXRgLCBhbmQgdGhlbiBvZiBjb3Vyc2UgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4KCkhhbmcgb24sIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgYGRwODM2NDBfY2xvY2tfaW5pdGAgaXMgc3RhdGljLiBZZXAsIGl0IGlzOiBgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylgLiBCZWNhdXNlIGl0JiMzOTtzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgaW4gYGRwODM2NDBfcHJvYmVgLCBpdCAqbWlnaHQqIGJlIGlubGluZWQuIExldCYjMzk7cyBxdWlja2x5IGd1ZXNzIGlmIGl0JiMzOTtzIGxhcmdlIGVub3VnaCB0byBwcmV2ZW50IGlubGluaW5nLiBJdCYjMzk7cyBhYm91dCB0d2VudHkgbGluZXMuIFByb2JhYmx5ICptaWdodCogYmUsIHNvIEkmIzM5O2xsIGp1c3QgaW5jbHVkZSBgZHA4MzY0MF9wcm9iZWAgYW5kIGBkcDgzNjQwX3BoeV9yZWxlYXNlYC4gQnV0IGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgYXJlIGV4cG9ydGVkLCBzbyB0aG9zZSB3b24mIzM5O3QgYmUgaW5saW5lZCBmb3Igc3VyZS4KCk9rYXksIGxldCBtZSBjaGVjayBgZHA4MzY0MF9waHlfcmVsZWFzZWAuIEl0JiMzOTtzIHN0YXRpYywgYnV0IHVzZWQgYXMgYSBjYWxsYmFjayBmb3IgYGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50ISBDYWxsYmFja3MgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gU28sIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBmb2N1cyBzeW1ib2wuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZToKCiogICBgZHA4MzY0MF9wcm9iZWAKKiAgIGBkcDgzNjQwX3BoeV9yZWxlYXNlYAoqICAgYHBoeV9wYWNrYWdlX2xvY2tgCiogICBgcGh5X3BhY2thZ2VfdW5sb2NrYAoKTm93LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2guIEl0JiMzOTtzIG1vZGlmeWluZyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEsIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBsaXN0LiBUaGF0JiMzOTtzIGdvb2QsIGFuZCBpdCYjMzk7cyBhZGRpbmcgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIEl0IHNvdW5kcyBsaWtlIGZ1bmN0aW9uYWwgY29kZSByZWFjaGVkIGJ5IHRoZSBVU0IgTURJTyBlbXVsYXRpb24uCgpBbmQgdGhlIGNvbmZpZ3VyYXRpb25zIHdlIHdlcmUgZGlzY3Vzc2luZyBhcmU6CmBEUDgzNjQwX1BIWWAKYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AKYFBIWUxJQmAKYFBUUF8xNTg4X0NMT0NLYAoKTGV0IG1lIGNoZWNrIGlmIGBQSFlfUEFDS0FHRWAgaXMgYSBjb25maWcgaXRzZWxmLiBBaCwgaXQmIzM5O3MgYHNlbGVjdCBQSFlfUEFDS0FHRWAuIEludGVyZXN0aW5nLiBTbyBpdCYjMzk7cyBzZWxlY3RlZCBieSBgRFA4MzY0MF9QSFlgLiBTbywgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZW5hYmxlIGl0IGV4cGxpY2l0bHkuIEp1c3QgaW5jbHVkZSBgRFA4MzY0MF9QSFlgLgoKTm93LCB0aW1lIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMgb24gYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQmIzM5O3Mgd2hhdCBJIHdhbnQgdG8gc2VlIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXG4tLVxubmV0L0tjb25maWctMTUzLVxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcbm5ldC9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODY4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogSXNvbGF0ZWQgQ29tcG9uZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyB0aGluZywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgZW50aXJlbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gc2hhcmVkIHJlc291cmNlcywgbm90aGluZy4gQSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMuIEl0JiMzOTtzIGEgY2xlYW4gc2xhdGUsIHdoaWNoIGltbWVkaWF0ZWx5IHNpbXBsaWZpZXMgdGhlIHRyb3VibGVzaG9vdGluZyBhbmQgZGVwbG95bWVudCBwcm9jZXNzLCBsZXNzIHRvIHdvcnJ5IGFib3V0LgoKTm93LCBiZWNhdXNlIGl0IGlzIGlzb2xhdGVkLCBJIHdhbnQgdG8gdGFrZSBhIGRlZXBlciBsb29rIGF0IGBQVFBfMTU4OF9DTE9DS2AuIExldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBpZiBpdCBoYXMgdGhlbS4gSSB3b3VsZCBwcmVmZXIgdG8ga25vdyBub3csIHJhdGhlciB0aGFuIGxhdGVyIHdoZW4gc29tZXRoaW5nIGdvZXMgc2lkZXdheXMuIElmIHRoaXMgcmVhbGx5IGlzIGlzb2xhdGVkLCB0aGVuIHRoaXMgdmVyaWZpY2F0aW9uIHNob3VsZCBiZSBxdWljayBhbmQgZWFzeS4gSWYgbm90Li4uIHRoYXQmIzM5O3MgYSB3aG9sZSBvdGhlciBiYWxsZ2FtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7SW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxOTYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDguCgoqKkV4YW1pbmluZyB0aGUgUFRQIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGxpbmUgOCwgaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGRyaXZlcnMgaW4gdGhlIGtlcm5lbC4gS25vd2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUgZnJvbSBwYXN0IGV4cGVyaWVuY2VzLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwb2ludCB3aGVyZSB0aGUgYnJvYWQgZmVhdHVyZSBzZXQgaXMgZGVmaW5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSBtYWluIEtjb25maWcgc3ltYm9sIGFuZCBpdHMgZGVwZW5kZW5jaWVzIG9yIHBvc3NpYmxlIGRlZmF1bHRzIGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkIHN0cm9rZXMgb2YgaG93IHRoZSBQVFAgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQgZnJvbSBhIGNvbmZpZ3VyYXRpb24gc3RhbmRwb2ludCwgc28gSSBjYW4gYmV0dGVyIGdyYXNwIGhvdyB0byB0YWlsb3IgbXkgc3lzdGVtcy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBwb2ludCBtZSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBUUCBjbG9jayBzdXBwb3J0IGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS1xuICAgOTpcdFx0dHJpc3RhdGUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbiAgMTA6XHRcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBQT1NJWF9USU1FUlNcbiAgMTE6XHRcdGRlZmF1bHQgRVRIRVJORVRcbiAgMTI6XHRcdHNlbGVjdCBQUFNcbiAgMTM6XHRcdHNlbGVjdCBORVRfUFRQX0NMQVNTSUZZXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoZSBJRUVFIDE1ODggc3RhbmRhcmQgZGVmaW5lcyBhIG1ldGhvZCB0byBwcmVjaXNlbHlcbiAgMTY6XHRcdCAgc3luY2hyb25pemUgZGlzdHJpYnV0ZWQgY2xvY2tzIG92ZXIgRXRoZXJuZXQgbmV0d29ya3MuIFRoZVxuICAxNzpcdFx0ICBzdGFuZGFyZCBkZWZpbmVzIGEgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCksIHdoaWNoIGNhblxuICAxODpcdFx0ICBiZSB1c2VkIHRvIGFjaGlldmUgc3luY2hyb25pemF0aW9uIHdpdGhpbiBhIGZldyBkb3plblxuICAxOTpcdFx0ICBtaWNyb3NlY29uZHMuIEluIGFkZGl0aW9uLCB3aXRoIHRoZSBoZWxwIG9mIHNwZWNpYWwgaGFyZHdhcmVcbiAgMjA6XHRcdCAgdGltZSBzdGFtcGluZyB1bml0cywgaXQgY2FuIGJlIHBvc3NpYmxlIHRvIGFjaGlldmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3MjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB0d28gZXNzZW50aWFsLCBicm9hZGx5IGFjY2VwdGVkIHN0YW5kYXJkczogYE5FVGAgYW5kIGBQT1NJWF9USU1FUlNgLiBUaGF0JiMzOTtzIGEgc29saWQgZm91bmRhdGlvbi4gR2l2ZW4gdGhvc2UsIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGVzZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGludGVycGxheSBvZiB0aGVzZSB3aWxsIGRldGVybWluZSB0aGUgdWx0aW1hdGUgZnVuY3Rpb25hbGl0eS4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCBgUEhZTElCYCBmaXJzdC4gSSB3YW50IHRvIHNlZSBpZiBpdCBicmluZ3MgaW4gYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIFRob3NlIGRlcGVuZGVuY2llcyB3aWxsIGZ1cnRoZXIgZGVmaW5lIHRoZSBidWlsZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4gIDE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXCYjMzQ7XG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxuICAxOTpcdFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXG4gIDIwOlx0XHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODIwMwoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIERQODM2NDAgUEhZIGRyaXZlci4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IGl0JiMzOTtzIHNoaWZ0aW5nIHRvd2FyZHMgdXNpbmcgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGEgZ2xvYmFsIGxpc3QuIFNtYXJ0IG1vdmUg4oCTIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUgZGlyZWN0aW9uIHdlIHdhbnQgdG8gYmUgaGVhZGVkIGZvciBiZXR0ZXIgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWwgY29uY3VycmVuY3kgY29udHJvbC4gQW5kICpQSFlMSUIqIGl0c2VsZiBoYXMgbm8gZGVwZW5kZW5jaWVzLCB0aGF0JiMzOTtzIGltcG9ydGFudCB0byBrbm93IGZvciBwb3J0YWJpbGl0eSBhbmQgZWFzZSBvZiBpbnRlZ3JhdGlvbi4KClRoZSBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCBhcmU6ICpEUDgzNjQwX1BIWSwgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HLCBQSFlMSUIsIFBUUF8xNTg4X0NMT0NLKi4gR29vZCwgdGhvc2UgYWxsIG1ha2Ugc2Vuc2UgaW4gY29udGV4dC4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgYXJlIGltcGFjdGVkLiBJIHNlZSB0aGUgZm9jdXMgaXMgb24gYGRwODM2NDBfcHJvYmVgIChlbnRyeSBwb2ludCBmb3IgUEhZIHByb2JpbmcpLCBgZHA4MzY0MF9waHlfcmVsZWFzZWAgKGRldm0gcmVsZWFzZSBjYWxsYmFjaywgc3RhbmRhcmQgc3R1ZmYpLCBhbmQgdGhlIG5ldyBjb3JlIGZ1bmN0aW9ucywgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC4gQWxsIGFyZSBub24taW5saW5lZCwgc28gZWFzaWVyIHRvIHRyYWNlLiBZZXMsIHRoaXMgaXMgZnVuY3Rpb25hbGx5IHNvdW5kOyB0aGUgY29kZSBpcyBjZXJ0YWlubHkgcmVhY2hhYmxlLiBFbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRCBpcyBhbiBleGNlbGxlbnQgd2F5IHRvIHRlc3QgdGhpcy4KCkFscmlnaHQsIHdpdGggdGhhdCBmaW5hbCBjaGVjayBkb25lLCB0aGUgZnVuY3Rpb24gc3ltYm9scyBhbGwgbG9vayBjbGVhbiwgYW5kIHRoZSByZWFzb25pbmcgaXMgc291bmQsIEkgY2FuIHNldCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFA4MzY0MF9QSFkmIzM0OywKICAgICYjMzQ7TkVUV09SS19QSFlfVElNRVNUQU1QSU5HJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RwODM2NDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZHA4MzY0MF9waHlfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtwaHlfcGFja2FnZV9sb2NrJiMzNDssCiAgICAmIzM0O3BoeV9wYWNrYWdlX3VubG9jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjExLjQ3ODU1MTU3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDc2NTUyMzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUDgzNjQwX1BIWVwiLFxuICAgIFwiTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHA4MzY0MF9wcm9iZVwiLFxuICAgIFwiZHA4MzY0MF9waHlfcmVsZWFzZVwiLFxuICAgIFwicGh5X3BhY2thZ2VfbG9ja1wiLFxuICAgIFwicGh5X3BhY2thZ2VfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhIGluc3RlYWQgb2YgYSBnbG9iYWwgbGlzdCwgYW5kIGFkZHMgbG9ja2luZyBmdW5jdGlvbnMgdG8gdGhlIFBIWSBwYWNrYWdlIGNvcmUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgZW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjExLjQ3ODU1NjA4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzI5NzUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRmOWE1NWU2NzBkYzEyMmMxNzg3YmYyMGNkNjU5MDViZTU5ZmJlYWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAwOToyNTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xcbmluZGV4IDk4NDcyYWJkZDM5MjAuLjU0M2Y2M2VhYzljYWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NyYzMyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG5AQCAtMjEsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImRwODM2NDBfcmVnLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJwaHlsaWIuaFxcXCJcXG4gXFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuICNkZWZpbmUgUEFHRVNFTFxcdFxcdDB4MTNcXG5AQCAtMTI4LDEwICsxMzAsNiBAQCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlIHtcXG4gfTtcXG4gXFxuIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcXG4tXFx0Lyoga2VlcHMgdGhlIGluc3RhbmNlIGluIHRoZSAncGh5dGVyX2Nsb2NrcycgbGlzdCAqL1xcbi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLVxcdC8qIHdlIGNyZWF0ZSBvbmUgY2xvY2sgaW5zdGFuY2UgcGVyIE1JSSBidXMgKi9cXG4tXFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4gXFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cXG4gXFx0c3RydWN0IG11dGV4IGV4dHJlZ19sb2NrO1xcbiBcXHQvKiByZW1lbWJlcnMgd2hpY2ggcGFnZSB3YXMgbGFzdCBzZWxlY3RlZCAqL1xcbkBAIC0xNDYsNiArMTQ0LDggQEAgc3RydWN0IGRwODM2NDBfY2xvY2sge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHBoeWxpc3Q7XFxuIFxcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXFxuIFxcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9jaztcXG4rXFx0LyogcHJvdGVjdGVkIGJ5IHRoZSBQVFAgY29yZSBwaW4gY29uZmlndXJhdGlvbiBsb2NrICovXFxuK1xcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XFxuIH07XFxuIFxcbiAvKiBnbG9iYWxzICovXFxuQEAgLTIwNiwxMCArMjA2LDYgQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9ncGlvX2RlZmF1bHRzKHN0cnVjdCBwdHBfcGluX2Rlc2MgKnBkKVxcbiBcXHR9XFxuIH1cXG4gXFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xcbi1zdGF0aWMgTElTVF9IRUFEKHBoeXRlcl9jbG9ja3MpO1xcbi1zdGF0aWMgREVGSU5FX01VVEVYKHBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbiBzdGF0aWMgdm9pZCByeF90aW1lc3RhbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xcbkBAIC05NTMsMTMgKzk0OSwxMiBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfc3RhdHVzX2ZyYW1lKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKmRwODM2NDAsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcXG4rc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcXG4ge1xcbi1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y2xvY2stXFx1MDAzZWxpc3QpO1xcbi1cXHRjbG9jay1cXHUwMDNlYnVzID0gYnVzO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlZXh0cmVnX2xvY2spO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuK1xcdGNsb2NrLVxcdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cXHUwMDNlcGluX2NvbmZpZztcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMub3duZXIgPSBUSElTX01PRFVMRTtcXG4gXFx0c3ByaW50ZihjbG9jay1cXHUwMDNlY2Fwcy5uYW1lLCBcXFwiZHA4MzY0MCB0aW1lclxcXCIpO1xcbiBcXHRjbG9jay1cXHUwMDNlY2Fwcy5tYXhfYWRqXFx0PSAxOTUzMTI0O1xcbkBAIC05NzcsMTQgKzk3Miw4IEBAIHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssIHN0cnVjdCBtaWlfYnVzICpidXMpXFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnNldHRpbWU2NFxcdD0gcHRwX2RwODM2NDBfc2V0dGltZTtcXG4gXFx0Y2xvY2stXFx1MDAzZWNhcHMuZW5hYmxlXFx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XFxuIFxcdGNsb2NrLVxcdTAwM2VjYXBzLnZlcmlmeVxcdD0gcHRwX2RwODM2NDBfdmVyaWZ5O1xcbi1cXHQvKlxcbi1cXHQgKiBDb252ZXJ0IHRoZSBtb2R1bGUgcGFyYW0gZGVmYXVsdHMgaW50byBhIGR5bmFtaWMgcGluIGNvbmZpZ3VyYXRpb24uXFxuLVxcdCAqL1xcbitcXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXFxuIFxcdGRwODM2NDBfZ3Bpb19kZWZhdWx0cyhjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcXG4tXFx0LypcXG4tXFx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoaXMgYnVzIGluc3RhbmNlLlxcbi1cXHQgKi9cXG4tXFx0Z2V0X2RldmljZShcXHUwMDI2YnVzLVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNob29zZV90aGlzX3BoeShzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2ssXFxuQEAgLTk5OSw1OCArOTg4LDYgQEAgc3RhdGljIGludCBjaG9vc2VfdGhpc19waHkoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpkcDgzNjQwX2Nsb2NrX2dldChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spXFxuLXtcXG4tXFx0aWYgKGNsb2NrKVxcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuLVxcdHJldHVybiBjbG9jaztcXG4tfVxcbi1cXG4tLypcXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cXG4tICogSWYgdGhlcmUgaXMgbm8gY2xvY2sgZm9yIHRoaXMgYnVzLCB0aGVuIGNyZWF0ZSBpdCBmaXJzdC5cXG4tICovXFxuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXFxuLXtcXG4tXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcXG4tXFx0c3RydWN0IGxpc3RfaGVhZCAqdGhpcztcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcbi1cXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFxcdTAwMjZwaHl0ZXJfY2xvY2tzKSB7XFxuLVxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfY2xvY2ssIGxpc3QpO1xcbi1cXHRcXHRpZiAodG1wLVxcdTAwM2VidXMgPT0gYnVzKSB7XFxuLVxcdFxcdFxcdGNsb2NrID0gdG1wO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLVxcdGlmIChjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX2Nsb2NrKTtcXG4tXFx0aWYgKCFjbG9jaylcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbi1cXHRjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnID0ga3phbGxvY19vYmpzKHN0cnVjdCBwdHBfcGluX2Rlc2MsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIERQODM2NDBfTl9QSU5TKTtcXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2Fwcy5waW5fY29uZmlnKSB7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0XFx0Y2xvY2sgPSBOVUxMO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0fVxcbi1cXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XFxuLVxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmNsb2NrLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGh5dGVyX2Nsb2Nrcyk7XFxuLW91dDpcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xcbi1cXG4tXFx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxcbi17XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbi19XFxuLVxcbiBzdGF0aWMgaW50IGRwODM2NDBfc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB7XFxuIFxcdGludCByZXQ7XFxuQEAgLTEzOTgsMjIgKzEzMzUsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcXG4ge1xcbitcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcXG4rXFx0c3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqdG1wO1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcXG4gXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2O1xcbitcXG4rXFx0Y2xvY2sgPSBkcDgzNjQwLVxcdTAwM2VjbG9jaztcXG4rXFx0cGh5ZGV2ID0gZHA4MzY0MC1cXHUwMDNlcGh5ZGV2O1xcbitcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZHA4MzY0MC1cXHUwMDNldHNfd29yayk7XFxuK1xcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbitcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbitcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4rXFx0XFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdFxcdGNsb2NrLVxcdTAwM2VjaG9zZW4gPSBOVUxMO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX3NhZmUodGhpcywgbmV4dCwgXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSB7XFxuK1xcdFxcdFxcdHRtcCA9IGxpc3RfZW50cnkodGhpcywgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSwgbGlzdCk7XFxuK1xcdFxcdFxcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xcbitcXHRcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0bXAtXFx1MDAzZWxpc3QpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbG9jay1cXHUwMDNlY2xvY2tfbG9jayk7XFxuK1xcbitcXHRwaHlkZXYtXFx1MDAzZWRlZmF1bHRfdGltZXN0YW1wID0gZmFsc2U7XFxuK1xcdHBoeWRldi1cXHUwMDNlcHJpdiA9IE5VTEw7XFxuK1xcdGtmcmVlKGRwODM2NDApO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbiBcXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xcbi1cXHRpbnQgZXJyID0gLUVOT01FTSwgaTtcXG4rXFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xcbitcXHRpbnQgZXJyLCBpO1xcbiBcXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXRfYnVzKHBoeWRldi1cXHUwMDNlbWRpby5idXMpO1xcbi1cXHRpZiAoIWNsb2NrKVxcbitcXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYsIHBoeWRldixcXG4rXFx0XFx0XFx0XFx0ICAgIEJST0FEQ0FTVF9BRERSLCBzaXplb2YoKmNsb2NrKSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gbm9fY2xvY2s7XFxuIFxcbitcXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XFxuK1xcdC8qIEVuc3VyZSBvdGhlciBQSFkgcHJvYmVzIHdhaXQgZm9yIHNoYXJlZCBjbG9jayBpbml0aWFsaXphdGlvbi4gKi9cXG4rXFx0cGh5X3BhY2thZ2VfbG9jayhwaHlkZXYpO1xcbitcXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxcbitcXHRcXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xcbitcXHRwaHlfcGFja2FnZV91bmxvY2socGh5ZGV2KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4rXFxuIFxcdGRwODM2NDAgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlKTtcXG4tXFx0aWYgKCFkcDgzNjQwKVxcbitcXHRpZiAoIWRwODM2NDApIHtcXG4rXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byBub19tZW1vcnk7XFxuK1xcdH1cXG4gXFxuIFxcdGRwODM2NDAtXFx1MDAzZXBoeWRldiA9IHBoeWRldjtcXG4gXFx0ZHA4MzY0MC1cXHUwMDNlbWlpX3RzLnJ4dHN0YW1wID0gZHA4MzY0MF9yeHRzdGFtcDtcXG5AQCAtMTQ1MCw2OCArMTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0fSBlbHNlXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwODM2NDAtXFx1MDAzZWxpc3QsIFxcdTAwMjZjbG9jay1cXHUwMDNlcGh5bGlzdCk7XFxuIFxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbitcXG4rXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIG5vX3JlZ2lzdGVyOlxcbiBcXHRjbG9jay1cXHUwMDNlY2hvc2VuID0gTlVMTDtcXG4rXFx0Y2xvY2stXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuK1xcdHBoeWRldi1cXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcXG4rXFx0cGh5ZGV2LVxcdTAwM2VtaWlfdHMgPSBOVUxMO1xcbitcXHRwaHlkZXYtXFx1MDAzZXByaXYgPSBOVUxMO1xcbiBcXHRrZnJlZShkcDgzNjQwKTtcXG4gbm9fbWVtb3J5Olxcbi1cXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2xvY2stXFx1MDAzZWNsb2NrX2xvY2spO1xcbiBub19jbG9jazpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XFxuLVxcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xcbi1cXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICp0bXAsICpkcDgzNjQwID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbi1cXHRib29sIHJlbW92ZV9jbG9jayA9IGZhbHNlO1xcbi1cXG4gXFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5hZGRyID09IEJST0FEQ0FTVF9BRERSKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRwaHlkZXYtXFx1MDAzZW1paV90cyA9IE5VTEw7XFxuIFxcbiBcXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkcDgzNjQwLVxcdTAwM2V0c193b3JrKTtcXG4tXFxuLVxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2ZHA4MzY0MC1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRwODM2NDAtXFx1MDAzZXR4X3F1ZXVlKTtcXG4tXFxuLVxcdGNsb2NrID0gZHA4MzY0MF9jbG9ja19nZXQoZHA4MzY0MC1cXHUwMDNlY2xvY2spO1xcbi1cXG4tXFx0aWYgKGRwODM2NDAgPT0gY2xvY2stXFx1MDAzZWNob3Nlbikge1xcbi1cXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cXHUwMDNlcHRwX2Nsb2NrKTtcXG4tXFx0XFx0Y2xvY2stXFx1MDAzZWNob3NlbiA9IE5VTEw7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcXHUwMDI2Y2xvY2stXFx1MDAzZXBoeWxpc3QpIHtcXG4tXFx0XFx0XFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcXG4tXFx0XFx0XFx0aWYgKHRtcCA9PSBkcDgzNjQwKSB7XFxuLVxcdFxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnRtcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFx0fVxcbi1cXG4tXFx0aWYgKCFjbG9jay1cXHUwMDNlY2hvc2VuIFxcdTAwMjZcXHUwMDI2IGxpc3RfZW1wdHkoXFx1MDAyNmNsb2NrLVxcdTAwM2VwaHlsaXN0KSlcXG4tXFx0XFx0cmVtb3ZlX2Nsb2NrID0gdHJ1ZTtcXG4tXFxuLVxcdGRwODM2NDBfY2xvY2tfcHV0KGNsb2NrKTtcXG4tXFx0a2ZyZWUoZHA4MzY0MCk7XFxuLVxcbi1cXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XFxuLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZjbG9jay1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcXG4tXFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VleHRyZWdfbG9jayk7XFxuLVxcdFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmNsb2NrLVxcdTAwM2VjbG9ja19sb2NrKTtcXG4tXFx0XFx0cHV0X2RldmljZShcXHUwMDI2Y2xvY2stXFx1MDAzZWJ1cy1cXHUwMDNlZGV2KTtcXG4tXFx0XFx0a2ZyZWUoY2xvY2stXFx1MDAzZWNhcHMucGluX2NvbmZpZyk7XFxuLVxcdFxcdGtmcmVlKGNsb2NrKTtcXG4tXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbmluZGV4IDE2YWU4ZDFjMWY4OWEuLjczNTgwNmM1YmVhODggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuY1xcbkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4gXFxuKy8qKlxcbisgKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKlxcbisgKiBVc2UgdGhpcyB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHBhY2thZ2UtcHJpdmF0ZSBkYXRhLiBSZWxlYXNlIHRoZSBsb2NrXFxuKyAqIHdpdGggcGh5X3BhY2thZ2VfdW5sb2NrKCkuXFxuKyAqL1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VzaGFyZWRfbG9jayk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuK1xcbisvKipcXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHRoYXQgaGFzIGpvaW5lZCB0aGUgcGFja2FnZVxcbisgKi9cXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXNoYXJlZF9sb2NrKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV91bmxvY2spO1xcbitcXG4gc3RhdGljIGludCBwaHlfcGFja2FnZV9hZGRyZXNzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oXFxuaW5kZXggMGZiYTI0NWY5NzQ1OC4uYzZlMjZhYzZiMjhmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcXG5AQCAtMTIsNiArMTIsOCBAQCBzdHJ1Y3QgbWlpX2J1cztcXG4gXFxuIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X3BhY2thZ2VfZ2V0X25vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuIHZvaWQgKnBoeV9wYWNrYWdlX2dldF9wcml2KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuK3ZvaWQgcGh5X3BhY2thZ2VfdW5sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbiBpbnQgX19waHlfcGFja2FnZV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHVuc2lnbmVkIGludCBhZGRyX29mZnNldCxcXG4gXFx0XFx0ICAgICAgIHUzMiByZWdudW0pO1xcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL0tjb25maWcgYi9kcml2ZXJzL3B0cC9LY29uZmlnXFxuaW5kZXggYjkzNjQwY2EwOGI3Mi4uZmViNTBmOGNjNDA2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZ1xcbkBAIC03OCw2ICs3OCw3IEBAIGNvbmZpZyBEUDgzNjQwX1BIWVxcbiBcXHRkZXBlbmRzIG9uIFBIWUxJQlxcbiBcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIFxcdHNlbGVjdCBDUkMzMlxcbitcXHRzZWxlY3QgUEhZX1BBQ0tBR0VcXG4gXFx0aGVscFxcbiBcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjEyLjgxNjU1Njk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM5NDI3NTA5ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGY5YTU1ZTY3MGRjMTIyYzE3ODdiZjIwY2Q2NTkwNWJlNTlmYmVhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDk6MjU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jIGIvZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuY1xuaW5kZXggOTg0NzJhYmRkMzkyMC4uNTQzZjYzZWFjOWNhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmNcbkBAIC04LDYgKzgsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCI6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYzMyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UvZGV2cmVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuQEAgLTIxLDYgKzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImRwODM2NDBfcmVnLmhcIlxuKyNpbmNsdWRlIFwicGh5bGliLmhcIlxuIFxuICNkZWZpbmUgRFA4MzY0MF9QSFlfSURcdDB4MjAwMDVjZTFcbiAjZGVmaW5lIFBBR0VTRUxcdFx0MHgxM1xuQEAgLTEyOCwxMCArMTMwLDYgQEAgc3RydWN0IGRwODM2NDBfcHJpdmF0ZSB7XG4gfTtcbiBcbiBzdHJ1Y3QgZHA4MzY0MF9jbG9jayB7XG4tXHQvKiBrZWVwcyB0aGUgaW5zdGFuY2UgaW4gdGhlICdwaHl0ZXJfY2xvY2tzJyBsaXN0ICovXG4tXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tXHQvKiB3ZSBjcmVhdGUgb25lIGNsb2NrIGluc3RhbmNlIHBlciBNSUkgYnVzICovXG4tXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuIFx0LyogcHJvdGVjdHMgZXh0ZW5kZWQgcmVnaXN0ZXJzIGZyb20gY29uY3VycmVudCBhY2Nlc3MgKi9cbiBcdHN0cnVjdCBtdXRleCBleHRyZWdfbG9jaztcbiBcdC8qIHJlbWVtYmVycyB3aGljaCBwYWdlIHdhcyBsYXN0IHNlbGVjdGVkICovXG5AQCAtMTQ2LDYgKzE0NCw4IEBAIHN0cnVjdCBkcDgzNjQwX2Nsb2NrIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGh5bGlzdDtcbiBcdC8qIHJlZmVyZW5jZSB0byBvdXIgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2s7XG4rXHQvKiBwcm90ZWN0ZWQgYnkgdGhlIFBUUCBjb3JlIHBpbiBjb25maWd1cmF0aW9uIGxvY2sgKi9cbitcdHN0cnVjdCBwdHBfcGluX2Rlc2MgcGluX2NvbmZpZ1tEUDgzNjQwX05fUElOU107XG4gfTtcbiBcbiAvKiBnbG9iYWxzICovXG5AQCAtMjA2LDEwICsyMDYsNiBAQCBzdGF0aWMgdm9pZCBkcDgzNjQwX2dwaW9fZGVmYXVsdHMoc3RydWN0IHB0cF9waW5fZGVzYyAqcGQpXG4gXHR9XG4gfVxuIFxuLS8qIGEgbGlzdCBvZiBjbG9ja3MgYW5kIGEgbXV0ZXggdG8gcHJvdGVjdCBpdCAqL1xuLXN0YXRpYyBMSVNUX0hFQUQocGh5dGVyX2Nsb2Nrcyk7XG4tc3RhdGljIERFRklORV9NVVRFWChwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuIHN0YXRpYyB2b2lkIHJ4X3RpbWVzdGFtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4gLyogZXh0ZW5kZWQgcmVnaXN0ZXIgYWNjZXNzIGZ1bmN0aW9ucyAqL1xuQEAgLTk1MywxMyArOTQ5LDEyIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9zdGF0dXNfZnJhbWUoc3RydWN0IGRwODM2NDBfcHJpdmF0ZSAqZHA4MzY0MCxcbiBcdH1cbiB9XG4gXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbitzdGF0aWMgdm9pZCBkcDgzNjQwX2Nsb2NrX2luaXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuIHtcbi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QpO1xuLVx0Y2xvY2stXHUwMDNlYnVzID0gYnVzO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZjbG9jay1cdTAwM2VleHRyZWdfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4rXHRjbG9jay1cdTAwM2VjYXBzLnBpbl9jb25maWcgPSBjbG9jay1cdTAwM2VwaW5fY29uZmlnO1xuIFx0Y2xvY2stXHUwMDNlY2Fwcy5vd25lciA9IFRISVNfTU9EVUxFO1xuIFx0c3ByaW50ZihjbG9jay1cdTAwM2VjYXBzLm5hbWUsIFwiZHA4MzY0MCB0aW1lclwiKTtcbiBcdGNsb2NrLVx1MDAzZWNhcHMubWF4X2Fkalx0PSAxOTUzMTI0O1xuQEAgLTk3NywxNCArOTcyLDggQEAgc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19pbml0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaywgc3RydWN0IG1paV9idXMgKmJ1cylcbiBcdGNsb2NrLVx1MDAzZWNhcHMuc2V0dGltZTY0XHQ9IHB0cF9kcDgzNjQwX3NldHRpbWU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLmVuYWJsZVx0PSBwdHBfZHA4MzY0MF9lbmFibGU7XG4gXHRjbG9jay1cdTAwM2VjYXBzLnZlcmlmeVx0PSBwdHBfZHA4MzY0MF92ZXJpZnk7XG4tXHQvKlxuLVx0ICogQ29udmVydCB0aGUgbW9kdWxlIHBhcmFtIGRlZmF1bHRzIGludG8gYSBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLlxuLVx0ICovXG4rXHQvKiBJbml0aWFsaXplIHRoZSBydW50aW1lIHBpbiBjb25maWd1cmF0aW9uIGZyb20gZ3Bpb190YWIuICovXG4gXHRkcDgzNjQwX2dwaW9fZGVmYXVsdHMoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdC8qXG4tXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhpcyBidXMgaW5zdGFuY2UuXG4tXHQgKi9cbi1cdGdldF9kZXZpY2UoXHUwMDI2YnVzLVx1MDAzZWRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbkBAIC05OTksNTggKzk4OCw2IEBAIHN0YXRpYyBpbnQgY2hvb3NlX3RoaXNfcGh5KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jayxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgc3RydWN0IGRwODM2NDBfY2xvY2sgKmRwODM2NDBfY2xvY2tfZ2V0KHN0cnVjdCBkcDgzNjQwX2Nsb2NrICpjbG9jaylcbi17XG4tXHRpZiAoY2xvY2spXG4tXHRcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4tXHRyZXR1cm4gY2xvY2s7XG4tfVxuLVxuLS8qXG4tICogTG9vayB1cCBhbmQgbG9jayBhIGNsb2NrIGJ5IGJ1cyBpbnN0YW5jZS5cbi0gKiBJZiB0aGVyZSBpcyBubyBjbG9jayBmb3IgdGhpcyBidXMsIHRoZW4gY3JlYXRlIGl0IGZpcnN0LlxuLSAqL1xuLXN0YXRpYyBzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqZHA4MzY0MF9jbG9ja19nZXRfYnVzKHN0cnVjdCBtaWlfYnVzICpidXMpXG4te1xuLVx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrID0gTlVMTCwgKnRtcDtcbi1cdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXM7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNnBoeXRlcl9jbG9ja3NfbG9jayk7XG4tXG4tXHRsaXN0X2Zvcl9lYWNoKHRoaXMsIFx1MDAyNnBoeXRlcl9jbG9ja3MpIHtcbi1cdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9jbG9jaywgbGlzdCk7XG4tXHRcdGlmICh0bXAtXHUwMDNlYnVzID09IGJ1cykge1xuLVx0XHRcdGNsb2NrID0gdG1wO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4tXHR9XG4tXHRpZiAoY2xvY2spXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0Y2xvY2sgPSBremFsbG9jX29iaihzdHJ1Y3QgZHA4MzY0MF9jbG9jayk7XG4tXHRpZiAoIWNsb2NrKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcHRwX3Bpbl9kZXNjLFxuLVx0XHRcdFx0XHQgICAgICBEUDgzNjQwX05fUElOUyk7XG4tXHRpZiAoIWNsb2NrLVx1MDAzZWNhcHMucGluX2NvbmZpZykge1xuLVx0XHRrZnJlZShjbG9jayk7XG4tXHRcdGNsb2NrID0gTlVMTDtcbi1cdFx0Z290byBvdXQ7XG4tXHR9XG4tXHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2ssIGJ1cyk7XG4tXHRsaXN0X2FkZF90YWlsKFx1MDAyNmNsb2NrLVx1MDAzZWxpc3QsIFx1MDAyNnBoeXRlcl9jbG9ja3MpO1xuLW91dDpcbi1cdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0cmV0dXJuIGRwODM2NDBfY2xvY2tfZ2V0KGNsb2NrKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgZHA4MzY0MF9jbG9ja19wdXQoc3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrKVxuLXtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi19XG4tXG4gc3RhdGljIGludCBkcDgzNjQwX3NvZnRfcmVzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4gXHRpbnQgcmV0O1xuQEAgLTEzOTgsMjIgKzEzMzUsNzAgQEAgc3RhdGljIGludCBkcDgzNjQwX3RzX2luZm8oc3RydWN0IG1paV90aW1lc3RhbXBlciAqbWlpX3RzLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZHA4MzY0MF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3N0YXRpYyB2b2lkIGRwODM2NDBfcGh5X3JlbGVhc2Uodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwID0gZGF0YTtcbitcdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcDtcbitcdHN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICpuZXh0O1xuIFx0c3RydWN0IGRwODM2NDBfY2xvY2sgKmNsb2NrO1xuK1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbitcbitcdGNsb2NrID0gZHA4MzY0MC1cdTAwM2VjbG9jaztcbitcdHBoeWRldiA9IGRwODM2NDAtXHUwMDNlcGh5ZGV2O1xuK1x0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZHA4MzY0MC1cdTAwM2V0c193b3JrKTtcbitcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXJ4X3F1ZXVlKTtcbitcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkcDgzNjQwLVx1MDAzZXR4X3F1ZXVlKTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXHRpZiAoZHA4MzY0MCA9PSBjbG9jay1cdTAwM2VjaG9zZW4pIHtcbitcdFx0cHRwX2Nsb2NrX3VucmVnaXN0ZXIoY2xvY2stXHUwMDNlcHRwX2Nsb2NrKTtcbitcdFx0Y2xvY2stXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcbitcdFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpc3RfZm9yX2VhY2hfc2FmZSh0aGlzLCBuZXh0LCBcdTAwMjZjbG9jay1cdTAwM2VwaHlsaXN0KSB7XG4rXHRcdFx0dG1wID0gbGlzdF9lbnRyeSh0aGlzLCBzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlLCBsaXN0KTtcbitcdFx0XHRpZiAodG1wID09IGRwODM2NDApIHtcbitcdFx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2dG1wLVx1MDAzZWxpc3QpO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4rXHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbitcdHBoeWRldi1cdTAwM2Vwcml2ID0gTlVMTDtcbitcdGtmcmVlKGRwODM2NDApO1xuK31cbitcbitzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4gXHRzdHJ1Y3QgZHA4MzY0MF9wcml2YXRlICpkcDgzNjQwO1xuLVx0aW50IGVyciA9IC1FTk9NRU0sIGk7XG4rXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0aWYgKHBoeWRldi1cdTAwM2VtZGlvLmFkZHIgPT0gQlJPQURDQVNUX0FERFIpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldF9idXMocGh5ZGV2LVx1MDAzZW1kaW8uYnVzKTtcbi1cdGlmICghY2xvY2spXG4rXHRlcnIgPSBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LCBwaHlkZXYsXG4rXHRcdFx0XHQgICAgQlJPQURDQVNUX0FERFIsIHNpemVvZigqY2xvY2spKTtcbitcdGlmIChlcnIpXG4gXHRcdGdvdG8gbm9fY2xvY2s7XG4gXG4rXHRjbG9jayA9IHBoeV9wYWNrYWdlX2dldF9wcml2KHBoeWRldik7XG4rXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXG4rXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XG4rXHRpZiAocGh5X3BhY2thZ2VfcHJvYmVfb25jZShwaHlkZXYpKVxuK1x0XHRkcDgzNjQwX2Nsb2NrX2luaXQoY2xvY2spO1xuK1x0cGh5X3BhY2thZ2VfdW5sb2NrKHBoeWRldik7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuK1xuIFx0ZHA4MzY0MCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUpO1xuLVx0aWYgKCFkcDgzNjQwKVxuK1x0aWYgKCFkcDgzNjQwKSB7XG4rXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gbm9fbWVtb3J5O1xuK1x0fVxuIFxuIFx0ZHA4MzY0MC1cdTAwM2VwaHlkZXYgPSBwaHlkZXY7XG4gXHRkcDgzNjQwLVx1MDAzZW1paV90cy5yeHRzdGFtcCA9IGRwODM2NDBfcnh0c3RhbXA7XG5AQCAtMTQ1MCw2OCArMTQzNSwzNiBAQCBzdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdH0gZWxzZVxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwODM2NDAtXHUwMDNlbGlzdCwgXHUwMDI2Y2xvY2stXHUwMDNlcGh5bGlzdCk7XG4gXG4tXHRkcDgzNjQwX2Nsb2NrX3B1dChjbG9jayk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2xvY2stXHUwMDNlY2xvY2tfbG9jayk7XG4rXG4rXHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuK1x0XHRcdFx0ICAgICAgIGRwODM2NDBfcGh5X3JlbGVhc2UsIGRwODM2NDApO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdHJldHVybiAwO1xuIFxuIG5vX3JlZ2lzdGVyOlxuIFx0Y2xvY2stXHUwMDNlY2hvc2VuID0gTlVMTDtcbitcdGNsb2NrLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4rXHRwaHlkZXYtXHUwMDNlZGVmYXVsdF90aW1lc3RhbXAgPSBmYWxzZTtcbitcdHBoeWRldi1cdTAwM2VtaWlfdHMgPSBOVUxMO1xuK1x0cGh5ZGV2LVx1MDAzZXByaXYgPSBOVUxMO1xuIFx0a2ZyZWUoZHA4MzY0MCk7XG4gbm9fbWVtb3J5OlxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsb2NrLVx1MDAzZWNsb2NrX2xvY2spO1xuIG5vX2Nsb2NrOlxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZHA4MzY0MF9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB7XG4tXHRzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2s7XG4tXHRzdHJ1Y3QgbGlzdF9oZWFkICp0aGlzLCAqbmV4dDtcbi1cdHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUgKnRtcCwgKmRwODM2NDAgPSBwaHlkZXYtXHUwMDNlcHJpdjtcbi1cdGJvb2wgcmVtb3ZlX2Nsb2NrID0gZmFsc2U7XG4tXG4gXHRpZiAocGh5ZGV2LVx1MDAzZW1kaW8uYWRkciA9PSBCUk9BRENBU1RfQUREUilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cGh5ZGV2LVx1MDAzZW1paV90cyA9IE5VTEw7XG4gXG4gXHRlbmFibGVfc3RhdHVzX2ZyYW1lcyhwaHlkZXYsIGZhbHNlKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkcDgzNjQwLVx1MDAzZXRzX3dvcmspO1xuLVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNlcnhfcXVldWUpO1xuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRwODM2NDAtXHUwMDNldHhfcXVldWUpO1xuLVxuLVx0Y2xvY2sgPSBkcDgzNjQwX2Nsb2NrX2dldChkcDgzNjQwLVx1MDAzZWNsb2NrKTtcbi1cbi1cdGlmIChkcDgzNjQwID09IGNsb2NrLVx1MDAzZWNob3Nlbikge1xuLVx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihjbG9jay1cdTAwM2VwdHBfY2xvY2spO1xuLVx0XHRjbG9jay1cdTAwM2VjaG9zZW4gPSBOVUxMO1xuLVx0fSBlbHNlIHtcbi1cdFx0bGlzdF9mb3JfZWFjaF9zYWZlKHRoaXMsIG5leHQsIFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpIHtcbi1cdFx0XHR0bXAgPSBsaXN0X2VudHJ5KHRoaXMsIHN0cnVjdCBkcDgzNjQwX3ByaXZhdGUsIGxpc3QpO1xuLVx0XHRcdGlmICh0bXAgPT0gZHA4MzY0MCkge1xuLVx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0bXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH1cbi1cdH1cbi1cbi1cdGlmICghY2xvY2stXHUwMDNlY2hvc2VuIFx1MDAyNlx1MDAyNiBsaXN0X2VtcHR5KFx1MDAyNmNsb2NrLVx1MDAzZXBoeWxpc3QpKVxuLVx0XHRyZW1vdmVfY2xvY2sgPSB0cnVlO1xuLVxuLVx0ZHA4MzY0MF9jbG9ja19wdXQoY2xvY2spO1xuLVx0a2ZyZWUoZHA4MzY0MCk7XG4tXG4tXHRpZiAocmVtb3ZlX2Nsb2NrKSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5dGVyX2Nsb2Nrc19sb2NrKTtcbi1cdFx0bGlzdF9kZWwoXHUwMDI2Y2xvY2stXHUwMDNlbGlzdCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHl0ZXJfY2xvY2tzX2xvY2spO1xuLVxuLVx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmNsb2NrLVx1MDAzZWV4dHJlZ19sb2NrKTtcbi1cdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZjbG9jay1cdTAwM2VjbG9ja19sb2NrKTtcbi1cdFx0cHV0X2RldmljZShcdTAwMjZjbG9jay1cdTAwM2VidXMtXHUwMDNlZGV2KTtcbi1cdFx0a2ZyZWUoY2xvY2stXHUwMDNlY2Fwcy5waW5fY29uZmlnKTtcbi1cdFx0a2ZyZWUoY2xvY2spO1xuLVx0fVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZHA4MzY0MF9kcml2ZXJbXSA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG5pbmRleCAxNmFlOGQxYzFmODlhLi43MzU4MDZjNWJlYTg4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jXG5AQCAtNTIsNiArNTIsMjkgQEAgdm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfZ2V0X3ByaXYpO1xuIFxuKy8qKlxuKyAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXG4rICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcbisgKlxuKyAqIFVzZSB0aGlzIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcGFja2FnZS1wcml2YXRlIGRhdGEuIFJlbGVhc2UgdGhlIGxvY2tcbisgKiB3aXRoIHBoeV9wYWNrYWdlX3VubG9jaygpLlxuKyAqL1xuK3ZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdG11dGV4X2xvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XG4rXG4rLyoqXG4rICogcGh5X3BhY2thZ2VfdW5sb2NrIC0gcmVsZWFzZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXG4rICovXG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uYnVzLVx1MDAzZXNoYXJlZF9sb2NrKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfdW5sb2NrKTtcbitcbiBzdGF0aWMgaW50IHBoeV9wYWNrYWdlX2FkZHJlc3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGFkZHJfb2Zmc2V0KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmggYi9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbmluZGV4IDBmYmEyNDVmOTc0NTguLmM2ZTI2YWM2YjI4ZjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGliLmhcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaWIuaFxuQEAgLTEyLDYgKzEyLDggQEAgc3RydWN0IG1paV9idXM7XG4gXG4gc3RydWN0IGRldmljZV9ub2RlICpwaHlfcGFja2FnZV9nZXRfbm9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbiB2b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcbit2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4rdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XG4gaW50IF9fcGh5X3BhY2thZ2VfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXG4gXHRcdCAgICAgICB1MzIgcmVnbnVtKTtcbiBpbnQgX19waHlfcGFja2FnZV93cml0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWdcbmluZGV4IGI5MzY0MGNhMDhiNzIuLmZlYjUwZjhjYzQwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3B0cC9LY29uZmlnXG4rKysgYi9kcml2ZXJzL3B0cC9LY29uZmlnXG5AQCAtNzgsNiArNzgsNyBAQCBjb25maWcgRFA4MzY0MF9QSFlcbiBcdGRlcGVuZHMgb24gUEhZTElCXG4gXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gXHRzZWxlY3QgQ1JDMzJcbitcdHNlbGVjdCBQSFlfUEFDS0FHRVxuIFx0aGVscFxuIFx0ICBTdXBwb3J0cyB0aGUgRFA4MzY0MCBQSFlURVIgd2l0aCBJRUVFIDE1ODggZmVhdHVyZXMuXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToxMi44MTY1NTgzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MjE3NjkzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBkcDgzNjQwIFBIWSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jYC4gVGhpcyBzZWVtcyB0byBiZSByZWZhY3RvcmluZyBob3cgdGhlIGRwODM2NDAgUEhZIGRyaXZlciBtYW5hZ2VzIGl0cyBjbG9jayBhbmQgcHJpdmF0ZSBkYXRhLCBtb3ZpbmcgYXdheSBmcm9tIGEgZ2xvYmFsIGxpc3QsIGBwaHl0ZXJfY2xvY2tzYCwgdG93YXJkcyBgcGh5X3BhY2thZ2VfZ2V0X3ByaXYoKWAgYW5kIGBkZXZtX3BoeV9wYWNrYWdlX2pvaW4oKWAuIEFsc28sIHRoZXJlIGFyZSBuZXcgbG9jayBmdW5jdGlvbnMgaW4gYHBoeV9wYWNrYWdlLmNgLiBBbmQgaXQgbG9va3MgbGlrZSB0aGUgS2NvbmZpZyBpcyBiZWluZyB1cGRhdGVkIHRvIHNlbGVjdCBgUEhZX1BBQ0tBR0VgIHNwZWNpZmljYWxseSBmb3IgYERQODM2NDBfUEhZYC5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gdXNlZCB0byBkZWFsaW5nIHdpdGggUEhZIGRyaXZlcnMgaW4gcmVhbCBoYXJkd2FyZSBzY2VuYXJpb3MsIGJ1dCBzb21ldGltZXMgdGhlcmUgYXJlIHNpbXVsYXRlZCBQSFlzIG9yIHZpcnR1YWwgTUFDcyB0aGF0IGludGVyYWN0IHdpdGggdGhlbS4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIGdldCBwcm9iZWQgd2hlbiBhIG5ldHdvcmsgZHJpdmVyIHJlZ2lzdGVycyBhbiBNRElPIGJ1cyBhbmQgdGhlbiBzY2FucyBmb3IgUEhZcy5cblxuTGV0J3Mgc2VlLCB3aGF0IHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXR3b3JrIGRyaXZlcnMgYXJlIG91dCB0aGVyZSB0aGF0IG1pZ2h0IHRyaWdnZXIgUEhZIHByb2JlcyBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBJIHRoaW5rIG9mIHRoaW5ncyBsaWtlIGBtYWNiYCwgYGZlY2AsIGBlMTAwMGAgKHRob3VnaCwgd2FpdCwgZG9lcyBgZTEwMDBgIGhhdmUgaXRzIG93biBQSFkgY29kZT8pLCBgdmlydGlvLW5ldGAgKG5vLCBub3QgdGhhdCBvbmUpLCBhbmQgbWF5YmUgYGRzYV9sb29wYD9cblxuQWN0dWFsbHksIHdoYXQgYWJvdXQgc3l6a2FsbGVyPyBEb2VzIHN5emthbGxlciBoYXZlIGEgdmlydHVhbCBNRElPIGJ1cyBvciBjYW4gaXQgaW5qZWN0IE1ESU8gZGV2aWNlcyB0aHJvdWdoIG5ldGxpbms/IEhtbSwgbm8sIHVzdWFsbHkgc3l6a2FsbGVyIGZvY3VzZXMgb24gZnV6emluZyBVU0IgZGV2aWNlcywgd2hpY2ggKmNvdWxkKiBoYXZlIE1ESU8gYnVzZXMsIGxpa2UgYHNtc2M5NXh4YCwgYGFzaXhgLCBvciBgbGFuNzh4eGAuIFRoYXQncyBhIHRob3VnaHQuLi4gVVNCIG5ldHdvcmsgYWRhcHRlcnMhIE9mdGVuLCB0aGVzZSBoYXZlIGFuIE1ESU8gYnVzIGFuZCBjb3VsZCBiaW5kIHRvIGEgZ2VuZXJpYyBvciBzcGVjaWZpYyBQSFkgZHJpdmVyLlxuXG5TbywgaWYgSSBlbmFibGUgYERQODM2NDBfUEhZYCwgY291bGQgaXQgYmUgcHJvYmVkIHZpYSBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgdGhhdCBtaWdodCBhbGxvdyBhcmJpdHJhcnkgUEhZIElEcz8gVGhhdCdzIHdoYXQgSSB3YW50IHRvIGtub3cuIENhbiB0aGlzIGJlIGZ1enplZD9cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgZHA4MzY0MC5jYCAoYSBQSFkgZHJpdmVyKSBhbmQgYHBoeV9wYWNrYWdlLmNgIChQSFkgcGFja2FnZSBjb3JlKS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgZHA4MzY0MGAgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC4gSSBndWVzcyBJJ2xsIHN0YXJ0IGJ5IHNlYXJjaGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIGBEUDgzNjQwX1BIWWAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIncyBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToyMi43MzgzMzA0MTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDE0MTM3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEUDgzNjQwX1BIWVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTEzNz1DT05GSUdfU1BJX1BMMDIyPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjEzODpDT05GSUdfRFA4MzY0MF9QSFk9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctMTM5LUNPTkZJR19HUElPTElCPXlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT01NT1vYmotJChDT05GSUdfREFWSUNPTV9QSFkpXFx0Kz0gZGF2aWNvbS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjU2Om9iai0kKENPTkZJR19EUDgzNjQwX1BIWSlcXHQrPSBkcDgzNjQwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNTctb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVxcdCs9IGRwODM4MjIub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yNi1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjI3OiNkZWZpbmUgRFA4MzY0MF9QSFlfSURcXHQweDIwMDA1Y2UxXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0yOC0jZGVmaW5lIFBBR0VTRUxcXHRcXHQweDEzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTE0NzA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRwODM2NDBfZHJpdmVyW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDcxLXtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjE0NzI6XFx0LnBoeV9pZFxcdFxcdD0gRFA4MzY0MF9QSFlfSUQsXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDczLVxcdC5waHlfaWRfbWFza1xcdD0gMHhmZmZmZmZmMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRwODM2NDBfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxNDkyOlxcdHsgRFA4MzY0MF9QSFlfSUQsIDB4ZmZmZmZmZjAgfSxcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0OTMtXFx0eyB9XFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTcyPWNvbW1lbnQgXFxcIkVuYWJsZSBQSFlMSUIgYW5kIE5FVFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLlxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo3NTpjb25maWcgRFA4MzY0MF9QSFlcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc2LVxcdHRyaXN0YXRlIFxcXCJEcml2ZXIgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNToyNC4zNDg0NzcxNTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjYxNDgzMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRFA4MzY0MCBQSFkgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM2NDAgUEhZVEVSLiBUaGUgZHJpdmVyIGl0c2VsZiBpcyBwcmV0dHkgc3RhbmRhcmQsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGJvdW5kIHRvIGEgc3BlY2lmaWMgUEhZIElELCBgMHgyMDAwNWNlMWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGJlIHVzZWQgdG8gdHJpY2sgdGhlIGtlcm5lbCBpbnRvIHByb2JpbmcgdGhpcyBkcml2ZXI/IEdpdmVuIGl0cyBjYXBhYmlsaXRpZXMsIEkgdGhpbmsgdGhlIGFuc3dlciBpcyB5ZXMuXG5cbkkga25vdyBzeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIG5ldHdvcmsgYWRhcHRlcnMgdXNpbmcgdGhlIGB2aGNpYCBpbnRlcmZhY2UuIFRoaXMgaXMgaG93IGl0IGludGVyYWN0cyB3aXRoIGRyaXZlcnMgbGlrZSBgc21zYzk1eHhgIG9yIGBhc2l4YC4gVGhlc2UgYWRhcHRlcnMgcmVnaXN0ZXIgYW4gTURJTyBidXMsIGFuZCBjcnVjaWFsbHksIHRoZXkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIGEgY3JhZnRlZCBJRCwgc3VjaCBhcyBgMHgyMDAwNWNlMWAsIGR1cmluZyBNRElPIGJ1cyBzY2Fucy4gVGhpcyBzaG91bGQgZm9yY2UgdGhlIGBkcDgzNjQwYCBkcml2ZXIgdG8gYmUgcHJvYmVkLCBhbGxvd2luZyBtZSB0byBpbnRlcmFjdCB3aXRoIGl0LlxuXG5JIGFsc28gcmVtZW1iZXIgc3l6a2FsbGVyIGhhcyBvdGhlciB0b29scywgbGlrZSBgc3l6X2dlbmV0bGlua2AsIHRoYXQgbWlnaHQgYWxsb3cgZGlyZWN0IGludGVyYWN0aW9uIHdpdGggUEhZcywgYnV0IGluamVjdGluZyBJRHMgdmlhIFVTQiBlbXVsYXRpb24gaXMgdGhlIG1vc3QgY29tbW9uIGFuZCBsaWtlbHkgdGhlIG1vc3QgcmVsaWFibGUgbWV0aG9kIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci5cblxuV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoaXMgaXMgYSAqUEhZIGRyaXZlciosIG5vdCBqdXN0IGEgcmFuZG9tIG5ldHdvcmsgZGV2aWNlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGZ1bmN0aW9ucyBsaWtlIGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBhbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuIFRoYXQncyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBwaHlfcGFja2FnZS5jYCwgd2hpY2ggaXMgY29yZSBQSFkgY29kZS4gVGhhdCdzIGEgZ29vZCBzaWduIGJlY2F1c2UgaXQgbWVhbnMgdGhlIGlzc3VlIG1heSBiZSBpbiBhIHNoYXJlZCBwYXJ0LiBMZXQncyBkaWcgZGVlcGVyIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJhY2UgY29uZGl0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGhvdyBpdCdzIGRlYWxpbmcgd2l0aCBsb2NraW5nLCBzcGVjaWZpY2FsbHkgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTozMS4wMDk5NjI1MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMjkwOTY1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfcGFja2FnZV9sb2NrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM9MTM3ND1zdGF0aWMgaW50IGRwODM2NDBfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTM4OS1cXHQvKiBFbnN1cmUgb3RoZXIgUEhZIHByb2JlcyB3YWl0IGZvciBzaGFyZWQgY2xvY2sgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYzoxMzkwOlxcdHBoeV9wYWNrYWdlX2xvY2socGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzOTEtXFx0aWYgKHBoeV9wYWNrYWdlX3Byb2JlX29uY2UocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jPTUzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeV9wYWNrYWdlX2dldF9wcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU1LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjU2OiAqIHBoeV9wYWNrYWdlX2xvY2sgLSBhY3F1aXJlIHRoZSBQSFkgcGFja2FnZSBsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNTctICogQHBoeWRldjogUEhZIGRldmljZSB0aGF0IGhhcyBqb2luZWQgdGhlIHBhY2thZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jOjYyOnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTY1LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2NjpFWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9sb2NrKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaD0xND12b2lkICpwaHlfcGFja2FnZV9nZXRfcHJpdihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg6MTU6dm9pZCBwaHlfcGFja2FnZV9sb2NrKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaWIuaC0xNi12b2lkIHBoeV9wYWNrYWdlX3VubG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6MzIuNTQyODc3ODA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzODkwNjc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBQSFkgUGFja2FnZSBMb2NraW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgaW50byBgcGh5X3BhY2thZ2UuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQgaW4gdGhlIGNvcmUgb2YgdGhpbmdzLiBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZWFoLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBIWSBkcml2ZXIsIHRvdWNoaW5nIHRoZSBQSFkgY29yZSBpdHNlbGYsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBwbGFjZSB0byBsb29rIGZvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5Ob3csIGhvdyBkbyB3ZSBnZXQgYXQgaXQ/IEFoLCByaWdodCwgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi4gVGhhdCdzIG91ciBwcm9iZSBwb2ludC4gTGV0J3Mgc2VlLi4uIHdoYXQgYXJlIHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlPyBIbW0sIGxldCdzIGxpc3QgdGhvc2UgdXA6IGBkcDgzNjQwX3Byb2JlYCwgYGRwODM2NDBfcGh5X3JlbGVhc2VgLCBgZHA4MzY0MF9jbG9ja19pbml0YCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgZnVuY3Rpb25zIHRoZW1zZWx2ZXMsIGBwaHlfcGFja2FnZV9sb2NrYCwgYHBoeV9wYWNrYWdlX3VubG9ja2AuXG5cbkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBgZHA4MzY0MF9waHlfcmVsZWFzZWAgaXMgYSBgZGV2bWAgYWN0aW9uIGNhbGxiYWNrLCBpc24ndCBpdD8gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyBpbiBgZHA4MzY0MC5jYCB0aGF0IHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGNvdmVyaW5nIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDEzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjM3LjA4MTc4Njk1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ5ODY1ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRwODM2NDBfcGh5X3JlbGVhc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYz0xMzE0PXN0YXRpYyBpbnQgZHA4MzY0MF90c19pbmZvKHN0cnVjdCBtaWlfdGltZXN0YW1wZXIgKm1paV90cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTMzNy1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jOjEzMzg6c3RhdGljIHZvaWQgZHA4MzY0MF9waHlfcmVsZWFzZSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTE0NDAtXFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTQ0MTpcXHRcXHRcXHRcXHQgICAgICAgZHA4MzY0MF9waHlfcmVsZWFzZSwgZHA4MzY0MCk7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xNDQyLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI1OjM4LjgzMTY1NzAzMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDI5NjE0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucyBhbmQgdGhlIHRob3VnaHQgcHJvY2VzcywgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBgRFA4MzY0MF9QSFlgIGRyaXZlciBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lIGltbWVkaWF0ZWx5IGFyZSBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYW5kIGBkcDgzNjQwX2Nsb2NrX2luaXRgLiBgZHA4MzY0MF9wcm9iZWAsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXZpY2UgZGV0ZWN0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZ2VuZXJhbCBzZXR1cC4gYGRwODM2NDBfcGh5X3JlbGVhc2VgIHdpbGwgYmUgdGhlIGNvdW50ZXJwYXJ0LCBoYW5kbGluZyBjbGVhbnVwIGFuZCByZXNvdXJjZSBkZWFsbG9jYXRpb24gdXBvbiBkcml2ZXIgdW5sb2FkIG9yIGRldmljZSByZW1vdmFsLiBBbmQgYGRwODM2NDBfY2xvY2tfaW5pdGAuLi4gd2VsbCwgdGhhdCdzIGNydWNpYWwuIFBIWXMgYXJlIG5vdG9yaW91cyBmb3IgdGhlaXIgY2xvY2tpbmcgcmVxdWlyZW1lbnRzLCBzbyBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIG1hbmFnZXMgY2xvY2sgY29uZmlndXJhdGlvbnMsIFBMTCBzZXR1cCwgYW5kIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24gZm9yIHRoZSBEUDgzNjQwLiBUaGlzIGlzIHRoZSBoZWFydCBvZiByZWxpYWJsZSBvcGVyYXRpb24uXG5cbk5vdywgSSdtIGFsc28gc2VlaW5nIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AgbGlzdGVkLiBUaGVzZSBzdHJvbmdseSBzdWdnZXN0IGEgbG9ja2luZyBtZWNoYW5pc20gaXMgaW4gcGxhY2UsIHByb2JhYmx5IHRvIHByb3RlY3QgYWdhaW5zdCByYWNlIGNvbmRpdGlvbnMgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIG9yIHByb2Nlc3NlcyBtaWdodCBiZSBhY2Nlc3Npbmcgb3IgY29uZmlndXJpbmcgdGhlIFBIWS4gVGhpcyBpcyBnb29kIHByYWN0aWNlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBsb2NrOyBpcyBpdCBhdCB0aGUgUEhZIGxldmVsLCB0aGUgcGFja2FnZSBsZXZlbCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IENvbmN1cnJlbnQgYWNjZXNzIHRvIFBIWXMgaXMgY29tbW9uLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlLiBJICpuZWVkKiB0byB1bmRlcnN0YW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoaXMgZHJpdmVyIGhhcy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIFBIWSB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbj8gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2lkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHNheXMgYWJvdXQgYERQODM2NDBfUEhZYC4gVGhpcyB3aWxsIGRyaXZlIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0My4zMzQ2MjA0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTEyNDcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFA4MzY0MF9QSFlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz03Mj1jb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTc0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NzU6Y29uZmlnIERQODM2NDBfUEhZXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiRHJpdmVyIGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzNjQwIFBIWVRFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NDQuODEzNzUxMTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzU4MTQyNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgUFRQIEtlcm5lbCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHNwZWNpZmljIHN1YnN5c3RlbSBsaWtlIHRoaXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgNzU7IEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSBzb21lIG9mIHRoZSBtb3JlIGltcG9ydGFudCB0b3AtbGV2ZWwgb3B0aW9ucywgb3IgcGVyaGFwcyBhIHNlY3Rpb24gaGVhZGluZywgd2lsbCBiZSBsb2NhdGVkLiBUaGlzIHdpbGwgbGlrZWx5IGdpdmUgbWUgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBtYWpvciBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgUFRQIGRyaXZlci4gS25vd2luZyB0aGF0IHN0YXJ0aW5nIHBvaW50IHdpbGwgbGlrZWx5IGFsbG93IG1lIHRvIHVuZGVyc3RhbmQgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGluIGl0cyByZWxldmFudCBjb250ZXh0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MjIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0OC43NDk1NjgwMTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHRkZXBlbmRzIG9uIEdJQU5GQVIgfHwgRlNMX0RQQUFfRVRIIHx8IEZTTF9EUEFBMl9FVEggfHwgRlNMX0VORVRDIHx8IEZTTF9FTkVUQ19WRiB8fCBDT01QSUxFX1RFU1RcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDYyOlxcdFxcdGRlZmF1bHQgeSBpZiBHSUFORkFSIHx8IEZTTF9EUEFBX0VUSCB8fCBGU0xfRFBBQTJfRVRIIHx8IEZTTF9FTkVUQyB8fCBGU0xfRU5FVENfVkZcXG4gIDYzOlxcdFxcdGhlbHBcXG4gIDY0OlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyB0aGUgRnJlZXNjYWxlIFFvcklRIDE1ODhcXG4gIDY1OlxcdFxcdCAgdGltZXIgYXMgYSBQVFAgY2xvY2suIFRoaXMgY2xvY2sgaXMgb25seSB1c2VmdWwgaWYgeW91ciBQVFBcXG4gIDY2OlxcdFxcdCAgcHJvZ3JhbXMgYXJlIGdldHRpbmcgaGFyZHdhcmUgdGltZSBzdGFtcHMgb24gdGhlIFBUUCBFdGhlcm5ldFxcbiAgNjc6XFx0XFx0ICBwYWNrZXRzIHVzaW5nIHRoZSBTT19USU1FU1RBTVBJTkcgQVBJLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDcwOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX3FvcmlxLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb21tZW50IFxcXCJFbmFibGUgUEhZTElCIGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNsb2Nrcy5cXFwiXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBIWUxJQj1uIHx8IE5FVFdPUktfUEhZX1RJTUVTVEFNUElORz1uXFxuICA3NDpcXHRcXG4gIDc1OlxcdGNvbmZpZyBEUDgzNjQwX1BIWVxcbiAgNzY6XFx0XFx0dHJpc3RhdGUgXFxcIkRyaXZlciBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgRFA4MzY0MCBQSFlURVJcXFwiXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1xcbiAgNzg6XFx0XFx0ZGVwZW5kcyBvbiBQSFlMSUJcXG4gIDc5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDgwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgODE6XFx0XFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuICA4MjpcXHRcXHRoZWxwXFxuICA4MzpcXHRcXHQgIFN1cHBvcnRzIHRoZSBEUDgzNjQwIFBIWVRFUiB3aXRoIElFRUUgMTU4OCBmZWF0dXJlcy5cXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0ICBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBEUDgzNjQwIGFzIGEgUFRQXFxuICA4NjpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgUFRQIHByb2dyYW1zIGFyZVxcbiAgODc6XFx0XFx0ICBnZXR0aW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBzIG9uIHRoZSBQVFAgRXRoZXJuZXQgcGFja2V0c1xcbiAgODg6XFx0XFx0ICB1c2luZyB0aGUgU09fVElNRVNUQU1QSU5HIEFQSS5cXG4gIDg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo0OC43NDk2MzQ3NjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyODE3ODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBEUDgzNjQwIFBIWSBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYERQODM2NDBfUEhZYCBpcyBpbnRyaW5zaWNhbGx5IGxpbmtlZCB0byB0aHJlZSBrZXkgY29tcG9uZW50czogYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gS25vd2luZyBteSBmaWVsZCwgdGhpcyBpbnN0YW50bHkgc2V0cyBvZmYgYSBtZW50YWwgY2hlY2tsaXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0byBkaWcgaW50byB0aGUgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AgZGVwZW5kZW5jeS4gTGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIHByb3ZpZGVzLCBhbmQgaG93IHRoZSBgRFA4MzY0MF9QSFlgIGxldmVyYWdlcyBpdC4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHRpbWluZyBpc3N1ZXMsIGludGVycnVwdCBjb25maWd1cmF0aW9ucywgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgYW5kIHRoZSBkZWVwZXIgaW1wbGljYXRpb25zIHRoYXQgdGhpcyBQSFkgcmVxdWlyZXMgc3BlY2lmaWMgZmVhdHVyZXMgZm9yIHByZWNpc2UgdGltZXN0YW1waW5nLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIG9wZXJhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NTMuMDc3ODE1NjM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU4NDY4NjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuLS1cXG5uZXQvS2NvbmZpZy0xNTMtXFxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5uZXQvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNTo1NC41MzYyODk3MDZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNzMxMjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgYFBUUF8xNTg4X0NMT0NLYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGluaXRpYWwgdGhvdWdodCwgb2YgY291cnNlLCBpcyBhIGRpcmVjdCBjYWxsIHRvIGFjdGlvbjogXCJMZXQncyBjaGVjayBgUFRQXzE1ODhfQ0xPQ0tgLlwiIE5vIGZsdWZmLCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHRhc2sgaXMgb24gdGhlIGFnZW5kYSwgbGlrZWx5IHRyb3VibGVzaG9vdGluZywgdmFsaWRhdGlvbiwgb3IgcGVyaGFwcyBzaW1wbHkgZ2F0aGVyaW5nIGRhdGEgcmVsYXRlZCB0byBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jayBmdW5jdGlvbmFsaXR5LiBUaGVyZSdzIGEgY29udGV4dCBpbXBsaWVkIGhlcmUg4oCTIGEgc3lzdGVtLCBuZXR3b3JrLCBvciBhcHBsaWNhdGlvbiB0aGF0IHJlbGllcyBvbiBhY2N1cmF0ZSB0aW1lIHN5bmNocm9uaXphdGlvbi4gTXkgZm9jdXMgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gd2hhdGV2ZXIgYXNwZWN0cyBvZiBgUFRQXzE1ODhfQ0xPQ0tgIG5lZWQgdG8gYmUgYWRkcmVzc2VkLiBXaGVyZSdzIHRoZSBwcm9ibGVtPyBXaGF0IG5lZWRzIHRvIGJlIHVuZGVyc3Rvb2Q/IFdoYXQncyB0aGUgbmV4dCBhY3Rpb24/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTcwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjU6NTguOTQzNjA0NTIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI2OTIyMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZz0yMT1jb25maWcgSVhQNFhYX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc6MzE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lYUDQ2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkludGVsIElYUDQ2eCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTY9bWVudSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9wdHAvS2NvbmZpZy03LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvcHRwL0tjb25maWctMzEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU5LVxcdHRyaXN0YXRlIFxcXCJGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiWkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEwNDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUENIXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFBDSCBFRzIwVCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIktWTSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTM0LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE1Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1My1cXHR0cmlzdGF0ZSBcXFwiSURUIDgyUDMzeHh4IFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTYzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTY0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVxcdHRyaXN0YXRlIFxcXCJJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzUtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSBcXFwiUkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg5LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk4LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTk5OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiVk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTAtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEyLVxcdHRyaXN0YXRlIFxcXCJPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjI2OjAwLjM3MDUzMDU5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDg4MDM2NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIG5ldHdvcmtpbmcgc2V0dXAgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGluIHBsYWNlIGZvciBwcmVjaXNlIHRpbWluZyBhbmQgc3luY2hyb25pemF0aW9uLiBNeSBjaGVja2xpc3QgaXM6IGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgaGFyZHdhcmUtYXNzaXN0ZWQgdGltZXN0YW1waW5nLCBvYnZpb3VzbHkuIFRoZW4sIGBQSFlMSUJgIC0gb2YgY291cnNlIEkgbmVlZCB0aGUgUEhZIGxpYnJhcnkuIE5leHQgdXAsIHRoZSBgUFRQXzE1ODhfQ0xPQ0tgIC0gdGhhdCdzIGVzc2VudGlhbCBmb3IgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgc3VwcG9ydCwgdml0YWwgZm9yIG1hbnkgb2YgbXkgYXBwbGljYXRpb25zLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBEUDgzNjQwX1BIWWAgb3IgdGhlIGNvcnJlY3QgUEhZIGRyaXZlci4gSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gdmVyaWZ5IGBQSFlMSUJgIGFzIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRvIHZlcmlmeSBpdHMgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4OTYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOToyNjowNy44NTg1Njg4NTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzQ4MzI0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZz02PWNvbmZpZyBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTptZW51Y29uZmlnIFBIWUxJQlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJQSFkgRGV2aWNlIHN1cHBvcnQgYW5kIGluZnJhc3RydWN0dXJlXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDY9Y29uZmlnIE9QRU5fQUxMSUFOQ0VfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NDk6Y29uZmlnIFBIWUxJQl9MRURTXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTAtXFx0ZGVmX2Jvb2wgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MjY6MDkuMjkzNDA3OTM1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODM5ODA2MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gY29uZmlybWluZyB0aGF0IGBQSFlMSUJgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB0aGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERQODM2NDBfUEhZYC4gQWxyaWdodCwgaXQgYXBwZWFycyB0aGF0IGBEUDgzNjQwX1BIWWAgcmVsaWVzIG9uIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyBpdHMgZnVuY3Rpb25hbGl0eS5cblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGRwODM2NDBfcHJvYmVgIGlzIGFjY2Vzc2libGUuIEFoLCByaWdodCwgdGhyb3VnaCBNRElPIGJ1cyBzY2FubmluZy4gVGhhdCBjbGFyaWZpZXMgdGhpbmdzLiBJdCBzZWVtcyBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgRFA4MzY0MCBoYXJkd2FyZSwgYnV0IHN5emthbGxlciBwcm92aWRlcyBhIHJvdXRlLCBlbXVsYXRpbmcgVVNCIGRldmljZXMgdGhhdCBleHBvc2UgYW4gTURJTyBidXMgYW5kIG1hc3F1ZXJhZGluZyBhcyBhIERQODM2NDAgUEhZLiBUaGlzIHNob3VsZCBhbGxvdyBmb3IgdGVzdGluZy5cblxuRnVydGhlcm1vcmUsIHRoZSBwYXRjaCB0b3VjaGVzIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIFRoZXNlIGFyZSAqZXhwb3J0ZWQqIHN5bWJvbHMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhleSBhcmUgcGFydCBvZiB0aGUgY29yZSBQSFkgY29kZSBhbmQgdGh1cyB1c2VkIGJ5IG90aGVyIFBIWSBkcml2ZXJzLiBCdXQsIGN1cnJlbnRseSwgSSB0aGluayBvbmx5IERQODM2NDAgdXNlcyB0aGVtLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCdzIGRpZyBkZWVwZXIgdG8gYmUgc3VyZSBhYm91dCB0aGlzIGNyb3NzLWRyaXZlciB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyODYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MzE6NTcuNjkxNDczMDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzcyNTgzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X3BhY2thZ2VfbG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jPTEzNzQ9c3RhdGljIGludCBkcDgzNjQwX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZHA4MzY0MC5jLTEzODktXFx0LyogRW5zdXJlIG90aGVyIFBIWSBwcm9iZXMgd2FpdCBmb3Igc2hhcmVkIGNsb2NrIGluaXRpYWxpemF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9kcDgzNjQwLmM6MTM5MDpcXHRwaHlfcGFja2FnZV9sb2NrKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2RwODM2NDAuYy0xMzkxLVxcdGlmIChwaHlfcGFja2FnZV9wcm9iZV9vbmNlKHBoeWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYz01Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlfcGFja2FnZV9nZXRfcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy01NS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo1NjogKiBwaHlfcGFja2FnZV9sb2NrIC0gYWNxdWlyZSB0aGUgUEhZIHBhY2thZ2UgbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfcGFja2FnZS5jLTU3LSAqIEBwaHlkZXY6IFBIWSBkZXZpY2UgdGhhdCBoYXMgam9pbmVkIHRoZSBwYWNrYWdlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02MS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYzo2Mjp2b2lkIHBoeV9wYWNrYWdlX2xvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X3BhY2thZ2UuYy02NS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmM6NjY6RVhQT1JUX1NZTUJPTF9HUEwocGh5X3BhY2thZ2VfbG9jayk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9wYWNrYWdlLmMtNjctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmg9MTQ9dm9pZCAqcGh5X3BhY2thZ2VfZ2V0X3ByaXYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpYi5oOjE1OnZvaWQgcGh5X3BhY2thZ2VfbG9jayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGliLmgtMTYtdm9pZCBwaHlfcGFja2FnZV91bmxvY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjMxOjU5LjE2ODczNjQ3NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg0MjIwMjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERQODM2NDAgUEhZIERyaXZlciBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgcGh5X3BhY2thZ2VfbG9ja2AgaXMgb25seSB1c2VkIHdpdGhpbiBgZHA4MzY0MC5jYCByaWdodCBub3csIHdoaWNoIGlzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaGVyZS5cblxuTGV0J3MgcXVpY2tseSByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlci4gSSdtIHRoaW5raW5nIG9mIGVuYWJsaW5nIGBEUDgzNjQwX1BIWWAsIGBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdgLCBgUEhZTElCYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIFRob3VnaCwgaG9uZXN0bHksIGBQSFlMSUJgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tgIGFyZSBwcmV0dHkgY29tbW9uIGFuZCBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igb3RoZXIgbmV0d29yayBkcml2ZXJzLiBTdGlsbCwgYmV0dGVyIHRvIGJlIHRob3JvdWdoIGFuZCBsaXN0IHRoZW0gb3V0LlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGBEUDgzNjQwX1BIWWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBZZXMsIGl0IGlzLCBieSB1c2luZyBVU0IgTURJTyBlbXVsYXRpb24uXG5cbk5vdyBmb3IgZm9jdXNpbmcgb24ga2V5IHN5bWJvbHMuIEkgbmVlZCB0byB6ZXJvIGluIG9uOiBgZHA4MzY0MF9wcm9iZWAsIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCwgYGRwODM2NDBfY2xvY2tfaW5pdGAsIGFuZCB0aGVuIG9mIGNvdXJzZSBgcGh5X3BhY2thZ2VfbG9ja2AgYW5kIGBwaHlfcGFja2FnZV91bmxvY2tgLlxuXG5IYW5nIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrIGlmIGBkcDgzNjQwX2Nsb2NrX2luaXRgIGlzIHN0YXRpYy4gWWVwLCBpdCBpczogYHN0YXRpYyB2b2lkIGRwODM2NDBfY2xvY2tfaW5pdChzdHJ1Y3QgZHA4MzY0MF9jbG9jayAqY2xvY2spYC4gQmVjYXVzZSBpdCdzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgaW4gYGRwODM2NDBfcHJvYmVgLCBpdCAqbWlnaHQqIGJlIGlubGluZWQuIExldCdzIHF1aWNrbHkgZ3Vlc3MgaWYgaXQncyBsYXJnZSBlbm91Z2ggdG8gcHJldmVudCBpbmxpbmluZy4gSXQncyBhYm91dCB0d2VudHkgbGluZXMuIFByb2JhYmx5ICptaWdodCogYmUsIHNvIEknbGwganVzdCBpbmNsdWRlIGBkcDgzNjQwX3Byb2JlYCBhbmQgYGRwODM2NDBfcGh5X3JlbGVhc2VgLiBCdXQgYHBoeV9wYWNrYWdlX2xvY2tgIGFuZCBgcGh5X3BhY2thZ2VfdW5sb2NrYCBhcmUgZXhwb3J0ZWQsIHNvIHRob3NlIHdvbid0IGJlIGlubGluZWQgZm9yIHN1cmUuXG5cbk9rYXksIGxldCBtZSBjaGVjayBgZHA4MzY0MF9waHlfcmVsZWFzZWAuIEl0J3Mgc3RhdGljLCBidXQgdXNlZCBhcyBhIGNhbGxiYWNrIGZvciBgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0YC4gVGhhdCdzIGltcG9ydGFudCEgQ2FsbGJhY2tzIGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbi4gU28sIGBkcDgzNjQwX3BoeV9yZWxlYXNlYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBmb2N1cyBzeW1ib2wuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlOlxuXG4qICAgYGRwODM2NDBfcHJvYmVgXG4qICAgYGRwODM2NDBfcGh5X3JlbGVhc2VgXG4qICAgYHBoeV9wYWNrYWdlX2xvY2tgXG4qICAgYHBoeV9wYWNrYWdlX3VubG9ja2BcblxuTm93LCBsZXQncyByZXZpZXcgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaC4gSXQncyBtb2RpZnlpbmcgdGhlIERQODM2NDAgUEhZIGRyaXZlciB0byB1c2UgdGhlIFBIWSBwYWNrYWdlIGNvcmUgZm9yIHNoYXJlZCBkYXRhLCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgbGlzdC4gVGhhdCdzIGdvb2QsIGFuZCBpdCdzIGFkZGluZyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gSXQgc291bmRzIGxpa2UgZnVuY3Rpb25hbCBjb2RlIHJlYWNoZWQgYnkgdGhlIFVTQiBNRElPIGVtdWxhdGlvbi5cblxuQW5kIHRoZSBjb25maWd1cmF0aW9ucyB3ZSB3ZXJlIGRpc2N1c3NpbmcgYXJlOlxuYERQODM2NDBfUEhZYFxuYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2BcbmBQSFlMSUJgXG5gUFRQXzE1ODhfQ0xPQ0tgXG5cbkxldCBtZSBjaGVjayBpZiBgUEhZX1BBQ0tBR0VgIGlzIGEgY29uZmlnIGl0c2VsZi4gQWgsIGl0J3MgYHNlbGVjdCBQSFlfUEFDS0FHRWAuIEludGVyZXN0aW5nLiBTbyBpdCdzIHNlbGVjdGVkIGJ5IGBEUDgzNjQwX1BIWWAuIFNvLCB3ZSBkb24ndCBuZWVkIHRvIGVuYWJsZSBpdCBleHBsaWNpdGx5LiBKdXN0IGluY2x1ZGUgYERQODM2NDBfUEhZYC5cblxuTm93LCB0aW1lIHRvIHZlcmlmeSBkZXBlbmRlbmNpZXMgb24gYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AuIFRoYXQncyB3aGF0IEkgd2FudCB0byBzZWUgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDk6MzI6MTAuMDEwOTQxMTc4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTIwNDM4MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MTUxPWNvbmZpZyBORVRfUFRQX0NMQVNTSUZZXFxuLS1cXG5uZXQvS2NvbmZpZy0xNTMtXFxubmV0L0tjb25maWc6MTU0OmNvbmZpZyBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG5uZXQvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVGltZXN0YW1waW5nIGluIFBIWSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxMS41MzEzODUzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxODAxNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBJc29sYXRlZCBDb21wb25lbnQqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyB0aGluZywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IGFwcGVhcnMgdG8gYmUgZW50aXJlbHkgc2VsZi1jb250YWluZWQuIE5vIGV4dGVybmFsIGxpYnJhcmllcywgbm8gc2hhcmVkIHJlc291cmNlcywgbm90aGluZy4gQSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMuIEl0J3MgYSBjbGVhbiBzbGF0ZSwgd2hpY2ggaW1tZWRpYXRlbHkgc2ltcGxpZmllcyB0aGUgdHJvdWJsZXNob290aW5nIGFuZCBkZXBsb3ltZW50IHByb2Nlc3MsIGxlc3MgdG8gd29ycnkgYWJvdXQuXG5cbk5vdywgYmVjYXVzZSBpdCBpcyBpc29sYXRlZCwgSSB3YW50IHRvIHRha2UgYSBkZWVwZXIgbG9vayBhdCBgUFRQXzE1ODhfQ0xPQ0tgLiBMZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IGFuZCB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBpZiBpdCBoYXMgdGhlbS4gSSB3b3VsZCBwcmVmZXIgdG8ga25vdyBub3csIHJhdGhlciB0aGFuIGxhdGVyIHdoZW4gc29tZXRoaW5nIGdvZXMgc2lkZXdheXMuIElmIHRoaXMgcmVhbGx5IGlzIGlzb2xhdGVkLCB0aGVuIHRoaXMgdmVyaWZpY2F0aW9uIHNob3VsZCBiZSBxdWljayBhbmQgZWFzeS4gSWYgbm90Li4uIHRoYXQncyBhIHdob2xlIG90aGVyIGJhbGxnYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg2OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA5OjMyOjE0LjY1MzE4ODcxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTIyMDM1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMi1cXHRib29sIFxcXCJJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjktXFxuZHJpdmVycy9wdHAvS2NvbmZpZzozMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxcbmRyaXZlcnMvcHRwL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6NTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1FPUklRXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiRnJlZXNjYWxlIFFvcklRIDE1ODggdGltZXIgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZz03NT1jb25maWcgRFA4MzY0MF9QSFlcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctOTItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo5Mzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSU5FU1xcbmRyaXZlcnMvcHRwL0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIlpIQVcgSW5FUyBQVFAgdGltZSBzdGFtcGluZyBJUCBjb3JlXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEzNTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXFx0dHJpc3RhdGUgXFxcIklEVCA4MlAzM3h4eCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2NS1cXHR0cmlzdGF0ZSBcXFwiSURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTc2OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzctXFx0dHJpc3RhdGUgXFxcIlJFTkVTQVMgRmVtdG9DbG9jazMgV2lyZWxlc3MgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MjExOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PQ1BcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMi1cXHR0cmlzdGF0ZSBcXFwiT3BlbkNvbXB1dGUgVGltZUNhcmQgYXMgUFRQIGNsb2NrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxNi4xMzI0MTM2ODRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5NTU0Njc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgOC5cblxuKipFeGFtaW5pbmcgdGhlIFBUUCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBsaW5lIDgsIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBkcml2ZXJzIGluIHRoZSBrZXJuZWwuIEtub3dpbmcgdGhlIGZpbGUgc3RydWN0dXJlIGZyb20gcGFzdCBleHBlcmllbmNlcywgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgcG9pbnQgd2hlcmUgdGhlIGJyb2FkIGZlYXR1cmUgc2V0IGlzIGRlZmluZWQuIEknbSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNob2ljZXM6IGFyZSB3ZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtYXNzaXN0ZWQgUFRQLCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbnMsIG9yIG1heWJlIG9wdGlvbnMgZm9yIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzPyBJJ20gYW50aWNpcGF0aW5nIGZpbmRpbmcgdGhlIG1haW4gS2NvbmZpZyBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgb3IgcG9zc2libGUgZGVmYXVsdHMgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhlIFBUUCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCBmcm9tIGEgY29uZmlndXJhdGlvbiBzdGFuZHBvaW50LCBzbyBJIGNhbiBiZXR0ZXIgZ3Jhc3AgaG93IHRvIHRhaWxvciBteSBzeXN0ZW1zLiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgZmluZXIgZGV0YWlscyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxOTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxOS44Mjc5NjI1NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQVFAgY2xvY2sgc3VwcG9ydCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnUgXFxcIlBUUCBjbG9jayBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tcXG4gICA5OlxcdFxcdHRyaXN0YXRlIFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IFBPU0lYX1RJTUVSU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCBFVEhFUk5FVFxcbiAgMTI6XFx0XFx0c2VsZWN0IFBQU1xcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9QVFBfQ0xBU1NJRllcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhlIElFRUUgMTU4OCBzdGFuZGFyZCBkZWZpbmVzIGEgbWV0aG9kIHRvIHByZWNpc2VseVxcbiAgMTY6XFx0XFx0ICBzeW5jaHJvbml6ZSBkaXN0cmlidXRlZCBjbG9ja3Mgb3ZlciBFdGhlcm5ldCBuZXR3b3Jrcy4gVGhlXFxuICAxNzpcXHRcXHQgIHN0YW5kYXJkIGRlZmluZXMgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSwgd2hpY2ggY2FuXFxuICAxODpcXHRcXHQgIGJlIHVzZWQgdG8gYWNoaWV2ZSBzeW5jaHJvbml6YXRpb24gd2l0aGluIGEgZmV3IGRvemVuXFxuICAxOTpcXHRcXHQgIG1pY3Jvc2Vjb25kcy4gSW4gYWRkaXRpb24sIHdpdGggdGhlIGhlbHAgb2Ygc3BlY2lhbCBoYXJkd2FyZVxcbiAgMjA6XFx0XFx0ICB0aW1lIHN0YW1waW5nIHVuaXRzLCBpdCBjYW4gYmUgcG9zc2libGUgdG8gYWNoaWV2ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoxOS44MjgwMzcyNDNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMjY3OTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHR3byBlc3NlbnRpYWwsIGJyb2FkbHkgYWNjZXB0ZWQgc3RhbmRhcmRzOiBgTkVUYCBhbmQgYFBPU0lYX1RJTUVSU2AuIFRoYXQncyBhIHNvbGlkIGZvdW5kYXRpb24uIEdpdmVuIHRob3NlLCBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGVzZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYERQODM2NDBfUEhZYCwgYE5FVFdPUktfUEhZX1RJTUVTVEFNUElOR2AsIGBQSFlMSUJgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGludGVycGxheSBvZiB0aGVzZSB3aWxsIGRldGVybWluZSB0aGUgdWx0aW1hdGUgZnVuY3Rpb25hbGl0eS5cblxuTGV0IG1lIHRha2UgYSBsb29rIGF0IGBQSFlMSUJgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIGlmIGl0IGJyaW5ncyBpbiBhbnkgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gVGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgZnVydGhlciBkZWZpbmUgdGhlIGJ1aWxkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoyMy4zNTA3MTg3MjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjoyMy4zNTA3OTE2MzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgxNzE2MzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBIWSBEcml2ZXIgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIERQODM2NDAgUEhZIGRyaXZlci4gVGhlIGtleSB0YWtlYXdheSBpcyB0aGF0IGl0J3Mgc2hpZnRpbmcgdG93YXJkcyB1c2luZyB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBnbG9iYWwgbGlzdC4gU21hcnQgbW92ZSDigJMgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGRpcmVjdGlvbiB3ZSB3YW50IHRvIGJlIGhlYWRlZCBmb3IgYmV0dGVyIG9yZ2FuaXphdGlvbiBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGNvbnRyb2wuIEFuZCAqUEhZTElCKiBpdHNlbGYgaGFzIG5vIGRlcGVuZGVuY2llcywgdGhhdCdzIGltcG9ydGFudCB0byBrbm93IGZvciBwb3J0YWJpbGl0eSBhbmQgZWFzZSBvZiBpbnRlZ3JhdGlvbi5cblxuVGhlIGNvbmZpZyBvcHRpb25zIGludm9sdmVkIGFyZTogKkRQODM2NDBfUEhZLCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcsIFBIWUxJQiwgUFRQXzE1ODhfQ0xPQ0sqLiBHb29kLCB0aG9zZSBhbGwgbWFrZSBzZW5zZSBpbiBjb250ZXh0LlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBmdW5jdGlvbiBjYWxscyB0aGF0IGFyZSBpbXBhY3RlZC4gSSBzZWUgdGhlIGZvY3VzIGlzIG9uIGBkcDgzNjQwX3Byb2JlYCAoZW50cnkgcG9pbnQgZm9yIFBIWSBwcm9iaW5nKSwgYGRwODM2NDBfcGh5X3JlbGVhc2VgIChkZXZtIHJlbGVhc2UgY2FsbGJhY2ssIHN0YW5kYXJkIHN0dWZmKSwgYW5kIHRoZSBuZXcgY29yZSBmdW5jdGlvbnMsIGBwaHlfcGFja2FnZV9sb2NrYCBhbmQgYHBoeV9wYWNrYWdlX3VubG9ja2AuIEFsbCBhcmUgbm9uLWlubGluZWQsIHNvIGVhc2llciB0byB0cmFjZS4gWWVzLCB0aGlzIGlzIGZ1bmN0aW9uYWxseSBzb3VuZDsgdGhlIGNvZGUgaXMgY2VydGFpbmx5IHJlYWNoYWJsZS4gRW11bGF0aW5nIGEgVVNCIG5ldHdvcmsgYWRhcHRlciB3aXRoIGFuIE1ESU8gYnVzIGFuZCB0aGUgRFA4MzY0MCBQSFkgSUQgaXMgYW4gZXhjZWxsZW50IHdheSB0byB0ZXN0IHRoaXMuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBmaW5hbCBjaGVjayBkb25lLCB0aGUgZnVuY3Rpb24gc3ltYm9scyBhbGwgbG9vayBjbGVhbiwgYW5kIHRoZSByZWFzb25pbmcgaXMgc291bmQsIEkgY2FuIHNldCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIwMywiT3V0cHV0VG9rZW5zIjoxNzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwOTozMjozMi4xNjc5NTY4NjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjEwNzMyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFA4MzY0MF9QSFlcIixcbiAgICBcIk5FVFdPUktfUEhZX1RJTUVTVEFNUElOR1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRwODM2NDBfcHJvYmVcIixcbiAgICBcImRwODM2NDBfcGh5X3JlbGVhc2VcIixcbiAgICBcInBoeV9wYWNrYWdlX2xvY2tcIixcbiAgICBcInBoeV9wYWNrYWdlX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEUDgzNjQwIFBIWSBkcml2ZXIgdG8gdXNlIHRoZSBQSFkgcGFja2FnZSBjb3JlIGZvciBzaGFyZWQgZGF0YSBpbnN0ZWFkIG9mIGEgZ2xvYmFsIGxpc3QsIGFuZCBhZGRzIGxvY2tpbmcgZnVuY3Rpb25zIHRvIHRoZSBQSFkgcGFja2FnZSBjb3JlLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGVtdWxhdGluZyBhIFVTQiBuZXR3b3JrIGFkYXB0ZXIgd2l0aCBhbiBNRElPIGJ1cyBhbmQgdGhlIERQODM2NDAgUEhZIElELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRQODM2NDBfUEhZXCIsXG4gICAgXCJORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcDgzNjQwX3Byb2JlXCIsXG4gICAgXCJkcDgzNjQwX3BoeV9yZWxlYXNlXCIsXG4gICAgXCJwaHlfcGFja2FnZV9sb2NrXCIsXG4gICAgXCJwaHlfcGFja2FnZV91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRFA4MzY0MCBQSFkgZHJpdmVyIHRvIHVzZSB0aGUgUEhZIHBhY2thZ2UgY29yZSBmb3Igc2hhcmVkIGRhdGEgaW5zdGVhZCBvZiBhIGdsb2JhbCBsaXN0LCBhbmQgYWRkcyBsb2NraW5nIGZ1bmN0aW9ucyB0byB0aGUgUEhZIHBhY2thZ2UgY29yZS4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBlbXVsYXRpbmcgYSBVU0IgbmV0d29yayBhZGFwdGVyIHdpdGggYW4gTURJTyBidXMgYW5kIHRoZSBEUDgzNjQwIFBIWSBJRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[1] Phase: Succeeded StartedAt: 2026-08-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 09:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 09:32:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2] Phase: Succeeded StartedAt: 2026-08-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 09:32:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:43 +0000 UTC FinishedAt: 2026-08-07 09:32:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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-workflowpr6nv/series-workflowpr6nv-convert-artifact-980876388/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:53 +0000 UTC FinishedAt: 2026-08-07 09:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:53 +0000 UTC FinishedAt: 2026-08-07 09:48:52 +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:*3ae574ca-ab11-4c78-a917-a34cfaa07d4f,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-workflowpr6nv/series-workflowpr6nv-convert-artifact-980876388/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": "f0b4eb6e-1746-4b85-905b-17da93a90603", "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-workflowpr6nv/series-workflowpr6nv-build-action-1705155746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:32:53 +0000 UTC FinishedAt: 2026-08-07 09:48:42 +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:*3ae574ca-ab11-4c78-a917-a34cfaa07d4f,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-workflowpr6nv/series-workflowpr6nv-convert-artifact-980876388/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": "f0b4eb6e-1746-4b85-905b-17da93a90603", "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-workflowpr6nv/series-workflowpr6nv-build-action-1705155746/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:48:52 +0000 UTC FinishedAt: 2026-08-07 09:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:48:52 +0000 UTC FinishedAt: 2026-08-07 09:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:48:52 +0000 UTC FinishedAt: 2026-08-07 09:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:48:52 +0000 UTC FinishedAt: 2026-08-07 09:48:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-workflowpr6nv/series-workflowpr6nv-convert-artifact-1238072675/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:49:02 +0000 UTC FinishedAt: 2026-08-07 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:49:02 +0000 UTC FinishedAt: 2026-08-07 09:50:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f0b4eb6e-1746-4b85-905b-17da93a90603,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-workflowpr6nv/series-workflowpr6nv-build-action-1705155746/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-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:50:54 +0000 UTC FinishedAt: 2026-08-07 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:50:54 +0000 UTC FinishedAt: 2026-08-07 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:50:54 +0000 UTC FinishedAt: 2026-08-07 10:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:50:54 +0000 UTC FinishedAt: 2026-08-07 10:06:54 +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:*3ae574ca-ab11-4c78-a917-a34cfaa07d4f,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-workflowpr6nv/series-workflowpr6nv-convert-artifact-1238072675/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": "316f2837-1686-4bff-8542-0ea79fd0e748", "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-workflowpr6nv/series-workflowpr6nv-build-action-3621833239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 09:50:54 +0000 UTC FinishedAt: 2026-08-07 10:06:44 +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:*3ae574ca-ab11-4c78-a917-a34cfaa07d4f,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-workflowpr6nv/series-workflowpr6nv-convert-artifact-1238072675/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": "316f2837-1686-4bff-8542-0ea79fd0e748", "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-workflowpr6nv/series-workflowpr6nv-build-action-3621833239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:06:54 +0000 UTC FinishedAt: 2026-08-07 10:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:06:54 +0000 UTC FinishedAt: 2026-08-07 10:06:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:06:54 +0000 UTC FinishedAt: 2026-08-07 10:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:06:54 +0000 UTC FinishedAt: 2026-08-07 10:08:45 +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:*316f2837-1686-4bff-8542-0ea79fd0e748,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-workflowpr6nv/series-workflowpr6nv-build-action-3621833239/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-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +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","phy_package_lock","phy_package_unlock"],"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:*f0b4eb6e-1746-4b85-905b-17da93a90603,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*316f2837-1686-4bff-8542-0ea79fd0e748,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-workflowpr6nv/series-workflowpr6nv-build-action-1705155746/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-workflowpr6nv/series-workflowpr6nv-build-action-3621833239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 10:09:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 10:08:59 +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","phy_package_lock","phy_package_unlock"],"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-workflowpr6nv/series-workflowpr6nv-convert-artifact-1132292220/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 10:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 10:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:08:54 +0000 UTC FinishedAt: 2026-08-07 10:08:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:09:05 +0000 UTC FinishedAt: 2026-08-07 11:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpr6nv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","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","phy_package_lock","phy_package_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["DP83640_PHY","NETWORK_PHY_TIMESTAMPING","PHYLIB","PTP_1588_CLOCK"],"series_id":"df5a4671-3e6b-41d8-acfa-0758156db8b9","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-07 10:09:05 +0000 UTC FinishedAt: 2026-08-07 11:15:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f0b4eb6e-1746-4b85-905b-17da93a90603,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*316f2837-1686-4bff-8542-0ea79fd0e748,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-workflowpr6nv/series-workflowpr6nv-build-action-1705155746/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-workflowpr6nv/series-workflowpr6nv-build-action-3621833239/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-workflowpr6nv/series-workflowpr6nv-convert-artifact-1132292220/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,}