Name: series-workflow9sdrz Phase: Succeeded StartedAt: 2026-08-07 01:19:00 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[0] Phase: Succeeded StartedAt: 2026-08-07 01:19:00 +0000 UTC FinishedAt: 2026-08-07 01:21:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 01:19:00 +0000 UTC FinishedAt: 2026-08-07 01:21:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a4ffc59238be84dd1c26bf1c001543e832674fc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HYPERV", "HYPERV_VMBUS", "HYPERV_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a4ffc59238be84dd1c26bf1c001543e832674fc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HYPERV", "HYPERV_VMBUS", "HYPERV_NET" ], "series_id": "d8ec3d92-da9c-4426-a4b3-e8731888d2b9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vmbus_alloc_buffer", "vmbus_free_buffer", "vmbus_establish_gpadl_caller_decrypted" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19mcmVlX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiNmI0NDU4OWZmYTQ1ZWJjMmNkZTZjZWJhZmMwYWI3NGM0MTY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjIwOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h2L2NoYW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9odi9jaGFubmVsLmNcbkBAIC0xMywxMSAmIzQzOzEzLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9sb2cyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h5cGVydi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXNoeXBlcnYuaFx1MDAzZVxuQEAgLTQwLDYgJiM0Mzs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGh2X2dwYWRsX3NpemUoZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHUzMiBzaXplKVxuIHtcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4mIzQzO1x0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxuIFx0XHRyZXR1cm4gc2l6ZTtcbiBcdGNhc2UgSFZfR1BBRExfUklORzpcbiBcdFx0LyogVGhlIHNpemUgb2YgYSByaW5nYnVmZmVyIG11c3QgYmUgcGFnZS1hbGlnbmVkICovXG5AQCAtMTAwLDYgJiM0MzsxMDMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBodl9ncGFkbF9odnBmbihlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdm9pZCAqa2J1ZmZlcixcbiBcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4mIzQzO1x0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxuIFx0XHRicmVhaztcbiBcdGNhc2UgSFZfR1BBRExfUklORzpcbiBcdFx0aWYgKGkgPT0gMClcbkBAIC00NjAsNyAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4gXHR9XG4gXG4gXHRncGFkbC1cdTAwM2VkZWNyeXB0ZWQgPSAhKChjaGFubmVsLVx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSBcdTAwMjZcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9CVUZGRVIpIHx8XG4tXHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpKTtcbiYjNDM7XHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XG4mIzQzO1x0XHQodHlwZSA9PSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEKSk7XG4gXHRpZiAoZ3BhZGwtXHUwMDNlZGVjcnlwdGVkKSB7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBcJiMzNDtkZWNyeXB0ZWRcJiMzNDsgZmxhZyBiZWluZyB0cnVlIGFzc3VtZXMgdGhhdCBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIHN1Y2NlZWRzLlxuQEAgLTU3NSw3ICYjNDM7NTgwLDcgQEAgc3RhdGljIGludCBfX3ZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiAgKiBAY2hhbm5lbDogYSBjaGFubmVsXG4gICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jXG4gICogQHNpemU6IHBhZ2Utc2l6ZSBtdWx0aXBsZVxuLSAqIEBncGFkbF9oYW5kbGU6IHNvbWUgZnVua3kgdGhpbmdcbiYjNDM7ICogQGdwYWRsOiBvdXRwdXQgZ3BhZGxcbiAgKi9cbiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLFxuIFx0XHRcdCAgdTMyIHNpemUsIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpXG5AQCAtNTg1LDYgJiM0Mzs1OTAsMTc5IEBAIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsIHZvaWQgKmtidWZmZXIsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkIC0gRXN0YWJsaXNoIGEgR1BBREwgZm9yIGEgYnVmZmVyXG4mIzQzOyAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbiYjNDM7ICpcbiYjNDM7ICogQGNoYW5uZWw6IGEgY2hhbm5lbFxuJiM0MzsgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2M7IG11c3QgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlclxuJiM0MzsgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlXG4mIzQzOyAqIEBncGFkbDogb3V0cHV0IGdwYWRsXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlLWVuY3J5cHRpbmcgdGhlIGJ1ZmZlciBiZWZvcmUgZnJlZWluZyBpdC5cbiYjNDM7ICovXG4mIzQzO2ludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHRcdCAgIHZvaWQgKmtidWZmZXIsIHUzMiBzaXplLFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBfX3ZtYnVzX2VzdGFibGlzaF9ncGFkbChjaGFubmVsLCBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVELFxuJiM0MztcdFx0XHRcdCAgICAgICBrYnVmZmVyLCBzaXplLCAwVSwgZ3BhZGwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxuJiM0MzsgKlxuJiM0MzsgKiBAYWRkcjogYnVmZmVyIGFkZHJlc3MsIG9yIE5VTEwgaWYgbm9uZSB3YXMgYWxsb2NhdGVkIChlLmcuIGNsZWFudXAgZnJvbSBhXG4mIzQzOyAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbilcbiYjNDM7ICogQGNodW5rczogY2h1bmtzIGFycmF5IGZyb20gdm1idXNfYWxsb2NfYnVmZmVyKCksIG9yIE5VTExcbiYjNDM7ICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuJiM0MzsgKlxuJiM0MzsgKiBXaGVuIEBjaHVua3MgaXMgTlVMTCB0aGUgYnVmZmVyIGlzIGEgcGxhaW4gdnphbGxvYygpIGFsbG9jYXRpb24uXG4mIzQzOyAqXG4mIzQzOyAqIE90aGVyd2lzZSB0ZWFyIGRvd24gdGhlIHZtYXAsIGFuZCBmb3IgZWFjaCBjaHVuayByZS1lbmNyeXB0IGFuZCBmcmVlXG4mIzQzOyAqIHRoZSB1bmRlcmx5aW5nIHBhZ2VzLiBBbnkgY2h1bmsgdGhhdCBjYW5ub3QgYmUgcmUtZW5jcnlwdGVkIGlzIGxlYWtlZC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgaTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFjaHVua3MpIHtcbiYjNDM7XHRcdHZmcmVlKGFkZHIpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dnVubWFwKGFkZHIpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjaHVua19jbnQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIHZhZGRyID1cbiYjNDM7XHRcdFx0KHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKGNodW5rc1tpXSk7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihwYWdlX2ZvbGlvKGNodW5rc1tpXSkpO1xuJiM0MztcbiYjNDM7XHRcdGlmIChzZXRfbWVtb3J5X2VuY3J5cHRlZCh2YWRkciwgMVUgXHUwMDNjXHUwMDNjIG9yZGVyKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRfX2ZyZWVfcGFnZXMoY2h1bmtzW2ldLCBvcmRlcik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRrdmZyZWUoY2h1bmtzKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci5cbiYjNDM7ICpcbiYjNDM7ICogQGNoYW5uZWw6IHRoZSBjaGFubmVsIHRoZSBidWZmZXIgd2lsbCBiZSBhdHRhY2hlZCB0b1xuJiM0MzsgKiBAc2l6ZTogcmVxdWVzdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzICh3aWxsIGJlIHJvdW5kZWQgdXAgdG8gUEFHRV9TSVpFKVxuJiM0MzsgKiBAY2h1bmtzX291dDogb24gc3VjY2Vzcywgc2V0IHRvIHRoZSBhcnJheSBvZiB1bmRlcmx5aW5nIGNodW5rcywgb3IgTlVMTCB3aGVuXG4mIzQzOyAqICAgICAgICAgICAgICB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgd2l0aCB2emFsbG9jKClcbiYjNDM7ICogQGNodW5rX2NudF9vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgbnVtYmVyIG9mIGNodW5rc1xuJiM0MzsgKlxuJiM0MzsgKiBCdWZmZXJzIG5vdCByZXF1aXJpbmcgZGVjcnlwdGlvbiBhcmUgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpLlxuJiM0MzsgKlxuJiM0MzsgKiBCdWZmZXJzIHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgYXMgYSBzZXJpZXMgb2ZcbiYjNDM7ICogcGh5c2ljYWxseS1jb250aWd1b3VzIGNodW5rcywgc3RhcnRpbmcgYXQgTUFYX1BBR0VfT1JERVIgYW5kIGZhbGxpbmcgYmFjayB0b1xuJiM0MzsgKiBzbWFsbGVyIG9yZGVycyBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuIEVhY2ggY2h1bmsgaXMgdHJhbnNpdGlvbmVkIHRvXG4mIzQzOyAqIGhvc3QtdmlzaWJsZSB2aWEgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBvbiBpdHMgZGlyZWN0LW1hcCBhZGRyZXNzLCB0aGVuIGFsbFxuJiM0MzsgKiBjaHVua3MgYXJlIGNvbWJpbmVkIGludG8gYSB2aXJ0dWFsbHktY29udGlndW91cyByYW5nZSB2aWEgdm1hcCgpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRoZSBidWZmZXImIzM5O3MgdmlydHVhbCBhZGRyZXNzLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4mIzQzO1x0XHRcdCB1MzIgc2l6ZSxcbiYjNDM7XHRcdFx0IHN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsXG4mIzQzO1x0XHRcdCB1MzIgKmNodW5rX2NudF9vdXQpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gUEZOX1VQKHNpemUpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nID0gbnJfcGFnZXM7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBwYWdlX2lkeCA9IDA7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKipjaHVua3MgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMO1xuJiM0MztcdGludCBvcmRlciA9IE1BWF9QQUdFX09SREVSO1xuJiM0MztcdHUzMiBjaHVua19jbnQgPSAwO1xuJiM0MztcdHZvaWQgKmFkZHI7XG4mIzQzO1x0dTMyIGk7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0KmNodW5rc19vdXQgPSBOVUxMO1xuJiM0MztcdCpjaHVua19jbnRfb3V0ID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFucl9wYWdlcylcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHQvKiBJZiB0aGUgYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVjcnlwdGVkLCBqdXN0IHVzZSB2emFsbG9jKCkgKi9cbiYjNDM7XHRpZiAoIWh2X2lzX2lzb2xhdGlvbl9zdXBwb3J0ZWQoKSB8fCBjaGFubmVsLVx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSlcbiYjNDM7XHRcdHJldHVybiB2emFsbG9jKG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbiYjNDM7XG4mIzQzO1x0LyogV29yc3QgY2FzZTogZXZlcnkgY2h1bmsgaXMgYSBzaW5nbGUgcGFnZS4gKi9cbiYjNDM7XHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxuJiM0MztcdFx0XHRcdEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTtcbiYjNDM7XHRpZiAoIWNodW5rcylcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHRwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG5yX3BhZ2VzLCBzaXplb2YoKnBhZ2VzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFwYWdlcylcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAocmVtYWluaW5nKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHRcdGdmcF90IGdmcDtcbiYjNDM7XG4mIzQzO1x0XHRvcmRlciA9IG1pbihvcmRlciwgaWxvZzIocmVtYWluaW5nKSk7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFVzZSBfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9XQVJOIHRvIGF2b2lkIE9PTS1raWxsaW5nLFxuJiM0MztcdFx0ICogYnV0IHRyeSBoYXJkZXIgYXQgb3JkZXIgMCBzaW5jZSB0aGF0IGlzIHRoZSBmaW5hbFxuJiM0MztcdFx0ICogZmFsbGJhY2suXG4mIzQzO1x0XHQgKiBfX0dGUF9DT01QIHN0b3JlcyBvcmRlciBpbmZvcm1hdGlvbiBpbiB0aGUgcGFnZSBmb2xpby5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Z2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk87XG4mIzQzO1x0XHRpZiAob3JkZXIpXG4mIzQzO1x0XHRcdGdmcCB8PSBfX0dGUF9DT01QIHwgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTjtcbiYjNDM7XG4mIzQzO1x0XHRwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShjcHVfdG9fbm9kZShjaGFubmVsLVx1MDAzZXRhcmdldF9jcHUpLFxuJiM0MztcdFx0XHRcdFx0Z2ZwLCBvcmRlcik7XG4mIzQzO1x0XHRpZiAoIXBhZ2UpIHtcbiYjNDM7XHRcdFx0aWYgKCFvcmRlci0tKVxuJiM0MztcdFx0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSksXG4mIzQzO1x0XHRcdFx0XHQgICAxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIGZhaWxlZDsgdGhlIHBhZ2Ugc3RhdGUgaXNcbiYjNDM7XHRcdFx0ICogdW5rbm93biBzbyBpdCBtdXN0IGJlIGxlYWtlZCByYXRoZXIgdGhhbiBmcmVlZC5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGNodW5rc1tjaHVua19jbnQmIzQzOyYjNDM7XSA9IHBhZ2U7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKDFVIFx1MDAzY1x1MDAzYyBvcmRlcik7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRwYWdlc1twYWdlX2lkeCYjNDM7JiM0MztdID0gcGFnZSAmIzQzOyBpO1xuJiM0MztcbiYjNDM7XHRcdHJlbWFpbmluZyAtPSAxVSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpO1xuJiM0MztcdGlmICghYWRkcilcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoYWRkciwgMCwgbnJfcGFnZXMgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xuJiM0MztcbiYjNDM7XHRrdmZyZWUocGFnZXMpO1xuJiM0MztcdCpjaHVua3Nfb3V0ID0gY2h1bmtzO1xuJiM0MztcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xuJiM0MztcdHJldHVybiBhZGRyO1xuJiM0MztcbiYjNDM7ZXJyOlxuJiM0MztcdGt2ZnJlZShwYWdlcyk7XG4mIzQzO1x0dm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2FsbG9jX2J1ZmZlcik7XG4mIzQzO1xuIC8qKlxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcbiAgKiBrZWVwcyB0cmFjayBvZiB0aGUgbmV4dCBhdmFpbGFibGUgc2xvdCBpbiB0aGUgYXJyYXkuIEluaXRpYWxseSwgZWFjaFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuQEAgLTIyMCw2ICYjNDM7MjIwLDggQEAgc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dDtcbiBcbiBleHRlcm4gdTMyIG5ldHZzY19yaW5nX2J5dGVzO1xuIFxuJiM0MztpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpO1xuJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbiBpbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpO1xuQEAgLTExNTgsNiAmIzQzOzExNjAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXHQvKiBSZWNlaXZlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgYnV0IG1hbmFnZXMgYnkgTmV0VlNQICovXG4gXHR2b2lkICpyZWN2X2J1ZjtcbiBcdHUzMiByZWN2X2J1Zl9zaXplOyAvKiBhbGxvY2F0ZWQgYnl0ZXMgKi9cbiYjNDM7XHRzdHJ1Y3QgcGFnZSAqKnJlY3ZfYnVmX2NodW5rcztcbiYjNDM7XHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xuIFx0c3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTtcbiBcdHUzMiByZWN2X3NlY3Rpb25fY250O1xuIFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xuQEAgLTExNjYsNiAmIzQzOzExNzAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXHQvKiBTZW5kIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgKi9cbiBcdHZvaWQgKnNlbmRfYnVmO1xuIFx0dTMyIHNlbmRfYnVmX3NpemU7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKipzZW5kX2J1Zl9jaHVua3M7XG4mIzQzO1x0dTMyIHNlbmRfYnVmX2NodW5rX2NudDtcbiBcdHN0cnVjdCB2bWJ1c19ncGFkbCBzZW5kX2J1Zl9ncGFkbF9oYW5kbGU7XG4gXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcbiBcdHUzMiBzZW5kX3NlY3Rpb25fc2l6ZTtcbkBAIC0xMTkzLDcgJiM0MzsxMTk5LDcgQEAgc3RydWN0IG5ldHZzY19kZXZpY2Uge1xuIFxuIFx0c3RydWN0IG5ldHZzY19jaGFubmVsIGNoYW5fdGFibGVbVlJTU19DSEFOTkVMX01BWF07XG4gXG4tXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdHN0cnVjdCByY3Vfd29yayByd29yaztcbiB9O1xuIFxuIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbmluZGV4IDU5ZTk1MzQxZjliMWUuLmM1OWYyYTQ0YmFkZjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuY1xuQEAgLTI4LDYgJiM0MzsyOCw4IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aHlwZXJ2X25ldC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7bmV0dnNjX3RyYWNlLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XG4mIzQzO1xuIC8qXG4gICogU3dpdGNoIHRoZSBkYXRhIHBhdGggZnJvbSB0aGUgc3ludGhldGljIGludGVyZmFjZSB0byB0aGUgVkZcbiAgKiBpbnRlcmZhY2UuXG5AQCAtMTI1LDYgJiM0MzsxMjcsNDcgQEAgc3RhdGljIHZvaWQgbmV0dnNjX3N1YmNoYW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXHRydG5sX3VubG9jaygpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgX19mcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4mIzQzO1xuJiM0MztcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVx1MDAzZXJlY3ZfYnVmLCBudmRldi1cdTAwM2VyZWN2X2J1Zl9jaHVua3MsXG4mIzQzO1x0XHRcdCAgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtfY250KTtcbiYjNDM7XHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cdTAwM2VzZW5kX2J1ZiwgbnZkZXYtXHUwMDNlc2VuZF9idWZfY2h1bmtzLFxuJiM0MztcdFx0XHQgIG52ZGV2LVx1MDAzZXNlbmRfYnVmX2NodW5rX2NudCk7XG4mIzQzO1x0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2bnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS54ZHBfcnhxKTtcbiYjNDM7XHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuJiM0MztcdFx0dmZyZWUobnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS5tcmMuc2xvdHMpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0a2ZyZWUobnZkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJjdV93b3JrICpyd29yayA9IHRvX3JjdV93b3JrKHcpO1xuJiM0MztcbiYjNDM7XHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRuZXR2c2Nfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7aHZfbmV0dnNjXCYjMzQ7LCBXUV9VTkJPVU5ELCAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5ldHZzY193cSA/IDAgOiAtRU5PTUVNO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmN1X2JhcnJpZXIoKTtcbiYjNDM7XHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuQEAgLTE0MywzNiAmIzQzOzE4NiwxOCBAQCBzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5uZWxfaW5pdF93YWl0KTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzdWJjaGFuX29wZW4pO1xuIFx0SU5JVF9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl93b3JrLCBuZXR2c2Nfc3ViY2hhbl93b3JrKTtcbiYjNDM7XHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG4gXG4gXHRyZXR1cm4gbmV0X2RldmljZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi17XG4tXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXZcbi1cdFx0PSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7XG4tXHRpbnQgaTtcbi1cbi1cdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4tXG4tXHRpZiAoIW52ZGV2LVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpXG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZXJlY3ZfYnVmKTtcbi1cdGlmICghbnZkZXYtXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcbi1cdFx0dmZyZWUobnZkZXYtXHUwMDNlc2VuZF9idWYpO1xuLVx0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykge1xuLVx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2bnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS54ZHBfcnhxKTtcbi1cdFx0a2ZyZWUobnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ubXJjLnNsb3RzKTtcbi1cdH1cbi1cbi1cdGtmcmVlKG52ZGV2KTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXG4ge1xuLVx0Y2FsbF9yY3UoXHUwMDI2bnZkZXYtXHUwMDNlcmN1LCBmcmVlX25ldHZzY19kZXZpY2UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVmZXIgdGhlIGFjdHVhbCBmcmVlIHRvIHByb2Nlc3MgY29udGV4dDogdnVubWFwKCkgYW5kXG4mIzQzO1x0ICogc2V0X21lbW9yeV9lbmNyeXB0ZWQoKSBjYW5ub3QgcnVuIGZyb20gUkNVIHNvZnRpcnEgY29udGV4dC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsIFx1MDAyNm52ZGV2LVx1MDAzZXJ3b3JrKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5AQCAtMzUxLDcgJiM0MzszNzYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRidWZfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgYnVmX3NpemUsXG4gXHRcdFx0XHQgTkVUVlNDX1JFQ0VJVkVfQlVGRkVSX1NJWkVfTEVHQUNZKTtcbiBcbi1cdG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcbiYjNDM7XHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID1cbiYjNDM7XHRcdHZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtXHUwMDNlY2hhbm5lbCwgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua3MsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua19jbnQpO1xuIFx0aWYgKCFuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgcmVjZWl2ZSBidWZmZXIgb2Ygc2l6ZSAldVxcblwmIzM0OyxcbkBAIC0zNjcsOSAmIzQzOzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuJiM0MztcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cdTAwM2VjaGFubmVsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuIFx0aWYgKHJldCAhPSAwKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHRcJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHJlY2VpdmUgYnVmZmVyJiMzOTtzIGdwYWRsXFxuXCYjMzQ7KTtcbkBAIC00NTcsNyAmIzQzOzQ4NiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHRidWZfc2l6ZSA9IGRldmljZV9pbmZvLVx1MDAzZXNlbmRfc2VjdGlvbnMgKiBkZXZpY2VfaW5mby1cdTAwM2VzZW5kX3NlY3Rpb25fc2l6ZTtcbiBcdGJ1Zl9zaXplID0gcm91bmRfdXAoYnVmX3NpemUsIFBBR0VfU0laRSk7XG4gXG4tXHRuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7XG4mIzQzO1x0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9XG4mIzQzO1x0XHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIGJ1Zl9zaXplLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtzLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcbiBcdGlmICghbmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zikge1xuIFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBzZW5kIGJ1ZmZlciBvZiBzaXplICV1XFxuXCYjMzQ7LFxuIFx0XHRcdCAgIGJ1Zl9zaXplKTtcbkBAIC00NzAsOSAmIzQzOzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuJiM0MztcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cdTAwM2VjaGFubmVsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuIFx0aWYgKHJldCAhPSAwKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHNlbmQgYnVmZmVyJiMzOTtzIGdwYWRsXFxuXCYjMzQ7KTtcbkBAIC0xODYzLDcgJiM0MzsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4gXG4gY2xlYW51cDI6XG4tXHRmcmVlX25ldHZzY19kZXZpY2UoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyY3UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbmV0X2RldmljZSB3YXMgbmV2ZXIgcHVibGlzaGVkLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byB3YWl0IGZvciBhblxuJiM0MztcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0X19mcmVlX25ldHZzY19kZXZpY2UobmV0X2RldmljZSk7XG4gXG4gXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuY1xuaW5kZXggZWU1YWI1Y2ViMmJlMi4uMWQ0M2M3M2ZkNzNmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbkBAIC0yODY3LDEyICYjNDM7Mjg2NywxNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmV0dnNjX2Rydl9leGl0KHZvaWQpXG4ge1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4gXHR2bWJ1c19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZuZXR2c2NfZHJ2KTtcbiYjNDM7XHRuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTtcbiB9XG4gXG4gc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbiBcbiYjNDM7XHRyZXQgPSBuZXR2c2Nfd29ya3F1ZXVlX2luaXQoKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAocmluZ19zaXplIFx1MDAzYyBSSU5HX1NJWkVfTUlOKSB7XG4gXHRcdHJpbmdfc2l6ZSA9IFJJTkdfU0laRV9NSU47XG4gXHRcdHByX2luZm8oXCYjMzQ7SW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxuXCYjMzQ7LFxuQEAgLTI4OTAsNiAmIzQzOzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcbiBcbiBlcnJfdm1idXNfcmVnOlxuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4mIzQzO1x0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbkBAIC03MCw3ICYjNDM7NzAsOCBAQFxuICAqL1xuIGVudW0gaHZfZ3BhZGxfdHlwZSB7XG4gXHRIVl9HUEFETF9CVUZGRVIsXG4tXHRIVl9HUEFETF9SSU5HXG4mIzQzO1x0SFZfR1BBRExfUklORyxcbiYjNDM7XHRIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEXG4gfTtcbiBcbiAvKiBTaW5nbGUtcGFnZSBidWZmZXIgKi9cbkBAIC0xMjA1LDkgJiM0MzsxMjA2LDIxIEBAIGV4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICAgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbiYjNDM7ZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHRcdFx0ICB2b2lkICprYnVmZmVyLFxuJiM0MztcdFx0XHRcdFx0XHQgIHUzMiBzaXplLFxuJiM0MztcdFx0XHRcdFx0XHQgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xuJiM0MztcbiBleHRlcm4gaW50IHZtYnVzX3RlYXJkb3duX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbiYjNDM7ZXh0ZXJuIHZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHR1MzIgc2l6ZSxcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuJiM0MztcdFx0XHRcdHUzMiAqY2h1bmtfY250X291dCk7XG4mIzQzO1xuJiM0MztleHRlcm4gdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudCk7XG4mIzQzO1xuIHZvaWQgdm1idXNfcmVzZXRfY2hhbm5lbF9jYihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCk7XG4gXG4gZXh0ZXJuIGludCB2bWJ1c19yZWN2cGFja2V0KHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIWVBFUlYmIzM0OywKICAgICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssCiAgICAmIzM0O0hZUEVSVl9ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bWJ1c19hbGxvY19idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZnJlZV9idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgVk1CdXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgZnVuY3Rpb25zIChgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCkgYW5kIHVwZGF0ZXMgdGhlIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgKGBuZXR2c2NgKSB0byB1c2UgdGhlbS4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIEh5cGVyLVYgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIChlLmcuLCB2aWEgc3l6a2FsbGVyKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgbmV3IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBHUEFETCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwMToyMDo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmMKaW5kZXggNjgyMWYyMjUyNDhiMS4uZjQzNzA2MTdkZWFjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9odi9jaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9odi9jaGFubmVsLmMKQEAgLTEzLDExICYjNDM7MTMsMTMgQEAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xvZzIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9oeXBlcnYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91aW8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zZXRfbWVtb3J5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9leHBvcnQuaCZndDsKICNpbmNsdWRlICZsdDthc20vcGFnZS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9tc2h5cGVydi5oJmd0OwpAQCAtNDAsNiAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaHZfZ3BhZGxfc2l6ZShlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdTMyIHNpemUpCiB7CiAJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBIVl9HUEFETF9CVUZGRVI6CiYjNDM7CWNhc2UgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRDoKIAkJcmV0dXJuIHNpemU7CiAJY2FzZSBIVl9HUEFETF9SSU5HOgogCQkvKiBUaGUgc2l6ZSBvZiBhIHJpbmdidWZmZXIgbXVzdCBiZSBwYWdlLWFsaWduZWQgKi8KQEAgLTEwMCw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIGlubGluZSB1NjQgaHZfZ3BhZGxfaHZwZm4oZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHZvaWQgKmtidWZmZXIsCiAKIAlzd2l0Y2ggKHR5cGUpIHsKIAljYXNlIEhWX0dQQURMX0JVRkZFUjoKJiM0MzsJY2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOgogCQlicmVhazsKIAljYXNlIEhWX0dQQURMX1JJTkc6CiAJCWlmIChpID09IDApCkBAIC00NjAsNyAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiAJfQogCiAJZ3BhZGwtJmd0O2RlY3J5cHRlZCA9ICEoKGNoYW5uZWwtJmd0O2NvX2V4dGVybmFsX21lbW9yeSAmYW1wOyZhbXA7IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fAotCQkoY2hhbm5lbC0mZ3Q7Y29fcmluZ19idWZmZXIgJmFtcDsmYW1wOyB0eXBlID09IEhWX0dQQURMX1JJTkcpKTsKJiM0MzsJCShjaGFubmVsLSZndDtjb19yaW5nX2J1ZmZlciAmYW1wOyZhbXA7IHR5cGUgPT0gSFZfR1BBRExfUklORykgfHwKJiM0MzsJCSh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTsKIAlpZiAoZ3BhZGwtJmd0O2RlY3J5cHRlZCkgewogCQkvKgogCQkgKiBUaGUgJiMzNDtkZWNyeXB0ZWQmIzM0OyBmbGFnIGJlaW5nIHRydWUgYXNzdW1lcyB0aGF0IHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgc3VjY2VlZHMuCkBAIC01NzUsNyAmIzQzOzU4MCw3IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiAgKiBAY2hhbm5lbDogYSBjaGFubmVsCiAgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2MKICAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGUKLSAqIEBncGFkbF9oYW5kbGU6IHNvbWUgZnVua3kgdGhpbmcKJiM0MzsgKiBAZ3BhZGw6IG91dHB1dCBncGFkbAogICovCiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLAogCQkJICB1MzIgc2l6ZSwgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbCkKQEAgLTU4NSw2ICYjNDM7NTkwLDE3OSBAQCBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLAogfQogRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsKTsKIAomIzQzOy8qCiYjNDM7ICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXIKJiM0MzsgKiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGVjcnlwdGVkIGJ5IHRoZSBjYWxsZXIuCiYjNDM7ICoKJiM0MzsgKiBAY2hhbm5lbDogYSBjaGFubmVsCiYjNDM7ICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jOyBtdXN0IGFscmVhZHkgYmUgZGVjcnlwdGVkIGJ5IHRoZSBjYWxsZXIKJiM0MzsgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlCiYjNDM7ICogQGdwYWRsOiBvdXRwdXQgZ3BhZGwKJiM0MzsgKgomIzQzOyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlLWVuY3J5cHRpbmcgdGhlIGJ1ZmZlciBiZWZvcmUgZnJlZWluZyBpdC4KJiM0MzsgKi8KJiM0MztpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiYjNDM7CQkJCQkgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSwKJiM0MzsJCQkJCSAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpCiYjNDM7ewomIzQzOwlyZXR1cm4gX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoY2hhbm5lbCwgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRCwKJiM0MzsJCQkJICAgICAgIGtidWZmZXIsIHNpemUsIDBVLCBncGFkbCk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLgomIzQzOyAqCiYjNDM7ICogQGFkZHI6IGJ1ZmZlciBhZGRyZXNzLCBvciBOVUxMIGlmIG5vbmUgd2FzIGFsbG9jYXRlZCAoZS5nLiBjbGVhbnVwIGZyb20gYQomIzQzOyAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbikKJiM0MzsgKiBAY2h1bmtzOiBjaHVua3MgYXJyYXkgZnJvbSB2bWJ1c19hbGxvY19idWZmZXIoKSwgb3IgTlVMTAomIzQzOyAqIEBjaHVua19jbnQ6IG51bWJlciBvZiBlbnRyaWVzIGluIEBjaHVua3MKJiM0MzsgKgomIzQzOyAqIFdoZW4gQGNodW5rcyBpcyBOVUxMIHRoZSBidWZmZXIgaXMgYSBwbGFpbiB2emFsbG9jKCkgYWxsb2NhdGlvbi4KJiM0MzsgKgomIzQzOyAqIE90aGVyd2lzZSB0ZWFyIGRvd24gdGhlIHZtYXAsIGFuZCBmb3IgZWFjaCBjaHVuayByZS1lbmNyeXB0IGFuZCBmcmVlCiYjNDM7ICogdGhlIHVuZGVybHlpbmcgcGFnZXMuIEFueSBjaHVuayB0aGF0IGNhbm5vdCBiZSByZS1lbmNyeXB0ZWQgaXMgbGVha2VkLgomIzQzOyAqLwomIzQzO3ZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpCiYjNDM7ewomIzQzOwl1MzIgaTsKJiM0MzsKJiM0MzsJaWYgKCFjaHVua3MpIHsKJiM0MzsJCXZmcmVlKGFkZHIpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CXZ1bm1hcChhZGRyKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGNodW5rX2NudDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgdmFkZHIgPQomIzQzOwkJCSh1bnNpZ25lZCBsb25nKXBhZ2VfYWRkcmVzcyhjaHVua3NbaV0pOwomIzQzOwkJdW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIocGFnZV9mb2xpbyhjaHVua3NbaV0pKTsKJiM0MzsKJiM0MzsJCWlmIChzZXRfbWVtb3J5X2VuY3J5cHRlZCh2YWRkciwgMVUgJmx0OyZsdDsgb3JkZXIpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJX19mcmVlX3BhZ2VzKGNodW5rc1tpXSwgb3JkZXIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWt2ZnJlZShjaHVua3MpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci4KJiM0MzsgKgomIzQzOyAqIEBjaGFubmVsOiB0aGUgY2hhbm5lbCB0aGUgYnVmZmVyIHdpbGwgYmUgYXR0YWNoZWQgdG8KJiM0MzsgKiBAc2l6ZTogcmVxdWVzdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzICh3aWxsIGJlIHJvdW5kZWQgdXAgdG8gUEFHRV9TSVpFKQomIzQzOyAqIEBjaHVua3Nfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIGFycmF5IG9mIHVuZGVybHlpbmcgY2h1bmtzLCBvciBOVUxMIHdoZW4KJiM0MzsgKiAgICAgICAgICAgICAgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpCiYjNDM7ICogQGNodW5rX2NudF9vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgbnVtYmVyIG9mIGNodW5rcwomIzQzOyAqCiYjNDM7ICogQnVmZmVycyBub3QgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKS4KJiM0MzsgKgomIzQzOyAqIEJ1ZmZlcnMgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCBhcyBhIHNlcmllcyBvZgomIzQzOyAqIHBoeXNpY2FsbHktY29udGlndW91cyBjaHVua3MsIHN0YXJ0aW5nIGF0IE1BWF9QQUdFX09SREVSIGFuZCBmYWxsaW5nIGJhY2sgdG8KJiM0MzsgKiBzbWFsbGVyIG9yZGVycyBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuIEVhY2ggY2h1bmsgaXMgdHJhbnNpdGlvbmVkIHRvCiYjNDM7ICogaG9zdC12aXNpYmxlIHZpYSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIG9uIGl0cyBkaXJlY3QtbWFwIGFkZHJlc3MsIHRoZW4gYWxsCiYjNDM7ICogY2h1bmtzIGFyZSBjb21iaW5lZCBpbnRvIGEgdmlydHVhbGx5LWNvbnRpZ3VvdXMgcmFuZ2UgdmlhIHZtYXAoKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogdGhlIGJ1ZmZlciYjMzk7cyB2aXJ0dWFsIGFkZHJlc3MsIG9yIE5VTEwgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0Mzt2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiYjNDM7CQkJIHUzMiBzaXplLAomIzQzOwkJCSBzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LAomIzQzOwkJCSB1MzIgKmNodW5rX2NudF9vdXQpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gUEZOX1VQKHNpemUpOwomIzQzOwl1bnNpZ25lZCBsb25nIHJlbWFpbmluZyA9IG5yX3BhZ2VzOwomIzQzOwl1bnNpZ25lZCBsb25nIHBhZ2VfaWR4ID0gMDsKJiM0MzsJc3RydWN0IHBhZ2UgKipjaHVua3MgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gTlVMTDsKJiM0MzsJaW50IG9yZGVyID0gTUFYX1BBR0VfT1JERVI7CiYjNDM7CXUzMiBjaHVua19jbnQgPSAwOwomIzQzOwl2b2lkICphZGRyOwomIzQzOwl1MzIgaTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJKmNodW5rc19vdXQgPSBOVUxMOwomIzQzOwkqY2h1bmtfY250X291dCA9IDA7CiYjNDM7CiYjNDM7CWlmICghbnJfcGFnZXMpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJLyogSWYgdGhlIGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlY3J5cHRlZCwganVzdCB1c2UgdnphbGxvYygpICovCiYjNDM7CWlmICghaHZfaXNfaXNvbGF0aW9uX3N1cHBvcnRlZCgpIHx8IGNoYW5uZWwtJmd0O2NvX2V4dGVybmFsX21lbW9yeSkKJiM0MzsJCXJldHVybiB2emFsbG9jKG5yX3BhZ2VzICZsdDsmbHQ7IFBBR0VfU0hJRlQpOwomIzQzOwomIzQzOwkvKiBXb3JzdCBjYXNlOiBldmVyeSBjaHVuayBpcyBhIHNpbmdsZSBwYWdlLiAqLwomIzQzOwljaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLAomIzQzOwkJCQlHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CiYjNDM7CWlmICghY2h1bmtzKQomIzQzOwkJZ290byBlcnI7CiYjNDM7CiYjNDM7CXBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkobnJfcGFnZXMsIHNpemVvZigqcGFnZXMpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwYWdlcykKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwomIzQzOwl3aGlsZSAocmVtYWluaW5nKSB7CiYjNDM7CQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJCWdmcF90IGdmcDsKJiM0MzsKJiM0MzsJCW9yZGVyID0gbWluKG9yZGVyLCBpbG9nMihyZW1haW5pbmcpKTsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBVc2UgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTiB0byBhdm9pZCBPT00ta2lsbGluZywKJiM0MzsJCSAqIGJ1dCB0cnkgaGFyZGVyIGF0IG9yZGVyIDAgc2luY2UgdGhhdCBpcyB0aGUgZmluYWwKJiM0MzsJCSAqIGZhbGxiYWNrLgomIzQzOwkJICogX19HRlBfQ09NUCBzdG9yZXMgb3JkZXIgaW5mb3JtYXRpb24gaW4gdGhlIHBhZ2UgZm9saW8uCiYjNDM7CQkgKi8KJiM0MzsJCWdmcCA9IEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPOwomIzQzOwkJaWYgKG9yZGVyKQomIzQzOwkJCWdmcCB8PSBfX0dGUF9DT01QIHwgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTjsKJiM0MzsKJiM0MzsJCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKGNwdV90b19ub2RlKGNoYW5uZWwtJmd0O3RhcmdldF9jcHUpLAomIzQzOwkJCQkJZ2ZwLCBvcmRlcik7CiYjNDM7CQlpZiAoIXBhZ2UpIHsKJiM0MzsJCQlpZiAoIW9yZGVyLS0pCiYjNDM7CQkJCWdvdG8gZXJyOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0ID0gc2V0X21lbW9yeV9kZWNyeXB0ZWQoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpLAomIzQzOwkJCQkJICAgMVUgJmx0OyZsdDsgb3JkZXIpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCS8qCiYjNDM7CQkJICogc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBmYWlsZWQ7IHRoZSBwYWdlIHN0YXRlIGlzCiYjNDM7CQkJICogdW5rbm93biBzbyBpdCBtdXN0IGJlIGxlYWtlZCByYXRoZXIgdGhhbiBmcmVlZC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlnb3RvIGVycjsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWNodW5rc1tjaHVua19jbnQmIzQzOyYjNDM7XSA9IHBhZ2U7CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgKDFVICZsdDsmbHQ7IG9yZGVyKTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJcGFnZXNbcGFnZV9pZHgmIzQzOyYjNDM7XSA9IHBhZ2UgJiM0MzsgaTsKJiM0MzsKJiM0MzsJCXJlbWFpbmluZyAtPSAxVSAmbHQ7Jmx0OyBvcmRlcjsKJiM0MzsJfQomIzQzOwomIzQzOwlhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpOwomIzQzOwlpZiAoIWFkZHIpCiYjNDM7CQlnb3RvIGVycjsKJiM0MzsKJiM0MzsJbWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzICZsdDsmbHQ7IFBBR0VfU0hJRlQpOwomIzQzOwomIzQzOwlrdmZyZWUocGFnZXMpOwomIzQzOwkqY2h1bmtzX291dCA9IGNodW5rczsKJiM0MzsJKmNodW5rX2NudF9vdXQgPSBjaHVua19jbnQ7CiYjNDM7CXJldHVybiBhZGRyOwomIzQzOwomIzQzO2VycjoKJiM0MzsJa3ZmcmVlKHBhZ2VzKTsKJiM0MzsJdm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfYWxsb2NfYnVmZmVyKTsKJiM0MzsKIC8qKgogICogcmVxdWVzdF9hcnJfaW5pdCAtIEFsbG9jYXRlcyBtZW1vcnkgZm9yIHRoZSByZXF1ZXN0b3IgYXJyYXkuIEVhY2ggc2xvdAogICoga2VlcHMgdHJhY2sgb2YgdGhlIG5leHQgYXZhaWxhYmxlIHNsb3QgaW4gdGhlIGFycmF5LiBJbml0aWFsbHksIGVhY2gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oCmluZGV4IDczOTdjNjkzZjk4NGEuLjQ4NDEzNjdmZGFiMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaApAQCAtMjIwLDYgJiM0MzsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0OwogCiBleHRlcm4gdTMyIG5ldHZzY19yaW5nX2J5dGVzOwogCiYjNDM7aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTsKJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTsKIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJCQkJCWNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmluZm8pOwogaW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KTsKQEAgLTExNTgsNiAmIzQzOzExNjAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7CiAJLyogUmVjZWl2ZSBidWZmZXIgYWxsb2NhdGVkIGJ5IHVzIGJ1dCBtYW5hZ2VzIGJ5IE5ldFZTUCAqLwogCXZvaWQgKnJlY3ZfYnVmOwogCXUzMiByZWN2X2J1Zl9zaXplOyAvKiBhbGxvY2F0ZWQgYnl0ZXMgKi8KJiM0MzsJc3RydWN0IHBhZ2UgKipyZWN2X2J1Zl9jaHVua3M7CiYjNDM7CXUzMiByZWN2X2J1Zl9jaHVua19jbnQ7CiAJc3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTsKIAl1MzIgcmVjdl9zZWN0aW9uX2NudDsKIAl1MzIgcmVjdl9zZWN0aW9uX3NpemU7CkBAIC0xMTY2LDYgJiM0MzsxMTcwLDggQEAgc3RydWN0IG5ldHZzY19kZXZpY2UgewogCS8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqLwogCXZvaWQgKnNlbmRfYnVmOwogCXUzMiBzZW5kX2J1Zl9zaXplOwomIzQzOwlzdHJ1Y3QgcGFnZSAqKnNlbmRfYnVmX2NodW5rczsKJiM0MzsJdTMyIHNlbmRfYnVmX2NodW5rX2NudDsKIAlzdHJ1Y3Qgdm1idXNfZ3BhZGwgc2VuZF9idWZfZ3BhZGxfaGFuZGxlOwogCXUzMiBzZW5kX3NlY3Rpb25fY250OwogCXUzMiBzZW5kX3NlY3Rpb25fc2l6ZTsKQEAgLTExOTMsNyAmIzQzOzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7CiAKIAlzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTsKIAotCXN0cnVjdCByY3VfaGVhZCByY3U7CiYjNDM7CXN0cnVjdCByY3Vfd29yayByd29yazsKIH07CiAKIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYwppbmRleCA1OWU5NTM0MWY5YjFlLi5jNTlmMmE0NGJhZGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jCkBAIC0yOCw2ICYjNDM7MjgsOCBAQAogI2luY2x1ZGUgJiMzNDtoeXBlcnZfbmV0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtuZXR2c2NfdHJhY2UuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTsKJiM0MzsKIC8qCiAgKiBTd2l0Y2ggdGhlIGRhdGEgcGF0aCBmcm9tIHRoZSBzeW50aGV0aWMgaW50ZXJmYWNlIHRvIHRoZSBWRgogICogaW50ZXJmYWNlLgpAQCAtMTI1LDYgJiM0MzsxMjcsNDcgQEAgc3RhdGljIHZvaWQgbmV0dnNjX3N1YmNoYW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAJcnRubF91bmxvY2soKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldikKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlrZnJlZShudmRldi0mZ3Q7ZXh0ZW5zaW9uKTsKJiM0MzsKJiM0MzsJdm1idXNfZnJlZV9idWZmZXIobnZkZXYtJmd0O3JlY3ZfYnVmLCBudmRldi0mZ3Q7cmVjdl9idWZfY2h1bmtzLAomIzQzOwkJCSAgbnZkZXYtJmd0O3JlY3ZfYnVmX2NodW5rX2NudCk7CiYjNDM7CXZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LSZndDtzZW5kX2J1ZiwgbnZkZXYtJmd0O3NlbmRfYnVmX2NodW5rcywKJiM0MzsJCQkgIG52ZGV2LSZndDtzZW5kX2J1Zl9jaHVua19jbnQpOwomIzQzOwliaXRtYXBfZnJlZShudmRldi0mZ3Q7c2VuZF9zZWN0aW9uX21hcCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykgewomIzQzOwkJeGRwX3J4cV9pbmZvX3VucmVnKCZhbXA7bnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ueGRwX3J4cSk7CiYjNDM7CQlrZnJlZShudmRldi0mZ3Q7Y2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7CiYjNDM7CQl2ZnJlZShudmRldi0mZ3Q7Y2hhbl90YWJsZVtpXS5tcmMuc2xvdHMpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWtmcmVlKG52ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKJiM0Mzt7CiYjNDM7CXN0cnVjdCByY3Vfd29yayAqcndvcmsgPSB0b19yY3Vfd29yayh3KTsKJiM0MzsKJiM0MzsJX19mcmVlX25ldHZzY19kZXZpY2UoY29udGFpbmVyX29mKHJ3b3JrLCBzdHJ1Y3QgbmV0dnNjX2RldmljZSwgcndvcmspKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKQomIzQzO3sKJiM0MzsJbmV0dnNjX3dxID0gYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7aHZfbmV0dnNjJiMzNDssIFdRX1VOQk9VTkQsIDApOwomIzQzOwomIzQzOwlyZXR1cm4gbmV0dnNjX3dxID8gMCA6IC1FTk9NRU07CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpCiYjNDM7ewomIzQzOwlyY3VfYmFycmllcigpOwomIzQzOwlkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKQogewogCXN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlOwpAQCAtMTQzLDM2ICYjNDM7MTg2LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKQogCWluaXRfY29tcGxldGlvbigmYW1wO25ldF9kZXZpY2UtJmd0O2NoYW5uZWxfaW5pdF93YWl0KTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7bmV0X2RldmljZS0mZ3Q7c3ViY2hhbl9vcGVuKTsKIAlJTklUX1dPUksoJmFtcDtuZXRfZGV2aWNlLSZndDtzdWJjaGFuX3dvcmssIG5ldHZzY19zdWJjaGFuX3dvcmspOwomIzQzOwlJTklUX1JDVV9XT1JLKCZhbXA7bmV0X2RldmljZS0mZ3Q7cndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7CiAKIAlyZXR1cm4gbmV0X2RldmljZTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKLXsKLQlzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYKLQkJPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7Ci0JaW50IGk7Ci0KLQlrZnJlZShudmRldi0mZ3Q7ZXh0ZW5zaW9uKTsKLQotCWlmICghbnZkZXYtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpCi0JCXZmcmVlKG52ZGV2LSZndDtyZWN2X2J1Zik7Ci0JaWYgKCFudmRldi0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZCkKLQkJdmZyZWUobnZkZXYtJmd0O3NlbmRfYnVmKTsKLQliaXRtYXBfZnJlZShudmRldi0mZ3Q7c2VuZF9zZWN0aW9uX21hcCk7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDsgVlJTU19DSEFOTkVMX01BWDsgaSYjNDM7JiM0MzspIHsKLQkJeGRwX3J4cV9pbmZvX3VucmVnKCZhbXA7bnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ueGRwX3J4cSk7Ci0JCWtmcmVlKG52ZGV2LSZndDtjaGFuX3RhYmxlW2ldLnJlY3ZfYnVmKTsKLQkJdmZyZWUobnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ubXJjLnNsb3RzKTsKLQl9Ci0KLQlrZnJlZShudmRldik7Ci19Ci0KIHN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KQogewotCWNhbGxfcmN1KCZhbXA7bnZkZXYtJmd0O3JjdSwgZnJlZV9uZXR2c2NfZGV2aWNlKTsKJiM0MzsJLyoKJiM0MzsJICogRGVmZXIgdGhlIGFjdHVhbCBmcmVlIHRvIHByb2Nlc3MgY29udGV4dDogdnVubWFwKCkgYW5kCiYjNDM7CSAqIHNldF9tZW1vcnlfZW5jcnlwdGVkKCkgY2Fubm90IHJ1biBmcm9tIFJDVSBzb2Z0aXJxIGNvbnRleHQuCiYjNDM7CSAqLwomIzQzOwlxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsICZhbXA7bnZkZXYtJmd0O3J3b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCkBAIC0zNTEsNyAmIzQzOzM3NiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJCWJ1Zl9zaXplID0gbWluX3QodW5zaWduZWQgaW50LCBidWZfc2l6ZSwKIAkJCQkgTkVUVlNDX1JFQ0VJVkVfQlVGRkVSX1NJWkVfTEVHQUNZKTsKIAotCW5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7CiYjNDM7CW5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmID0KJiM0MzsJCXZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtJmd0O2NoYW5uZWwsIGJ1Zl9zaXplLAomIzQzOwkJCQkgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2NodW5rcywKJiM0MzsJCQkJICAgJmFtcDtuZXRfZGV2aWNlLSZndDtyZWN2X2J1Zl9jaHVua19jbnQpOwogCWlmICghbmV0X2RldmljZS0mZ3Q7cmVjdl9idWYpIHsKIAkJbmV0ZGV2X2VycihuZGV2LAogCQkJICAgJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgcmVjZWl2ZSBidWZmZXIgb2Ygc2l6ZSAldVxuJiMzNDssCkBAIC0zNjcsOSAmIzQzOzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJICogY2hhbm5lbC4gIE5vdGU6IFRoaXMgY2FsbCB1c2VzIHRoZSB2bWJ1cyBjb25uZWN0aW9uIHJhdGhlcgogCSAqIHRoYW4gdGhlIGNoYW5uZWwgdG8gZXN0YWJsaXNoIHRoZSBncGFkbCBoYW5kbGUuCiAJICovCi0JcmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsKGRldmljZS0mZ3Q7Y2hhbm5lbCwgbmV0X2RldmljZS0mZ3Q7cmVjdl9idWYsCi0JCQkJICAgIGJ1Zl9zaXplLAotCQkJCSAgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7CiYjNDM7CXJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS0mZ3Q7Y2hhbm5lbCwKJiM0MzsJCQkJCQkgICAgIG5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmLAomIzQzOwkJCQkJCSAgICAgYnVmX3NpemUsCiYjNDM7CQkJCQkJICAgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7CiAJaWYgKHJldCAhPSAwKSB7CiAJCW5ldGRldl9lcnIobmRldiwKIAkJCSYjMzQ7dW5hYmxlIHRvIGVzdGFibGlzaCByZWNlaXZlIGJ1ZmZlciYjMzk7cyBncGFkbFxuJiMzNDspOwpAQCAtNDU3LDcgJiM0Mzs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLAogCWJ1Zl9zaXplID0gZGV2aWNlX2luZm8tJmd0O3NlbmRfc2VjdGlvbnMgKiBkZXZpY2VfaW5mby0mZ3Q7c2VuZF9zZWN0aW9uX3NpemU7CiAJYnVmX3NpemUgPSByb3VuZF91cChidWZfc2l6ZSwgUEFHRV9TSVpFKTsKIAotCW5ldF9kZXZpY2UtJmd0O3NlbmRfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7CiYjNDM7CW5ldF9kZXZpY2UtJmd0O3NlbmRfYnVmID0KJiM0MzsJCXZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtJmd0O2NoYW5uZWwsIGJ1Zl9zaXplLAomIzQzOwkJCQkgICAmYW1wO25ldF9kZXZpY2UtJmd0O3NlbmRfYnVmX2NodW5rcywKJiM0MzsJCQkJICAgJmFtcDtuZXRfZGV2aWNlLSZndDtzZW5kX2J1Zl9jaHVua19jbnQpOwogCWlmICghbmV0X2RldmljZS0mZ3Q7c2VuZF9idWYpIHsKIAkJbmV0ZGV2X2VycihuZGV2LCAmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBzZW5kIGJ1ZmZlciBvZiBzaXplICV1XG4mIzM0OywKIAkJCSAgIGJ1Zl9zaXplKTsKQEAgLTQ3MCw5ICYjNDM7NTAyLDEwIEBAIHN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSwKIAkgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyCiAJICogdGhhbiB0aGUgY2hhbm5lbCB0byBlc3RhYmxpc2ggdGhlIGdwYWRsIGhhbmRsZS4KIAkgKi8KLQlyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLSZndDtjaGFubmVsLCBuZXRfZGV2aWNlLSZndDtzZW5kX2J1ZiwKLQkJCQkgICAgYnVmX3NpemUsCi0JCQkJICAgICZhbXA7bmV0X2RldmljZS0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlKTsKJiM0MzsJcmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLSZndDtjaGFubmVsLAomIzQzOwkJCQkJCSAgICAgbmV0X2RldmljZS0mZ3Q7c2VuZF9idWYsCiYjNDM7CQkJCQkJICAgICBidWZfc2l6ZSwKJiM0MzsJCQkJCQkgICAgICZhbXA7bmV0X2RldmljZS0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlKTsKIAlpZiAocmV0ICE9IDApIHsKIAkJbmV0ZGV2X2VycihuZGV2LAogCQkJICAgJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHNlbmQgYnVmZmVyJiMzOTtzIGdwYWRsXG4mIzM0Oyk7CkBAIC0xODYzLDcgJiM0MzsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJbmV0aWZfbmFwaV9kZWwoJmFtcDtuZXRfZGV2aWNlLSZndDtjaGFuX3RhYmxlWzBdLm5hcGkpOwogCiBjbGVhbnVwMjoKLQlmcmVlX25ldHZzY19kZXZpY2UoJmFtcDtuZXRfZGV2aWNlLSZndDtyY3UpOwomIzQzOwkvKgomIzQzOwkgKiBuZXRfZGV2aWNlIHdhcyBuZXZlciBwdWJsaXNoZWQsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHdhaXQgZm9yIGFuCiYjNDM7CSAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuCiYjNDM7CSAqLwomIzQzOwlfX2ZyZWVfbmV0dnNjX2RldmljZShuZXRfZGV2aWNlKTsKIAogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYwppbmRleCBlZTVhYjVjZWIyYmUyLi4xZDQzYzczZmQ3M2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmMKQEAgLTI4NjcsMTIgJiM0MzsyODY3LDE3IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBuZXR2c2NfZHJ2X2V4aXQodm9pZCkKIHsKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcigmYW1wO25ldHZzY19uZXRkZXZfbm90aWZpZXIpOwogCXZtYnVzX2RyaXZlcl91bnJlZ2lzdGVyKCZhbXA7bmV0dnNjX2Rydik7CiYjNDM7CW5ldHZzY193b3JrcXVldWVfZGVzdHJveSgpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZCkKIHsKIAlpbnQgcmV0OwogCiYjNDM7CXJldCA9IG5ldHZzY193b3JrcXVldWVfaW5pdCgpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlpZiAocmluZ19zaXplICZsdDsgUklOR19TSVpFX01JTikgewogCQlyaW5nX3NpemUgPSBSSU5HX1NJWkVfTUlOOwogCQlwcl9pbmZvKCYjMzQ7SW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXG4mIzM0OywKQEAgLTI4OTAsNiAmIzQzOzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZCkKIAogZXJyX3ZtYnVzX3JlZzoKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcigmYW1wO25ldHZzY19uZXRkZXZfbm90aWZpZXIpOwomIzQzOwluZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaAppbmRleCA5NjRmMWJlODE1MGM1Li5mODQzZWUwZWZhMjJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmgKQEAgLTcwLDcgJiM0Mzs3MCw4IEBACiAgKi8KIGVudW0gaHZfZ3BhZGxfdHlwZSB7CiAJSFZfR1BBRExfQlVGRkVSLAotCUhWX0dQQURMX1JJTkcKJiM0MzsJSFZfR1BBRExfUklORywKJiM0MzsJSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRAogfTsKIAogLyogU2luZ2xlLXBhZ2UgYnVmZmVyICovCkBAIC0xMjA1LDkgJiM0MzsxMjA2LDIxIEBAIGV4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLAogCQkJCSAgICAgIHUzMiBzaXplLAogCQkJCSAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwogCiYjNDM7ZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKJiM0MzsJCQkJCQkgIHZvaWQgKmtidWZmZXIsCiYjNDM7CQkJCQkJICB1MzIgc2l6ZSwKJiM0MzsJCQkJCQkgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwomIzQzOwogZXh0ZXJuIGludCB2bWJ1c190ZWFyZG93bl9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKIAkJCQkgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwogCiYjNDM7ZXh0ZXJuIHZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKJiM0MzsJCQkJdTMyIHNpemUsCiYjNDM7CQkJCXN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsCiYjNDM7CQkJCXUzMiAqY2h1bmtfY250X291dCk7CiYjNDM7CiYjNDM7ZXh0ZXJuIHZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpOwomIzQzOwogdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTsKIAogZXh0ZXJuIGludCB2bWJ1c19yZWN2cGFja2V0KHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTcwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSHlwZXItViBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEh5cGVyLVYgY2hhbm5lbCBhbmQgbmV0dnNjIGRyaXZlcnMuIEl0JiMzOTtzIGludHJvZHVjaW5nIHNvbWUgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCYjMzk7cyB1c2luZyB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGBuZXR2c2NfaW5pdF9idWZgIGluc3RlYWQgb2YgdGhlIG9sZCBtZXRob2QuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24sIHBvdGVudGlhbGx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIGFkZHJlc3Npbmcgc29tZSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSB3b3JrcXVldWUgZm9yIGBuZXR2c2NgIHRvIGRlZmVyIGRldmljZSBmcmVlaW5nIGJlY2F1c2Ugb2YgdGhlIHJlc3RyaWN0aW9ucyBhcm91bmQgYHZ1bm1hcCgpYCBhbmQgYHNldF9tZW1vcnlfZW5jcnlwdGVkKClgIHdpdGhpbiB0aGUgUkNVIHNvZnRpcnEgY29udGV4dC4gU21hcnQuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGVzdGluZyB0aGlzLiBIeXBlci1WIGRyaXZlcnMgYXJlLCBvZiBjb3Vyc2UsIHVzdWFsbHkgcmVsZXZhbnQgd2hlbiBydW5uaW5nICpvbiogSHlwZXItVi4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoZXNlIGNoYW5nZXMgYXJlICpyZWFjaGFibGUqIGluIG1vcmUgY29tbW9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLiBJdCYjMzk7cyBwb3NzaWJsZSB0byBlbXVsYXRlIHNvbWUgSHlwZXItViBmZWF0dXJlcyBpbiBRRU1VLCBsaWtlIFZNQnVzLCBidXQgZG9lcyB0aGF0IGV4dGVuZGVkIHRvIG5ldHZzYz8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gdG8gc2VlIGlmIGBDT05GSUdfSFlQRVJWYCBhbmQgYENPTkZJR19IWVBFUlZfTkVUYCBhcmUgdGVzdGFibGUgb3IgZW5hYmxlZCBpbiBteSB0YXJnZXQgZW52aXJvbm1lbnQuCgpTeXprYWxsZXIgaXMgdGhlIGZpcnN0IHRvb2wgdGhhdCBjb21lcyB0byBtaW5kIGZvciBmdXp6aW5nIHRoaXMuIEkga25vdyBpdCBoYXMgc29tZSB2bWJ1cyBzdXBwb3J0LCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBBaCwgaGVyZSB3ZSBnbywgc3l6a2FsbGVyIGhhcyBgc3lzL2xpbnV4L3NvY2tldF9oeXBlcnYudHh0YCBhbmQgYHN5cy9saW51eC92bWJ1cy50eHRgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgbmV0dnNjYCBhY3R1YWxseSBjb3ZlcmVkPyBMZXQgbWUgY2hlY2sgcXVpY2tseSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgbmV0dnNjLiBUaGF0JiMzOTtsbCBiZSB0aGUgY2xpbmNoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0dnNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDI1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTk9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9tYXJ2ZWxsL29jdGVvbnR4MiBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MjA6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9taWNyb3NvZnQvbmV0dnNjIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzY1xuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQtODIxLW5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbmV0cm9ub21lL25mcCBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L25ldHJvbm9tZS9uZnBcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdWlvLWhvd3RvLnJzdD02ODY9bGlrZSB0aGlzOjpcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0LTY4Ny1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0OjY4ODogICAgICAgICAgZWNobyAtbiBlZDk2MzY5NC1lODQ3LTRiMmEtODVhZi1iYzljZmMxMWQ2ZjMgXHUwMDNlIC9zeXMvYnVzL3ZtYnVzL2RyaXZlcnMvaHZfbmV0dnNjL3VuYmluZFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3QtNjg5LSAgICAgICAgICBlY2hvIC1uIGVkOTYzNjk0LWU4NDctNGIyYS04NWFmLWJjOWNmYzExZDZmMyBcdTAwM2UgL3N5cy9idXMvdm1idXMvZHJpdmVycy91aW9faHZfZ2VuZXJpYy9iaW5kXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdD04PUNvbnRlbnRzOlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3QtNDgtICAgbWV0YS9mYm5pY1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdDo0OTogICBtaWNyb3NvZnQvbmV0dnNjXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTUwLSAgIG11Y3NlL3JucGdiZVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdD0xNj1DaGVja3N1bSBvZmZsb2FkXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTctLS0tLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0OjE4OiAgVGhlIG5ldHZzYyBkcml2ZXIgc3VwcG9ydHMgY2hlY2tzdW0gb2ZmbG9hZCBhcyBsb25nIGFzIHRoZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTE5LSAgSHlwZXItViBob3N0IHZlcnNpb24gZG9lcy4gV2luZG93cyBTZXJ2ZXIgMjAxNiBhbmQgQXp1cmVcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q9Njc9U1ItSU9WIHN1cHBvcnRcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzEtICBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgZGV2aWNlIGlzIHBhc3NlZCB0byB0aGUgZ3Vlc3QgYXMgYSBQQ0lcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3MjogIGRldmljZS4gSW4gdGhpcyBjYXNlLCBib3RoIGEgc3ludGhldGljIChuZXR2c2MpIGFuZCBWRiBkZXZpY2UgYXJlXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzMtICB2aXNpYmxlIGluIHRoZSBndWVzdCBPUyBhbmQgYm90aCBOSUMmIzM5O3MgaGF2ZSB0aGUgc2FtZSBNQUMgYWRkcmVzcy5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC03NC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3NTogIFRoZSBWRiBpcyBlbnNsYXZlZCBieSBuZXR2c2MgZGV2aWNlLiAgVGhlIG5ldHZzYyBkcml2ZXIgd2lsbCB0cmFuc3BhcmVudGx5XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzYtICBzd2l0Y2ggdGhlIGRhdGEgcGF0aCB0byB0aGUgVkYgd2hlbiBpdCBpcyBhdmFpbGFibGUgYW5kIHVwLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc3LSAgTmV0d29yayBzdGF0ZSAoYWRkcmVzc2VzLCBmaXJld2FsbCwgZXRjKSBzaG91bGQgYmUgYXBwbGllZCBvbmx5IHRvIHRoZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0Ojc4OiAgbmV0dnNjIGRldmljZTsgdGhlIHNsYXZlIGRldmljZSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGluXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzktICBtb3N0IGNhc2VzLiAgVGhlIGV4Y2VwdGlvbnMgYXJlIGlmIHNvbWUgc3BlY2lhbCBxdWV1ZSBkaXNjaXBsaW5lIG9yXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTEwMD1YRFAgc3VwcG9ydFxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMDYtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTA3OiAgaHZfbmV0dnNjIHN1cHBvcnRzIFhEUCBpbiBuYXRpdmUgbW9kZSwgYW5kIHRyYW5zcGFyZW50bHkgc2V0cyB0aGUgWERQXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTA4LSAgcHJvZ3JhbSBvbiB0aGUgYXNzb2NpYXRlZCBWRiBOSUMgYXMgd2VsbC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMDktXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTEwOiAgU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBzeW50aGV0aWMgTklDIChuZXR2c2MpIHByb3BhZ2F0ZXMgdG9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMTEtICBWRiBOSUMgYXV0b21hdGljYWxseS4gU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBWRiBOSUMgZGlyZWN0bHlcbi0tXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0PTIxMj1Ud28gVk1CdXMgZGV2aWNlcyBkZXBlbmQgb24gdGhlIEh5cGVyLVYgaG9zdCB0byBkbyBETUEgZGF0YSB0cmFuc2ZlcnM6XG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0OjIxMzpzdG9ydnNjIGZvciBkaXNrIEkvTyBhbmQgbmV0dnNjIGZvciBuZXR3b3JrIEkvTy4gc3RvcnZzYyB1c2VzIHRoZSBub3JtYWxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3QtMjE0LUxpbnV4IGtlcm5lbCBETUEgQVBJcywgYW5kIHNvIGJvdW5jZSBidWZmZXJpbmcgdGhyb3VnaCBkZWNyeXB0ZWQgc3dpb3RsYlxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTU6bWVtb3J5IGlzIGRvbmUgaW1wbGljaXRseS4gbmV0dnNjIGhhcyB0d28gbW9kZXMgZm9yIGRhdGEgdHJhbnNmZXJzLiBUaGUgZmlyc3RcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3QtMjE2LW1vZGUgZ29lcyB0aHJvdWdoIHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHNwYWNlIHRoYXQgaXMgZXhwbGljaXRseSBhbGxvY2F0ZWRcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3Q6MjE3OmJ5IHRoZSBuZXR2c2MgZHJpdmVyLCBhbmQgaXMgdXNlZCBmb3IgbW9zdCBzbWFsbGVyIHBhY2tldHMuIFRoZXNlIHNlbmQgYW5kXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxOC1yZWNlaXZlIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkZWNyeXB0ZWQgYnkgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoKS4gQmVjYXVzZVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTk6dGhlIG5ldHZzYyBkcml2ZXIgZXhwbGljaXRseSBjb3BpZXMgcGFja2V0cyB0by9mcm9tIHRoZXNlIGJ1ZmZlcnMsIHRoZVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdC0yMjAtZXF1aXZhbGVudCBvZiBib3VuY2UgYnVmZmVyaW5nIGJldHdlZW4gZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQgbWVtb3J5IGlzXG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi92bWJ1cy5yc3Q9NDc9dGhlIGRldmljZSBpbiB0aGUgZ3Vlc3QgVk0uICBGb3IgZXhhbXBsZSwgdGhlIExpbnV4IGRyaXZlciBmb3IgdGhlXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L3ZtYnVzLnJzdDo0ODpzeW50aGV0aWMgTklDIGlzIHJlZmVycmVkIHRvIGFzIFwmIzM0O25ldHZzY1wmIzM0OyBhbmQgdGhlIExpbnV4IGRyaXZlciBmb3JcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0LTQ5LXRoZSBzeW50aGV0aWMgU0NTSSBjb250cm9sbGVyIGlzIFwmIzM0O3N0b3J2c2NcJiMzNDsuICBUaGVzZSBkcml2ZXJzIGNvbnRhaW5cbi0tXG5NQUlOVEFJTkVSUz0xMTk3OD1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9taWNyb3NvZnQsdm1idXMueWFtbFxuTUFJTlRBSU5FUlM6MTE5Nzk6RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdFxuTUFJTlRBSU5FUlMtMTE5ODAtRjpcdERvY3VtZW50YXRpb24vdmlydC9oeXBlcnZcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYz0xMDc2PXZvaWQgdm1idXNfcmVzZXRfY2hhbm5lbF9jYihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbClcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDg2LVx0ICpcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwODc6XHQgKiB2bWJ1c19jaGFuX3NjaGVkKCkgbWlnaHQgY2FsbCB0aGUgbmV0dnNjIGRyaXZlciBjYWxsYmFjayBmdW5jdGlvblxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA4OC1cdCAqIHRoYXQgZW5kcyB1cCBzY2hlZHVsaW5nIE5BUEkgd29yayB0aGF0IGFjY2Vzc2VzIHRoZSByaW5nIGJ1ZmZlci5cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDkwLVx0ICogYW5kIHRoYXQgdGhlIGNoYW5uZWwgcmluZyBidWZmZXIgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjY2Vzc2VkLCBjZi5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwOTE6XHQgKiB0aGUgY2FsbHMgdG8gbmFwaV9kaXNhYmxlKCkgaW4gbmV0dnNjX2RldmljZV9yZW1vdmUoKS5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTEwOTItXHQgKi9cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jPTU5OT1zdGF0aWMgdm9pZCB2bWJ1c19wcm9jZXNzX29mZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdjaGFubmVsKVxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtNjk4LVx0ICogd29ya3F1ZXVlcyB0byBhdm9pZCBwb3NzaWJsZSBkZWFkbG9jaywgZS5nLiBpbiBzeW5jLXByb2JpbmcgbW9kZSxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6Njk5Olx0ICogTklDMSYjMzk7cyBuZXR2c2Nfc3ViY2hhbl93b3JrKCkgY2FuIHJhY2Ugd2l0aCBOSUMyJiMzOTtzIG5ldHZzY19wcm9iZSgpIC1cdTAwM2VcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtNzAwLVx0ICogcnRubF9sb2NrKCksIGFuZCBjYXVzZXMgZGVhZGxvY2s6IHRoZSBmb3JtZXIgZ2V0cyB0aGUgcnRubF9sb2NrXG4tLVxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2h2c29ja19kZXZpY2VfdW5yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYy0xMzMwLSAqIE5JQyBjaGFubmVsIGlzIG9wZW5lZCAob25jZSBpdCBrbm93cyB0aGUgZ3Vlc3QgY2FuIHN1cHBvcnQgaXQsIHZpYSB0aGVcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6MTMzMTogKiBzcmlvdiBiaXQgaW4gdGhlIG5ldHZzYyBwcm90b2NvbCkuXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTEzMzItICovXG4tLVxuZHJpdmVycy9odi92bWJ1c19kcnYuYz0yMDM3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIHZtYnVzX2NoYW5fa3R5cGUgPSB7XG4tLVxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU1LSAqIGlzIHJ1bm5pbmcuXG5kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jOjIwNTY6ICogRm9yIGV4YW1wbGUsIEhWX05JQyBkZXZpY2UgaXMgdXNlZCBlaXRoZXIgYnkgdWlvX2h2X2dlbmVyaWMgb3IgaHZfbmV0dnNjIGF0IGFueSBnaXZlbiBwb2ludCBvZlxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU3LSAqIHRpbWUsIGFuZCBcJiMzNDtyaW5nXCYjMzQ7IHN5c2ZzIGlzIG5lZWRlZCBvbmx5IHdoZW4gdWlvX2h2X2dlbmVyaWMgaXMgYm91bmQgdG8gdGhhdCBkZXZpY2UuIFRvIGF2b2lkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM4NTI9c3RydWN0IG5ldF9kZXZpY2UgKm1hbmFfZ2V0X3ByaW1hcnlfbmV0ZGV2KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM4NjM6XHQvKiBJZiBtYW5hIGlzIHVzZWQgaW4gbmV0dnNjLCB0aGUgdXBwZXIgbmV0ZGV2aWNlIHNob3VsZCBiZSByZXR1cm5lZC4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODY0LVx0bmRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoYWMtXHUwMDNlcG9ydHNbcG9ydF9pbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICYjNDM7PSBodl9uZXR2c2Mub1xuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9oeXBlcnYvTWFrZWZpbGU6NDpodl9uZXR2c2MteSA6PSBuZXR2c2NfZHJ2Lm8gbmV0dnNjLm8gcm5kaXNfZmlsdGVyLm8gbmV0dnNjX3RyYWNlLm8gbmV0dnNjX2JwZi5vXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xMzc9c3RydWN0IG5kaXNfcGt0XzgwMjFxX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQ5LS8qXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE1MDogKiBSZXByZXNlbnQgbmV0dnNjIHBhY2tldCB3aGljaCBjb250YWlucyAxIFJORElTIGFuZCAxIGV0aGVybmV0IGZyYW1lXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1MS0gKiB3aXRoaW4gdGhlIFJORElTXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNTUtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE1NjpzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCB7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1Ny1cdC8qIEJvb2trZWVwaW5nIHN0dWZmICovXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE3NDpzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTc1LVx0dW5zaWduZWQgY2hhciBtYWNfYWRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTIxNj1zdHJ1Y3QgbmRpc19vZmZsb2FkX3BhcmFtcztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE3OnN0cnVjdCBuZXR2c2NfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMTg6c3RydWN0IG5ldHZzY19jaGFubmVsO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMTktc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjE6ZXh0ZXJuIHUzMiBuZXR2c2NfcmluZ19ieXRlcztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjM6aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI0OnZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjU6c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI2Olx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI3OmludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyODp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyOTppbnQgbmV0dnNjX3NlbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjMwOlx0XHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzEtXHRcdHN0cnVjdCBybmRpc19tZXNzYWdlICpybmRpc19tc2csXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzQtXHRcdGJvb2wgeGRwX3R4KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjM1OnZvaWQgbmV0dnNjX2xpbmtzdGF0dXNfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjM2LVx0XHRcdFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJlc3AsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTIzNy1cdFx0XHRcdHZvaWQgKmRhdGEsIHUzMiBkYXRhX2J1Zmxlbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzODppbnQgbmV0dnNjX3JlY3ZfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjM5Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0MDpcdFx0XHQgc3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4pO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDE6dm9pZCBuZXR2c2NfY2hhbm5lbF9jYih2b2lkICpjb250ZXh0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQyOmludCBuZXR2c2NfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNDMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NDp2b2lkIG5ldHZzY194ZHBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NTp1MzIgbmV0dnNjX3J1bl94ZHAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBuZXR2c2NfY2hhbm5lbCAqbnZjaGFuLFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNDYtXHRcdCAgIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQ3OnVuc2lnbmVkIGludCBuZXR2c2NfeGRwX2ZyYWdsZW4odW5zaWduZWQgaW50IGxlbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0ODpzdHJ1Y3QgYnBmX3Byb2cgKm5ldHZzY194ZHBfZ2V0KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0OTppbnQgbmV0dnNjX3hkcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNTAtXHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUxOlx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTI6aW50IG5ldHZzY192Zl9zZXR4ZHAoc3RydWN0IG5ldF9kZXZpY2UgKnZmX25ldGRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUzOmludCBuZXR2c2NfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTQ6aW50IG5ldHZzY19uZG94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IG4sXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI1NS1cdFx0ICAgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNTc9aW50IHJuZGlzX3NldF9zdWJjaGFubmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTg6XHRcdFx0IHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU5Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZfaW5mbyk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MDppbnQgcm5kaXNfZmlsdGVyX29wZW4oc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjYxOmludCBybmRpc19maWx0ZXJfY2xvc2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjYyOnN0cnVjdCBuZXR2c2NfZGV2aWNlICpybmRpc19maWx0ZXJfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MzpcdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqaW5mbyk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NDp2b2lkIHJuZGlzX2ZpbHRlcl91cGRhdGUoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjY1LXZvaWQgcm5kaXNfZmlsdGVyX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNjY6XHRcdFx0XHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNjctaW50IHJuZGlzX2ZpbHRlcl9zZXRfcnNzX3BhcmFtKHN0cnVjdCBybmRpc19kZXZpY2UgKnJkZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNjk9aW50IHJuZGlzX2ZpbHRlcl9zZXRfb2ZmbG9hZF9wYXJhbXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI3MDpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3MS1cdFx0XHRcdCAgICBzdHJ1Y3QgbmRpc19vZmZsb2FkX3BhcmFtcyAqcmVxX29mZmxvYWRzKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MjcyPWludCBybmRpc19maWx0ZXJfcmVjZWl2ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjczOlx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6Mjc0Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc1LVx0XHRcdCB2b2lkICpkYXRhLCB1MzIgYnVmbGVuKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc2LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNzc6aW50IHJuZGlzX2ZpbHRlcl9zZXRfZGV2aWNlX21hYyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc4LVx0XHRcdFx0Y29uc3QgY2hhciAqbWFjKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyODA6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm52X2RldiwgYm9vbCB2Zik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI4MS1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTg0Nj1zdHJ1Y3QgbnZzcF9tZXNzYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTkxMS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTEyOnN0YXRpYyBpbmxpbmUgdTMyIG5ldHZzY19ycXN0b3Jfc2l6ZSh1bnNpZ25lZCBsb25nIHJpbmdieXRlcylcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTEzLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTkyOT1zdHJ1Y3QgbXVsdGlfc2VuZF9kYXRhIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjsgLyogc2tiIGNvbnRhaW5pbmcgdGhlIHBrdCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5MzE6XHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGt0OyAvKiBuZXR2c2MgcGt0IHBlbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMyLVx0dTMyIGNvdW50OyAvKiBjb3VudGVyIG9mIGJhdGNoZWQgcGFja2V0cyAqL1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9OTQ4PXN0cnVjdCBudnNjX3JzYyB7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk2NDpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3R4IHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTY1LVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NzAtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk3MTpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTcyLVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODEtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk4MjpzdHJ1Y3QgbmV0dnNjX2V0aHRvb2xfc3RhdHMge1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODMtXHR1bnNpZ25lZCBsb25nIHR4X3NjYXR0ZXJlZDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk5NS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTk2OnN0cnVjdCBuZXR2c2NfZXRodG9vbF9wY3B1X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTk3LVx0dTY0ICAgICByeF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAwNi1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAwNzpzdHJ1Y3QgbmV0dnNjX3ZmX3BjcHVfc3RhdHMge1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDA4LVx0dTY0ICAgICByeF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAxNjpzdHJ1Y3QgbmV0dnNjX3JlY29uZmlnIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNy1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMjgtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwMjk6LyogVGhlIGNvbnRleHQgb2YgdGhlIG5ldHZzYyBkZXZpY2UgICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzAtc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dCB7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDMyLVx0c3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzMzpcdC8qIG5ldHZzY19kZXZpY2UgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzNDpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlIF9fcmN1ICpudmRldjtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzNTpcdC8qIGxpc3Qgb2YgbmV0dnNjIG5ldF9kZXZpY2VzICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzYtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDU5LVx0dTMyIGw0X2hhc2g7IC8qIEw0IGhhc2ggc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA2MDpcdHN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyBldGhfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNjEtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYzLVx0c3RydWN0IG5ldF9kZXZpY2UgX19yY3UgKnZmX25ldGRldjtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA2NDpcdHN0cnVjdCBuZXR2c2NfdmZfcGNwdV9zdGF0cyBfX3BlcmNwdSAqdmZfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNjUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHZmX3Rha2VvdmVyO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA3Ny1cdC8qIFVzZWQgdG8gdGVtcG9yYXJpbHkgc2F2ZSB0aGUgY29uZmlnIGluZm8gYWNyb3NzIGhpYmVybmF0aW9uICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwNzg6XHRzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpzYXZlZF9uZXR2c2NfZGV2X2luZm87XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNzktfTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4MC1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA4MTp2b2lkIG5ldHZzY192Zm5zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4Mi1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODUtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwODY6c3RhdGljIGlubGluZSB1MzIgbmV0dnNjX2dldF9oYXNoKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODctXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQgKm5kYylcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzItLyogUGVyIGNoYW5uZWwgZGF0YSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTMzOnN0cnVjdCBuZXR2c2NfY2hhbm5lbCB7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzQtXHRzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTEzNTpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTM2LVx0dm9pZCAqcmVjdl9idWY7IC8qIGJ1ZmZlciB0byBjb3B5IHBhY2tldHMgb3V0IGZyb20gdGhlIHJlY2VpdmUgYnVmZmVyICovXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTQ3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTQ4Olx0c3RydWN0IG5ldHZzY19zdGF0c190eCB0eF9zdGF0cztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0OTpcdHN0cnVjdCBuZXR2c2Nfc3RhdHNfcnggcnhfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExNTAtfTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE1MjovKiBQZXIgbmV0dnNjIGRldmljZSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTUzOnN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1NC1cdHUzMiBudnNwX3ZlcnNpb247XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTg4LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTg5Olx0dTMyIG5ldHZzY19nc29fbWF4X3NpemU7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTAtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTk5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMjAwOlx0c3RydWN0IG5ldHZzY19jaGFubmVsIGNoYW5fdGFibGVbVlJTU19DSEFOTkVMX01BWF07XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEyMDEtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xNzc3PXN0cnVjdCBybmRpc19tZXNzYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjQtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE4MjU6dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTgyNjpcdFx0ICAgICAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjctI2VuZGlmIC8qIF9IWVBFUlZfTkVUX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjgtI2luY2x1ZGUgXCYjMzQ7aHlwZXJ2X25ldC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mjk6I2luY2x1ZGUgXCYjMzQ7bmV0dnNjX3RyYWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMTpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mzc6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgdmYpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzgte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00MC1cdHN0cnVjdCBodl9kZXZpY2UgKmRldiA9IG5ldF9kZXZpY2VfY3R4LVx1MDAzZWRldmljZV9jdHg7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NDE6XHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZfZGV2ID0gcnRubF9kZXJlZmVyZW5jZShuZXRfZGV2aWNlX2N0eC1cdTAwM2VudmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDItXHRzdHJ1Y3QgbnZzcF9tZXNzYWdlICppbml0X3BrdCA9IFx1MDAyNm52X2Rldi1cdTAwM2VjaGFubmVsX2luaXRfcGt0O1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05OC0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDAte1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMTpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldiA9XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAyOlx0XHRjb250YWluZXJfb2Yodywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHN1YmNoYW5fd29yayk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzLVx0c3RydWN0IHJuZGlzX2RldmljZSAqcmRldjtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTI5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEzMDpzdGF0aWMgdm9pZCBfX2ZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1MTpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Mi17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1NC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTU6XHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ni19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1ODppbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU5LXtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjA6XHRuZXR2c2Nfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7aHZfbmV0dnNjXCYjMzQ7LCBXUV9VTkJPVU5ELCAwKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjEtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYyOlx0cmV0dXJuIG5ldHZzY193cSA/IDAgOiAtRU5PTUVNO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2My19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2NTp2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2Ni17XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY3LVx0cmN1X2JhcnJpZXIoKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjg6XHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2OS19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzIte1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MzpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3NC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzU6XHRuZXRfZGV2aWNlID0ga3phbGxvY19vYmooc3RydWN0IG5ldHZzY19kZXZpY2UpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3Ni1cdGlmICghbmV0X2RldmljZSlcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3LVx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXN1YmNoYW5fb3Blbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg4Olx0SU5JVF9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl93b3JrLCBuZXR2c2Nfc3ViY2hhbl93b3JrKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODk6XHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTkwLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTk0OnN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5NS17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5OS1cdCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMDpcdHF1ZXVlX3JjdV93b3JrKG5ldHZzY193cSwgXHUwMDI2bnZkZXYtXHUwMDNlcndvcmspO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTIwMS19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjAyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyMDQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjUyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI1MzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyNTQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMwNDpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMwNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzI0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNTpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzI2Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM0NjppbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ3LXtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDg6XHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbiA9IFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlY2hhbl90YWJsZVtxX2lkeF07XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ5LVx0aW50IG5vZGUgPSBjcHVfdG9fbm9kZShudmNoYW4tXHUwMDNlY2hhbm5lbC1cdTAwM2V0YXJnZXRfY3B1KTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MDpzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzYxOlx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MjpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZpY2VfaW5mbylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNjMte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00NjYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjQ2NzpcdFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbaV07XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDY4LVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00ODAtXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfY29tcGxldGlvbl9jbnQgPSBuZXRfZGV2aWNlLVx1MDAzZXJlY3Zfc2VjdGlvbl9jbnQgJiM0MzsgMTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo0ODE6XHRyZXQgPSBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3JpbmcobmV0X2RldmljZSwgMCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNTc2LWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NTc3Olx0bmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU3ODpcdG5ldHZzY19yZXZva2Vfc2VuZF9idWYoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzk6XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU4MDpcdG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNTgxLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU4ODpcdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy01ODktXHRcdFx0ICAgICAgc3RydWN0IG52c3BfbWVzc2FnZSAqaW5pdF9wYWNrZXQsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTY0OC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NDk6c3RhdGljIGludCBuZXR2c2NfY29ubmVjdF92c3Aoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY1MDpcdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NTE6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqZGV2aWNlX2luZm8pXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNjUyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzEyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxMzpcdHJldCA9IG5ldHZzY19pbml0X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIGRldmljZV9pbmZvKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTQtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOS0vKlxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMDogKiBuZXR2c2NfZGV2aWNlX3JlbW92ZSAtIENhbGxiYWNrIHdoZW4gdGhlIHJvb3QgYnVzIGRldmljZSBpcyByZW1vdmVkXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIxLSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMjp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjMte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjUtXHRzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0ICpuZXRfZGV2aWNlX2N0eCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyNjpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzI3LVx0XHQ9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXHUwMDNlbnZkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzMtXHQgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MzQ6XHRuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzM1LVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNjIFZFUlNJT05fV0lOMTApXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzM2Olx0XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczNy1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3Mzg6XHRuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzM5LVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNjIFZFUlNJT05fV0lOMTApXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzQwOlx0XHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc0MS1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzcyLVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNlPSBWRVJTSU9OX1dJTjEwKSB7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzczOlx0XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3NDpcdFx0bmV0dnNjX3RlYXJkb3duX3NlbmRfZ3BhZGwoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3Ny1cdC8qIFJlbGVhc2UgYWxsIHJlc291cmNlcyAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3ODpcdGZyZWVfbmV0dnNjX2RldmljZV9yY3UobmV0X2RldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzc5LX1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc4NDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2ZyZWVfc2VuZF9zbG90KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cdFx0XHRcdFx0IHUzMiBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3OTE6XHRcdFx0XHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzkyLVx0XHRcdFx0ICAgIHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTEtXHRpZiAobGlrZWx5KHNrYikpIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTI6XHRcdHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXRcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTM6XHRcdFx0PSAoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKilza2ItXHUwMDNlY2I7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE0LVx0XHR1MzIgc2VuZF9pbmRleCA9IHBhY2tldC1cdTAwM2VzZW5kX2J1Zl9pbmRleDtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTU6XHRcdHN0cnVjdCBuZXR2c2Nfc3RhdHNfdHggKnR4X3N0YXRzO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgxNi1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTctXHRcdGlmIChzZW5kX2luZGV4ICE9IE5FVFZTQ19JTlZBTElEX0lOREVYKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjgxODpcdFx0XHRuZXR2c2NfZnJlZV9zZW5kX3Nsb3QobmV0X2RldmljZSwgc2VuZF9pbmRleCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE5LVx0XHRxX2lkeCA9IHBhY2tldC1cdTAwM2VxX2lkeDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODI3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjgyODpcdFx0bmV0dnNjX2RtYV91bm1hcChuZGV2X2N0eC1cdTAwM2VkZXZpY2VfY3R4LCBwYWNrZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyOS1cdFx0bmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfY29tcGxldGlvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTE6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NTItXHRcdFx0XHQgICBzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqaW5jb21pbmdfY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTQ1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk0NjpcdFx0bmV0dnNjX3NlbmRfdHhfY29tcGxldGUobmRldiwgbmV0X2RldmljZSwgaW5jb21pbmdfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDctXHRcdFx0XHRcdGRlc2MsIGJ1ZGdldCk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2Mi1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NjM6c3RhdGljIHUzMiBuZXR2c2NfZ2V0X25leHRfc2VuZF9zZWN0aW9uKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3NS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBzZWN0aW9uX2luZGV4LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3OC1cdFx0XHRcdCAgICB1MzIgcGVuZF9zaXplLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk3OTpcdFx0XHRcdCAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4MC1cdFx0XHRcdCAgICBzdHJ1Y3Qgcm5kaXNfbWVzc2FnZSAqcm5kaXNfbXNnLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDEyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMTM6dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDE0Olx0XHQgICAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMTUte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDMxLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMzI6LyogbmV0dnNjX2RtYV9tYXAgLSBNYXAgc3dpb3RsYiBib3VuY2UgYnVmZmVyIHdpdGggZGF0YSBwYWdlIG9mXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzMy0gKiBwYWNrZXQgc2VudCBieSB2bWJ1c19zZW5kcGFja2V0X3BhZ2VidWZmZXIoKSBpbiB0aGUgSXNvbGF0aW9uXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzUtICpcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDM2OiAqIEluIGlzb2xhdGlvbiBWTSwgbmV0dnNjIHNlbmQgYnVmZmVyIGhhcyBiZWVuIG1hcmtlZCB2aXNpYmxlIHRvXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzNy0gKiBob3N0IGFuZCBzbyB0aGUgZGF0YSBjb3BpZWQgdG8gc2VuZCBidWZmZXIgZG9lc24mIzM5O3QgbmVlZCB0byB1c2Vcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzOS0gKiBtYXkgbm90IGJlIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBhbmQgc28gdGhlc2UgcGFnZXMgbmVlZCB0byBiZVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwNDA6ICogbWFwcGVkIHdpdGggc3dpb3RsYiBib3VuY2UgYnVmZmVyLiBuZXR2c2NfZG1hX21hcCgpIGlzIHRvIGRvXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA0MS0gKiB0aGF0LiBUaGUgcGZucyBpbiB0aGUgc3RydWN0IGh2X3BhZ2VfYnVmZmVyIG5lZWQgdG8gYmUgY29udmVydGVkXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNDktICovXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTA1MDpzdGF0aWMgaW50IG5ldHZzY19kbWFfbWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUxOlx0XHRcdCAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDUyLVx0XHRcdCAgc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA5OS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTAwOnN0YXRpYyBpbmxpbmUgdm9pZCBuZXR2c2NfYnVpbGRfbXBiX2FycmF5KHN0cnVjdCBodl9wYWdlX2J1ZmZlciAqcGIsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEwMS1cdFx0XHRcdHUzMiBwYWdlX2J1ZmZlcl9jb3VudCxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTI1OnN0YXRpYyBpbmxpbmUgaW50IG5ldHZzY19zZW5kX3BrdChcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzk2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIE5ldHZzYyBpbiBhIEZ1enppbmcgQ29udGV4dCoqCgpPa2F5LCBzbyB0aGUgb3V0cHV0IGNvbmZpcm1zIGBuZXR2c2NgIGlzIGluZGVlZCB0aGUgSHlwZXItViBuZXR3b3JrIGRldmljZSBkcml2ZXIuIEdvb2QuIEkgc2VlIGl0JiMzOTtzIGxpbmtlZCB0byBgQ09ORklHX0hZUEVSVl9ORVRgLCB3aGljaCBpcyBleHBlY3RlZC4gTm93LCBTeXprYWxsZXIgYWxyZWFkeSBoYXMgZGVzY3JpcHRpb25zIGZvciBWTUJ1cyBhbmQgYHNvY2tldF9oeXBlcnZgLCBidXQgd2hhdCBhYm91dCBgbmV0dnNjYD8gSXQmIzM5O3MgYSBzdGFuZGFyZCBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IHJlZ2lzdGVycyBhIGBuZXRkZXZgLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBBbnkgc3RhbmRhcmQgbmV0d29yayBmdXp6aW5nIOKAkyBzZW5kaW5nIHBhY2tldHMsIGBpb2N0bGBzLCBgZXRodG9vbGAsIFhEUCDigJMgd2lsbCBwb3RlbnRpYWxseSBoaXQgaXQgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50LgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZGV2aWNlIHByZXNlbnQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGNhbiBlbXVsYXRlIFZNQnVzIGFuZCBzb21lIFZNQnVzIGRldmljZXMuIFdhaXQsIGRvZXMgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZSBgbmV0dnNjYCBvdXQgb2YgdGhlIGJveD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gQWN0dWFsbHksIGxvb2tzIGxpa2UgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBuZXR2c2NgIGRpcmVjdGx5LiBJdCBlbXVsYXRlcyBgdm1idXNgLCBidXQgdHlwaWNhbGx5IG9ubHkgYSBmZXcgZGV2aWNlcy4gT3IgbWF5YmUgaXQgKmRvZXMqPwoKSGFuZyBvbiwgU3l6a2FsbGVyIGhhcyBgc3lzL2xpbnV4L3ZtYnVzLnR4dGAgd2hpY2ggbWVhbnMgd2UgY2FuIGNyZWF0ZSBzeW50aGV0aWMgVk1CdXMgZGV2aWNlcyEgVGhhdCYjMzk7cyBpdCEgU3l6a2FsbGVyIGNhbiBpbmplY3QgVk1CdXMgZGV2aWNlcyBhbmQgbWVzc2FnZXMgdXNpbmcgYC9kZXYvdm1idXMvaHZfdWlvYCBvciBzaW1pbGFyIG1ldGhvZHMsIG9yIGV2ZW4gbW9jayB0aGUgVk1CdXMgaG9zdCBlbnRpcmVseS4gRG9lcyBzeXprYWxsZXIgdXNlIGBzeXpfdm1idXNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcGF0Y2ggbWVudGlvbnMgYSAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IC0gc28gc3l6Ym90IGZvdW5kIGEgd2F5IHRvIHRyaWdnZXIgc29tZXRoaW5nIG9yIGl0JiMzOTtzIGp1c3QgYSBwYXRjaCBiZWluZyB0ZXN0ZWQuCgpOb3csIHRoYXQgcHJvbXB0OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBJZiBTeXprYWxsZXIgY2FuIHJlYWNoIGl0LCB0aGVuIGl0ICppcyogcmVhY2hhYmxlLCByaWdodD8gU28gY2FuIHdlIHJlYWNoIGBuZXR2c2NgIHRoZW4/IExldCYjMzk7cyB0cmFjZSBpdCBhbmQgc2VlIGlmIHdlIGNhbiByZWFjaCBgdm1idXNfYWxsb2NfYnVmZmVyYC4KCmBuZXR2c2NfaW5pdF9idWZgIGNhbGxzIGB2bWJ1c19hbGxvY19idWZmZXJgLiBgbmV0dnNjX2luaXRfYnVmYCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBuZXR2c2NfY29ubmVjdF92c3BgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYG5ldHZzY19kZXZpY2VfYWRkYCwgd2hpY2ggaXMgZmluYWxseSBjYWxsZWQgZnJvbSBgbmV0dnNjX3Byb2JlYC4gYG5ldHZzY19wcm9iZWAgaXMgdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIFZNQnVzIGRldmljZS4gSWYgYSBWTUJ1cyBkZXZpY2Ugd2l0aCB0aGUgYG5ldHZzY2AgR1VJRCBpcyBvZmZlcmVkLCBgbmV0dnNjX3Byb2JlYCB3aWxsIHJ1bi4gVGhhdCYjMzk7cyB0aGUgY2hhaW4uIFNvLCBjYW4gd2Ugb2ZmZXIgVk1CdXMgZGV2aWNlcyBpbiBRRU1VPyBZZXMsIFN5emthbGxlciBoYXMgYSB3YXkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBvciBtYXliZSBRRU1VIHByb3ZpZGVzIG9uZT8KClRoZSBwcm9tcHQgc3RhdGVzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IEJ1dCBgbmV0dnNjYCBpcyBhIHN5bnRoZXRpYyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyLiBJdCBydW5zIG9uIHRvcCBvZiBWTUJ1cy4gVk1CdXMgaXMgc29mdHdhcmUtZW11bGF0ZWQgaW4gUUVNVS9LVk0gKHRvIHNvbWUgZXh0ZW50KSBvciBTeXprYWxsZXIgY2FuIG1vY2sgaXQuIFRoZXJlZm9yZSBpdCBpcyBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgbGV0IG1lIGxvb2sgYXQgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaDoKCiogICBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgCiogICBgdm1idXNfZnJlZV9idWZmZXJgCiogICBgdm1idXNfYWxsb2NfYnVmZmVyYAoqICAgYG5ldHZzY193b3JrcXVldWVfaW5pdGAKKiAgIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgCgpUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvaHYvY2hhbm5lbC5jYCBhbmQgYGRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuY2AuIFRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOiBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBhbmQgYHZtYnVzX2FsbG9jX2J1ZmZlcmAuIExldCYjMzk7cyBjaGVjayBgdm1idXNfYWxsb2NfYnVmZmVyYCBhbmQgYHZtYnVzX2ZyZWVfYnVmZmVyYC4gSSBzZWUgdGhleSBhcmUgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9odi9jaGFubmVsLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvY2hhbm5lbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvY2hhbm5lbC5jPTYxMT1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCk7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxuZHJpdmVycy9odi9jaGFubmVsLmM6NjE0OiAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTUtICpcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTctICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjE4OiAqIEBjaHVua3M6IGNodW5rcyBhcnJheSBmcm9tIHZtYnVzX2FsbG9jX2J1ZmZlcigpLCBvciBOVUxMXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTktICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jPTY0OT1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjUxLS8qKlxuZHJpdmVycy9odi9jaGFubmVsLmM6NjUyOiAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NTMtICpcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NjktICovXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NzA6dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjcxLVx0XHRcdCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjMtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NzY0OkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2FsbG9jX2J1ZmZlcik7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBJcyBgdm1idXNfZnJlZV9idWZmZXJgIGNhbGxlZCAqYWZ0ZXIqIGEgZ3BhZGwgaXMgZXN0YWJsaXNoZWQsIGxpa2VseSB0byBjbGVhbiB1cCBhZnRlciBpdD8gT3IgYXJlIHRoZXNlIHR3byBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcms/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGNyb3NzLXJlZmVyZW5jaW5nIHRoZWlyIHVzYWdlIHRvIHNlZSBpZiBhbnkgb2J2aW91cyBwYXR0ZXJucyBlbWVyZ2UuCgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGF0IGNvbnRleHQgZWFjaCBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoaW4uIFdoYXQmIzM5O3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkLCBhbmQgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBpbiB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucz8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIHJhY2UgY29uZGl0aW9ucywgbWVtb3J5IGxlYWtzLCBvciBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGluIHRoZSBgX2RlY3J5cHRlZGAgb25lLCBiZWNhdXNlIGRlY3J5cHRpb24gZnVuY3Rpb25zIGFsd2F5cyBpbnRyb2R1Y2UgbW9yZSBjb21wbGV4aXR5IGFuZCByaXNrLgoKSSBhbnRpY2lwYXRlIHRoZSBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgIGZ1bmN0aW9uIGNvdWxkIGJlIGtleSBpbiB0aGUgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgVk1CdXMsIHNvIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGVuY3J5cHRpb24ga2V5IGV4Y2hhbmdlIGFuZCBkZWNyeXB0aW9uIHByb2Nlc3MgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgc2VjdXJlbHkuIEFueSBmbGF3IGNvdWxkIGxlYWQgdG8gYSBjb21wcm9taXNlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGUgY2FsbGVyIGNvbnRleHQgaXMgZXN0YWJsaXNoZWQgd2lsbCBiZSBjcnVjaWFsLiBEb2VzIHRoZSBjYWxsZXIgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZT8gSXMgdGhlIGdwYWRsIHNlY3VyZSBmcm9tIHVuYXV0aG9yaXplZCBhY2Nlc3M/CgpSZWdhcmRpbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGl0IGhhbmRsZXMgYWxsIGNhc2VzLiBBcmUgdGhlcmUgYW55IGNvcm5lciBjYXNlcyB3aGVyZSBidWZmZXJzIG1pZ2h0IGJlIGxlYWtlZCwgb3IgZG91YmxlLWZyZWVkPyBIb3cgYXJlIHRoZXNlIGJ1ZmZlcnMgbWFuYWdlZD8gSXMgYSByZWZjb3VudGluZyBzY2hlbWUgaW52b2x2ZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHJlc291cmNlIGxpZmVjeWNsZSB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbi4KCkluIHNob3J0LCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGJ1aWxkaW5nIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBlYWNoIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UsIHRoZW4gdHJ5IHRvIHBpZWNlIHRvZ2V0aGVyIHRoZWlyIHJlbGF0aW9uc2hpcCBhbmQgbG9vayBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGVybXMgb2Ygc2VjdXJpdHksIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCBvdmVyYWxsIHJlbGlhYmlsaXR5IHdpdGhpbiB0aGUgVk1CdXMgYXJjaGl0ZWN0dXJlLiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBzdGFuZGFyZCBhbmFseXNpcywgZm9jdXNpbmcgb24gbG93LWxldmVsIGludGVyYWN0aW9ucyBhbmQgcG90ZW50aWFsIGV4cGxvaXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtYnVzX2ZyZWVfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9jaGFubmVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9jaGFubmVsLmM9NjExPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTMtLyoqXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTQ6ICogdm1idXNfZnJlZV9idWZmZXIgLSByZWxlYXNlIGEgYnVmZmVyIGFsbG9jYXRlZCBieSB2bWJ1c19hbGxvY19idWZmZXIoKS5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYyNS0gKi9cbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYyNjp2b2lkIHZtYnVzX2ZyZWVfYnVmZmVyKHZvaWQgKmFkZHIsIHN0cnVjdCBwYWdlICoqY2h1bmtzLCB1MzIgY2h1bmtfY250KVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjI3LXtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NDgtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjQ5OkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2ZyZWVfYnVmZmVyKTtcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY1MC1cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYz02NzA9dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2MC1cdGt2ZnJlZShwYWdlcyk7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo3NjE6XHR2bWJ1c19mcmVlX2J1ZmZlcihOVUxMLCBjaHVua3MsIGNodW5rX2NudCk7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjItXHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ3MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgR1BBREwgRXN0YWJsaXNobWVudCBQcm9jZXNzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCwgYW5kIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGNyaXRpY2FsIHJvbGUgdGhpcyBmdW5jdGlvbiBwbGF5cyBpbiBzZWN1cmUgY29tbXVuaWNhdGlvbiB3aXRoaW4gdGhlIFZNQnVzIGZyYW1ld29yay4gSSBuZWVkIHRvIGJyZWFrIGRvd24gcHJlY2lzZWx5ICpob3cqIGl0JiMzOTtzIHdvcmtpbmcgdG8gZXN0YWJsaXNoIGEgR2xvYmFsIFBhZ2UgQWRkcmVzcyBEZXNjcmlwdG9yIExpc3QgKEdQQURMKSwgZXNwZWNpYWxseSB3aXRoIHRoZSAmIzM0O2RlY3J5cHRlZCYjMzQ7IGVsZW1lbnQuIFRoaXMgY2xlYXJseSBzaWduYWxzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNlY3VyaXR5LXNlbnNpdGl2ZSBjaGFubmVsLgoKTXkgZmlyc3QgdGhvdWdodCBpcyBhcm91bmQgZGF0YSBpbnRlZ3JpdHk6IFdoYXQgZW5jcnlwdGlvbiBzY2hlbWUgaXMgZW1wbG95ZWQ/IElzIGl0IHN5bW1ldHJpYyBvciBhc3ltbWV0cmljPyBVbmRlcnN0YW5kaW5nIHRoZSBrZXkgZXhjaGFuZ2UgcHJvY2VzcyBpcyBwYXJhbW91bnQuIFdoZXJlIGlzIHRoZSBkZWNyeXB0aW9uIGtleSBkZXJpdmVkIGZyb20/IElzIGl0IHNvbWV0aGluZyBzdGF0aWMsIG9yIHBhcnQgb2YgYSBtb3JlIGR5bmFtaWMgYW5kIHNlY3VyZSBrZXkgYWdyZWVtZW50IHByb3RvY29sPyBJcyBpdCBhdXRoZW50aWNhdGVkIHNvbWVob3c/IEkgd2FudCB0byB0cmFjZSB0aGUgZmxvdyBvZiBjb250cm9sIGFuZCBkZXRlcm1pbmUgd2hlcmUgdGhlIGRlY3J5cHRpb24gaGFwcGVucy4gSXMgaXQgcGVyZm9ybWVkIGluIHRoZSBjYWxsZXIsIG9yIGlzIGl0IGRlbGVnYXRlZCBmdXJ0aGVyIGRvd24/CgpUaGVuLCB0aGUgR1BBREwgc3RydWN0dXJlIGl0c2VsZiBpcyBrZXkuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBsYXlvdXQgb2YgdGhlIG1lbW9yeSBtYXBwaW5ncyDigJMgd2hpY2ggcGh5c2ljYWwgcGFnZXMgYXJlIGJlaW5nIHJlZmVyZW5jZWQsIGFuZCBob3cuIElzIGl0IGEgY29udGlndW91cyBtYXBwaW5nLCBvciBpcyBpdCBmcmFnbWVudGVkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGFsaWdubWVudCBjb25zdHJhaW50cz8gVGhlICYjMzQ7Y2FsbGVyJiMzNDsgcGFydCBpcyBpbnRlcmVzdGluZyB0b28uIEl0IHRlbGxzIG1lIHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpcyB0aGUgaW5pdGlhdG9yLiBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBkcml2ZXIsIHRoZSBndWVzdCBPUywgb3Igc29tZXdoZXJlIGVsc2U/IFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hhdCBsZXZlbCBvZiBwcml2aWxlZ2UgbmVlZHMgdG8gYmUgaW52b2x2ZWQuCgpBbmQgb2YgY291cnNlLCBzZWN1cml0eSBpcyBldmVyeXRoaW5nIGhlcmUuIEkgbXVzdCBmb2N1cyBvbiB2dWxuZXJhYmlsaXRpZXMuIE15IG1pbmQgaXMgYWxyZWFkeSBwcm9iaW5nIGZvciBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cywgcmFjZSBjb25kaXRpb25zLCBvciBhbnkgb3Bwb3J0dW5pdGllcyBmb3IgZGF0YSB0YW1wZXJpbmcgZHVyaW5nIHRoaXMgcHJvY2Vzcy4gQ2FuIGEgbWFsaWNpb3VzIGFjdG9yIGdhaW4gYWNjZXNzIHRvIHRoZSByYXcgR1BBREwgaW5mb3JtYXRpb24gYW5kIHN1YnZlcnQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYXVkaXRpbmcgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2U/CgpVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBhdHRhY2sgc3VyZmFjZSBhbmQgYXNzZXNzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGlzIHNlY3VyZSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgd2l0aGluIHRoZSBWTUJ1cyBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIHZ1bG5lcmFiaWxpdHkgaGVyZSBjb3VsZCBoYXZlIHNlcmlvdXMgcmFtaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2h2L2NoYW5uZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2h2L2NoYW5uZWwuYz01OTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsKTtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTMtLypcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjU5NDogKiB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCAtIEVzdGFibGlzaCBhIEdQQURMIGZvciBhIGJ1ZmZlclxuZHJpdmVycy9odi9jaGFubmVsLmMtNTk1LSAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MDMtICovXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MDQ6aW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjA1LVx0XHRcdFx0XHQgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTAtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjExOkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0VlNDIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbmV0dnNjX3dvcmtxdWV1ZV9pbml0YCBhbmQgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IHdvcmtxdWV1ZXMgYXJlIG9mdGVuIHVzZWQgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcsIGxpa2VseSB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cyBvciBvZmZsb2FkIHRhc2tzLiBNeSBmaXJzdCBtb3ZlIGlzIGdvaW5nIHRvIGJlIHRvIHplcm8gaW4gb24gdGhvc2UgZnVuY3Rpb25zIHdpdGhpbiBgbmV0dnNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSB3b3JrcXVldWVzIGFyZSBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgYWRkaXRpb25zIGluIHRoZSBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlcyBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIG5ldHdvcmsgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIHRoZXkgc251Y2sgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKm5ldHZzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzE6c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzItXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTM3PWludCBuZXR2c2Nfc3dpdGNoX2RhdGFwYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05OC0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDAte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMjktXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTMwOnN0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTAtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTUxOnN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTY1PXZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3MC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzE6c3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTkzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjAzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2VfcmVjdl9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTIwNC1cdFx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTItXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjUzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2Vfc2VuZF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI1NC1cdFx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDMtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA0OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDUtXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMjU6c3RhdGljIHZvaWQgbmV0dnNjX3RlYXJkb3duX3NlbmRfZ3BhZGwoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MzQ2PWludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MDpzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYxLVx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NDgtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NjQ5OnN0YXRpYyBpbnQgbmV0dnNjX2Nvbm5lY3RfdnNwKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTAtXHRcdFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTcyMj12b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc4NDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2ZyZWVfc2VuZF9zbG90KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cdFx0XHRcdFx0IHUzMiBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03OTEtXHRcdFx0XHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfY29tcGxldGlvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NTEtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTYyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTY0LXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk3NjpzdGF0aWMgdm9pZCBuZXR2c2NfY29weV90b19zZW5kX2J1ZihzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NzctXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTEwMTM9dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2Rldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA0OS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUwOnN0YXRpYyBpbnQgbmV0dnNjX2RtYV9tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNTEtXHRcdFx0ICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDk5LSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMDA6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19idWlsZF9tcGJfYXJyYXkoc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTAxLVx0XHRcdFx0dTMyIHBhZ2VfYnVmZmVyX2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTI0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMjU6c3RhdGljIGlubGluZSBpbnQgbmV0dnNjX3NlbmRfcGt0KFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTExMjYtXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjQtLyogTW92ZSBwYWNrZXQgb3V0IG9mIG11bHRpIHNlbmQgZGF0YSAobXNkKSwgYW5kIGNsZWFyIG1zZCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEyMjU6c3RhdGljIGlubGluZSB2b2lkIG1vdmVfcGt0X21zZChzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqKm1zZF9zZW5kLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjYtXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqKm1zZF9za2IsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTEzODQ9c3RhdGljIGludCBzZW5kX3JlY3ZfY29tcGxldGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE0MjMtLyogQ291bnQgaG93IG1hbnkgcmVjZWl2ZSBjb21wbGV0aW9ucyBhcmUgb3V0c3RhbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDI0OnN0YXRpYyB2b2lkIHJlY3ZfY29tcF9zbG90X2F2YWlsKGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDI1LVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtdWx0aV9yZWN2X2NvbXAgKm1yYyxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTQzOT1zdGF0aWMgdm9pZCBlbnFfcmVjZWl2ZV9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTQ2OC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDY5OnN0YXRpYyBpbnQgbmV0dnNjX3JlY2VpdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTQ3MC1cdFx0XHQgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgxLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1ODI6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU4My1cdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZzY2Rldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTYyNy1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjI4OnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjktXHRcdFx0ICAgY29uc3Qgc3RydWN0IG52c3BfbWVzc2FnZSAqbnZtc2csXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NTEtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY1MjpzdGF0aWMgdm9pZCBuZXR2c2NfcmVjZWl2ZV9pbmJhbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY1My1cdFx0XHRcdCAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52c2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NzgtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY3OTpzdGF0aWMgaW50IG5ldHZzY19wcm9jZXNzX3Jhd19wa3Qoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2ODAtXHRcdFx0XHQgIHN0cnVjdCBuZXR2c2NfY2hhbm5lbCAqbnZjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzExLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTI6c3RhdGljIHN0cnVjdCBodl9kZXZpY2UgKm5ldHZzY19jaGFubmVsX3RvX2RldmljZShzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbClcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzEzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTUJ1cyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAsIGFuZCBzb21lIHdvcmtxdWV1ZSBtYW5hZ2VtZW50IHJvdXRpbmVzLCBgbmV0dnNjX3dvcmtxdWV1ZV9pbml0YCBhbmQgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWAuIEFoLCB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9ucyBhcmUganVzdCB3cmFwcGVycywgbm90aGluZyBjb21wbGV4IHRoZXJlLiBUaGUgcmVhbCBtZWF0IG9mIHRoaXMgcGF0Y2ggaXMgaW4gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgYW5kIGB2bWJ1c19mcmVlX2J1ZmZlcmAuCgpJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgaXMgYWN0dWFsbHkgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQmIzM5O3MgY2FsbGVkIHdpdGhpbiBgbmV0dnNjX2luaXRfYnVmYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gYSBuZXR2c2MgZGV2aWNlIGlzIGFkZGVkIOKAkyBzbywgeWVzLCBpdOKAmXMgcmVhY2hhYmxlLiBHb29kLCB0aGF0JiMzOTtzIGltcG9ydGFudCBmb3IgZnV6emluZy4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHkhIEl0IGFsbG9jYXRlcyBtZW1vcnksIG1hcmtzIGl0IGFzIGRlY3J5cHRlZCwgKmFuZCogbWFwcyBpdC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmaW5kaW5nIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlcmVmb3JlLCBteSBwcmltYXJ5IGZvY3VzIGZvciBmdXp6aW5nIHdpbGwgYmUgb246CgoqICAgYHZtYnVzX2FsbG9jX2J1ZmZlcmAKKiAgIGB2bWJ1c19mcmVlX2J1ZmZlcmAKKiAgIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAKCkxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgY29ycmVjdCB0byBzdGFydCB3aXRoLiBMb29rcyBsaWtlIGBDT05GSUdfSFlQRVJWYCBhbmQgYENPTkZJR19IWVBFUlZfTkVUYCBhcmUgcmVxdWlyZWQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIGBkcml2ZXJzL25ldC9oeXBlcnYvYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIWVBFUlZfTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWc6Mjpjb25maWcgSFlQRVJWX05FVFxuZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19IWVBFUlZfTkVUKSAmIzQzOz0gaHZfbmV0dnNjLm9cbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0zLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTEtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEyOiNpZm5kZWYgX0hZUEVSVl9ORVRfSFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMzojZGVmaW5lIF9IWVBFUlZfTkVUX0hcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xODI1PXZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjYtXHRcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI3OiNlbmRpZiAvKiBfSFlQRVJWX05FVF9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBIeXBlci1WIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcmVxdWlyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyIGluIG15IGV4YW1pbmF0aW9uIG9mIHRoZSBkcml2ZXIgY29kZSwgb3IgSSYjMzk7bGwgYmUgc3Bpbm5pbmcgbXkgd2hlZWxzLiBLbm93aW5nIHRoaXMgS2NvbmZpZyBjb25maWd1cmF0aW9uIGluc2lkZSBhbmQgb3V0IHdpbGwgcHJldmVudCBhIGxvdCBvZiB3YXN0ZWQgdGltZSBkb3duIHRoZSBsaW5lLiBJdCBpcyBhIGxvZ2ljYWwgZmlyc3Qgc3RlcCBmb3IgdGhpcyB0YXNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIEhZUEVSVl9ORVRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSFlQRVJWX1ZNQlVTXG4gICA1Olx0XHRzZWxlY3QgVUNTMl9TVFJJTkdcbiAgIDY6XHRcdHNlbGVjdCBOTFNcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSB0aGUgSHlwZXItViB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU2MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBoeXBlcnZpc29yIGRyaXZlcnMuCgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogRHJpbGxpbmcgRG93biBpbnRvIEh5cGVyLVYgTmV0d29ya2luZyoqCgpBbHJpZ2h0LCBzbyBgSFlQRVJWX05FVGAgcmVsaWVzIG9uIGBIWVBFUlZfVk1CVVNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgcHJvcGVybHkgY29uZmlndXJlZCwgYW5kIEkmIzM5O2xsIGZpbmQgaXRzIGRlZmluaXRpb24gaW4gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwganVtcCBzdHJhaWdodCB0byBgZHJpdmVycy9odi9LY29uZmlnYC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjaywgZ2l2ZW4gdGhhdCBgSFlQRVJWX1ZNQlVTYCBpcyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIEh5cGVyLVYgdmlydHVhbCBidXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXNuJiMzOTt0IGRpc2FibGVkIGJ5IGRlZmF1bHQgb3IgaGlkZGVuIGJlaGluZCBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBvcHRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB0cm91Ymxlc2hvb3QgYW55IG5ldHdvcmtpbmcgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaHlwZXJ2aXNvciwgYW5kIEkmIzM5O2xsIGtub3cgd2hlcmUgdG8gYWRqdXN0IHRoZSBidWlsZCBjb25maWcgdG8gbWVldCBpdHMgcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFlQRVJWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnPTM9bWVudSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2h2L0tjb25maWctNC1cbmRyaXZlcnMvaHYvS2NvbmZpZzo1OmNvbmZpZyBIWVBFUlZcbmRyaXZlcnMvaHYvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy0xNi1cbmRyaXZlcnMvaHYvS2NvbmZpZzoxNzpjb25maWcgSFlQRVJWX1ZUTF9NT0RFXG5kcml2ZXJzL2h2L0tjb25maWctMTgtXHRib29sIFwmIzM0O0VuYWJsZSBMaW51eCB0byBib290IGluIFZUTCBjb250ZXh0XCYjMzQ7XG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTQyLVxuZHJpdmVycy9odi9LY29uZmlnOjQzOmNvbmZpZyBIWVBFUlZfVElNRVJcbmRyaXZlcnMvaHYvS2NvbmZpZy00NC1cdGRlZl9ib29sIEhZUEVSViBcdTAwMjZcdTAwMjYgWDg2XG5kcml2ZXJzL2h2L0tjb25maWctNDUtXG5kcml2ZXJzL2h2L0tjb25maWc6NDY6Y29uZmlnIEhZUEVSVl9VVElMU1xuZHJpdmVycy9odi9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgVXRpbGl0aWVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01Mi1cbmRyaXZlcnMvaHYvS2NvbmZpZzo1Mzpjb25maWcgSFlQRVJWX0JBTExPT05cbmRyaXZlcnMvaHYvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIEJhbGxvb24gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTU5LVxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcbmRyaXZlcnMvaHYvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIyNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIEh5cGVyLVYgVk1CdXMgRGVwZW5kZW5jaWVzKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBIWVBFUlZfVk1CVVNgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGRyaXZlcnMgaW4gdGhlIEh5cGVyLVYgc2VjdGlvbi4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBpcyBgZHJpdmVycy9odi9LY29uZmlnYC4gSSYjMzk7bGwgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBvciBvcHRpb25zIGFyZSBsaW5rZWQgdG8gYEhZUEVSVl9WTUJVU2AuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIG90aGVyIEh5cGVyLVYgZmVhdHVyZXMgdGhhdCByZWx5IG9uIHRoZSBWTUJ1cywgb3IgbWF5YmUgZXZlbiBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzIHJlbGF0ZWQgdG8gaG93IHRoZSBWTUJ1cyBpcyB1c2VkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSHlwZXItViBkcml2ZXIgZnJhbWV3b3JrLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGFuZCB3aGV0aGVyIEkgY2FuIGNoYW5nZSBhbnkgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTk6XHRcbiAgNjA6XHRjb25maWcgSFlQRVJWX1ZNQlVTXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gSFlQRVJWXG4gIDYzOlx0XHRkZWZhdWx0IEhZUEVSVlxuICA2NDpcdFx0c2VsZWN0IFNZU0ZCIGlmIEVGSSBcdTAwMjZcdTAwMjYgIUhZUEVSVl9WVExfTU9ERVxuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZW5hYmxlIEh5cGVyLVYgVm1idXMgZHJpdmVyLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBNU0hWX1JPT1RcbiAgNjk6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHJvb3QgcGFydGl0aW9uIHN1cHBvcnRcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gSFlQRVJWIFx1MDAyNlx1MDAyNiAoWDg2XzY0IHx8IEFSTTY0KVxuICA3MTpcdFx0ZGVwZW5kcyBvbiAhSFlQRVJWX1ZUTF9NT0RFXG4gIDcyOlx0XHQjIFRoZSBoeXBlcnZpc29yIGludGVyZmFjZSBvcGVyYXRlcyBvbiA0ayBwYWdlcy4gRW5mb3JjaW5nIGl0IGhlcmVcbiAgNzM6XHRcdCMgc2ltcGxpZmllcyBtYW55IGFzc3VtcHRpb25zIGluIHRoZSByb290IHBhcnRpdGlvbiBjb2RlLlxuICA3NDpcdFx0IyBlLmcuIFdoZW4gd2l0aGRyYXdpbmcgbWVtb3J5LCB0aGUgaHlwZXJ2aXNvciBnaXZlcyBiYWNrIDRrIHBhZ2VzIGluXG4gIDc1Olx0XHQjIG5vIHBhcnRpY3VsYXIgb3JkZXIsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHJlYXNzZW1ibGUgbGFyZ2VyIHBhZ2VzXG4gIDc2Olx0XHRkZXBlbmRzIG9uIFBBR0VfU0laRV80S0JcbiAgNzc6XHRcdHNlbGVjdCBFVkVOVEZEXG4gIDc4Olx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3ODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgSHlwZXItViBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBgSFlQRVJWX1ZNQlVTYCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBgSFlQRVJWYCBjb3JlIGNvbXBvbmVudC4gTmF0dXJhbGx5LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgaW50byB0aGUgYEhZUEVSVmAgbW9kdWxlIGl0c2VsZi4gV2hhdCBkb2VzICppdCogZGVwZW5kIG9uPyBHb3R0YSBtYXAgb3V0IHRoZSBlbnRpcmUgdHJlZSB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIEh5cGVyLVYgc3RhY2sgaXMgaW50ZXJjb25uZWN0ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgSFlQRVJWXG4gICA2Olx0XHRib29sIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIGNvcmUgaHlwZXJ2aXNvciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIChYODYgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDIFx1MDAyNlx1MDAyNiBIWVBFUlZJU09SX0dVRVNUKSBcXFxuICAgODpcdFx0XHR8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgIDk6XHRcdHNlbGVjdCBQQVJBVklSVFxuICAxMDpcdFx0c2VsZWN0IFg4Nl9IVl9DQUxMQkFDS19WRUNUT1IgaWYgWDg2XG4gIDExOlx0XHRzZWxlY3QgT0ZfRUFSTFlfRkxBVFRSRUUgaWYgT0ZcbiAgMTI6XHRcdHNlbGVjdCBJUlFfTVNJX0xJQiBpZiBYODZcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHJ1biBMaW51eCBhcyBhIEh5cGVyLVYgY2xpZW50IG9wZXJhdGluZ1xuICAxNTpcdFx0ICBzeXN0ZW0uXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxuICAxODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoWDg2XzY0IFx1MDAyNlx1MDAyNiBIQVZFX1NUQVRJQ19DQUxMKSB8fCBBUk02NFxuICAyMDpcdFx0ZGVwZW5kcyBvbiBIWVBFUlZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyODUKCQkJCQkJCW91dHB1dDogMjE0CgkJCQkJCQl0aG91Z2h0czogNjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBIeXBlci1WIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciBgSFlQRVJWYDogaXQgaGluZ2VzIG9uIGVpdGhlciBhbiB4ODYgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIGxvY2FsIEFQSUMgYW5kIGEgZ3Vlc3QgaHlwZXJ2aXNvciwgb3IgQVJNNjQgKndpdGhvdXQqIGJpZy1lbmRpYW5uZXNzLiBHb3QgaXQuIFN5emthbGxlciYjMzk7cyByb2xlIGhlcmUgaXMgY3J1Y2lhbCwgYXMgaXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgVk1CdXMgZnVuY3Rpb25zIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYnVmZmVyIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIEdQQURMIGVzdGFibGlzaG1lbnQ6IGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gVGhlc2UgYXJlIGZ1bmRhbWVudGFsIGZ1bmN0aW9ucyBpbiB0aGUgVk1CdXMgbm93IGJlaW5nIHV0aWxpemVkIGJ5IGBuZXR2c2NgLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBUaGUgY29uZmlndXJhdGlvbiBmbGFncyB3ZSBuZWVkIHRvIGZvY3VzIG9uIGZvciBlbmFibGluZyB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYXJlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC4KCkkgcXVpY2tseSBldmFsdWF0ZWQgc29tZSBvdGhlciBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgcmVsZXZhbnQsIGJ1dCB0aGUgd3JhcHBlcnMgZm9yIGBuZXR2c2Nfd29ya3F1ZXVlX2luaXRgIGFuZCBgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95YCwgYW5kIHRoZSB0ZWFyZG93biBmdW5jdGlvbnMgbGlrZSBgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdWAsIGBfX2ZyZWVfbmV0dnNjX2RldmljZWAsIGFuZCBgZnJlZV9uZXR2c2NfZGV2aWNlYCwgYXBwZWFyIGxlc3MgY3JpdGljYWwgZm9yIGZ1enppbmcgcHVycG9zZXMuIFRoZXkgbWlnaHQgYmUgcmVhY2hhYmxlLCBidXQgdGhleSBhcmVuJiMzOTt0IHRoZSBoZWFydCBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGhlYXZpbHkgY29uY2VudHJhdGVkIGluIHRoZSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgbWFuYWdlbWVudCBhcmVhcy4KCkxldCBtZSB2ZXJpZnkgdGhhdCBgdm1idXNfYWxsb2NfYnVmZmVyYCBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFFFTVUvc3l6a2FsbGVyIHNldHVwLiBZZXMsIHN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBzbyB0aGF0IHNob3VsZCB3b3JrLiBXYWl0LCBgdm1idXNfYWxsb2NfYnVmZmVyYCByZXNpZGVzIGluIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AsIG1ha2luZyBpdCBhIGdlbmVyaWMgVk1CdXMgZnVuY3Rpb24uIEdvb2QsIGFuZCBpdCYjMzk7cyBpbnZva2VkIGJ5IGBuZXR2c2NfaW5pdF9idWZgLiBEZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiBgSFlQRVJWX05FVGAgaXMgY29uZmlndXJlZCBhbmQgcHJvYmVkLiAqV29ydGhGdXp6aW5nPXRydWUqLgoKSGVyZSYjMzk7cyB0aGUgZGlzdGlsbGVkIHN1bW1hcnk6CgoqKkZvY3VzIFN5bWJvbHM6KioKCiogICBgdm1idXNfYWxsb2NfYnVmZmVyYAoqICAgYHZtYnVzX2ZyZWVfYnVmZmVyYAoqICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYAoKKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KioKCiogICBgSFlQRVJWYAoqICAgYEhZUEVSVl9WTUJVU2AKKiAgIGBIWVBFUlZfTkVUYAoKKipSZWFzb25pbmc6KioKClRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgSHlwZXItViBuZXR3b3JraW5nIGhhbmRsZXMgYnVmZmVyIGFsbG9jYXRpb24sIG1lbW9yeSBkZWNyeXB0aW9uLCBhbmQgR1BBREwgZXN0YWJsaXNobWVudCB0aHJvdWdoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9ucyBgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYW5kIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAgYW5kIHN1YnNlcXVlbnQgdXNlIGJ5IHRoZSBgbmV0dnNjYCBuZXR3b3JrIGRyaXZlci4gVGhlc2UgVk1CdXMtcmVsYXRlZCBmdW5jdGlvbnMgYXJlICprZXkqIGFzIHRoZXkmIzM5O3JlIG5vdyBpbnZvbHZlZCBpbiBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMuIEdpdmVuIHRoYXQgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSB0aGUgb25lcyBzdXBwb3J0ZWQgYnkgU3l6a2FsbGVyLCBpdCBtYWtlcyB0aGVzZSB0YXJnZXRzIGhpZ2hseSBzdWl0YWJsZSBmb3IgZnV6emluZyBlZmZvcnRzLCBhbmQgc2hvdWxkIGJlIHRoZSBpbW1lZGlhdGUgZm9jdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIWVBFUlYmIzM0OywKICAgICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssCiAgICAmIzM0O0hZUEVSVl9ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bWJ1c19hbGxvY19idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZnJlZV9idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgVk1CdXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgZnVuY3Rpb25zIChgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCkgYW5kIHVwZGF0ZXMgdGhlIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgKGBuZXR2c2NgKSB0byB1c2UgdGhlbS4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIEh5cGVyLVYgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIChlLmcuLCB2aWEgc3l6a2FsbGVyKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgbmV3IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBHUEFETCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19mcmVlX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIwOjQ0LjA0OTM3MzcxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjk3NzM1OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZfTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1idXNfYWxsb2NfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICAgIFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NDQuMDQ5Mzg4Nzk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTgzMDU1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MjA6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9odi9jaGFubmVsLmMgYi9kcml2ZXJzL2h2L2NoYW5uZWwuY1xcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9odi9jaGFubmVsLmNcXG4rKysgYi9kcml2ZXJzL2h2L2NoYW5uZWwuY1xcbkBAIC0xMywxMSArMTMsMTMgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9sb2cyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2h5cGVydi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdWlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tc2h5cGVydi5oXFx1MDAzZVxcbkBAIC00MCw2ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGh2X2dwYWRsX3NpemUoZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHUzMiBzaXplKVxcbiB7XFxuIFxcdHN3aXRjaCAodHlwZSkge1xcbiBcXHRjYXNlIEhWX0dQQURMX0JVRkZFUjpcXG4rXFx0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxcbiBcXHRcXHRyZXR1cm4gc2l6ZTtcXG4gXFx0Y2FzZSBIVl9HUEFETF9SSU5HOlxcbiBcXHRcXHQvKiBUaGUgc2l6ZSBvZiBhIHJpbmdidWZmZXIgbXVzdCBiZSBwYWdlLWFsaWduZWQgKi9cXG5AQCAtMTAwLDYgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGh2X2dwYWRsX2h2cGZuKGVudW0gaHZfZ3BhZGxfdHlwZSB0eXBlLCB2b2lkICprYnVmZmVyLFxcbiBcXG4gXFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdGNhc2UgSFZfR1BBRExfQlVGRkVSOlxcbitcXHRjYXNlIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQ6XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEhWX0dQQURMX1JJTkc6XFxuIFxcdFxcdGlmIChpID09IDApXFxuQEAgLTQ2MCw3ICs0NjQsOCBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbiBcXHR9XFxuIFxcbiBcXHRncGFkbC1cXHUwMDNlZGVjcnlwdGVkID0gISgoY2hhbm5lbC1cXHUwMDNlY29fZXh0ZXJuYWxfbWVtb3J5IFxcdTAwMjZcXHUwMDI2IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fFxcbi1cXHRcXHQoY2hhbm5lbC1cXHUwMDNlY29fcmluZ19idWZmZXIgXFx1MDAyNlxcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9SSU5HKSk7XFxuK1xcdFxcdChjaGFubmVsLVxcdTAwM2Vjb19yaW5nX2J1ZmZlciBcXHUwMDI2XFx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XFxuK1xcdFxcdCh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTtcXG4gXFx0aWYgKGdwYWRsLVxcdTAwM2VkZWNyeXB0ZWQpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIFxcXCJkZWNyeXB0ZWRcXFwiIGZsYWcgYmVpbmcgdHJ1ZSBhc3N1bWVzIHRoYXQgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBzdWNjZWVkcy5cXG5AQCAtNTc1LDcgKzU4MCw3IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuICAqIEBjaGFubmVsOiBhIGNoYW5uZWxcXG4gICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jXFxuICAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcXG4tICogQGdwYWRsX2hhbmRsZTogc29tZSBmdW5reSB0aGluZ1xcbisgKiBAZ3BhZGw6IG91dHB1dCBncGFkbFxcbiAgKi9cXG4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcXG4gXFx0XFx0XFx0ICB1MzIgc2l6ZSwgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcXG5AQCAtNTg1LDYgKzU5MCwxNzkgQEAgaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19lc3RhYmxpc2hfZ3BhZGwpO1xcbiBcXG4rLypcXG4rICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXJcXG4rICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyLlxcbisgKlxcbisgKiBAY2hhbm5lbDogYSBjaGFubmVsXFxuKyAqIEBrYnVmZmVyOiBmcm9tIGttYWxsb2Mgb3Igdm1hbGxvYzsgbXVzdCBhbHJlYWR5IGJlIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyXFxuKyAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcXG4rICogQGdwYWRsOiBvdXRwdXQgZ3BhZGxcXG4rICpcXG4rICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmUtZW5jcnlwdGluZyB0aGUgYnVmZmVyIGJlZm9yZSBmcmVlaW5nIGl0LlxcbisgKi9cXG4raW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbitcXHRcXHRcXHRcXHRcXHQgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcXG4re1xcbitcXHRyZXR1cm4gX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoY2hhbm5lbCwgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIGtidWZmZXIsIHNpemUsIDBVLCBncGFkbCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbitcXG4rLyoqXFxuKyAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXFxuKyAqXFxuKyAqIEBhZGRyOiBidWZmZXIgYWRkcmVzcywgb3IgTlVMTCBpZiBub25lIHdhcyBhbGxvY2F0ZWQgKGUuZy4gY2xlYW51cCBmcm9tIGFcXG4rICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxcbisgKiBAY2h1bmtzOiBjaHVua3MgYXJyYXkgZnJvbSB2bWJ1c19hbGxvY19idWZmZXIoKSwgb3IgTlVMTFxcbisgKiBAY2h1bmtfY250OiBudW1iZXIgb2YgZW50cmllcyBpbiBAY2h1bmtzXFxuKyAqXFxuKyAqIFdoZW4gQGNodW5rcyBpcyBOVUxMIHRoZSBidWZmZXIgaXMgYSBwbGFpbiB2emFsbG9jKCkgYWxsb2NhdGlvbi5cXG4rICpcXG4rICogT3RoZXJ3aXNlIHRlYXIgZG93biB0aGUgdm1hcCwgYW5kIGZvciBlYWNoIGNodW5rIHJlLWVuY3J5cHQgYW5kIGZyZWVcXG4rICogdGhlIHVuZGVybHlpbmcgcGFnZXMuIEFueSBjaHVuayB0aGF0IGNhbm5vdCBiZSByZS1lbmNyeXB0ZWQgaXMgbGVha2VkLlxcbisgKi9cXG4rdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudClcXG4re1xcbitcXHR1MzIgaTtcXG4rXFxuK1xcdGlmICghY2h1bmtzKSB7XFxuK1xcdFxcdHZmcmVlKGFkZHIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHZ1bm1hcChhZGRyKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjaHVua19jbnQ7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBsb25nIHZhZGRyID1cXG4rXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKGNodW5rc1tpXSk7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBvcmRlciA9IGZvbGlvX29yZGVyKHBhZ2VfZm9saW8oY2h1bmtzW2ldKSk7XFxuK1xcbitcXHRcXHRpZiAoc2V0X21lbW9yeV9lbmNyeXB0ZWQodmFkZHIsIDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdF9fZnJlZV9wYWdlcyhjaHVua3NbaV0sIG9yZGVyKTtcXG4rXFx0fVxcbitcXG4rXFx0a3ZmcmVlKGNodW5rcyk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZnJlZV9idWZmZXIpO1xcbitcXG4rLyoqXFxuKyAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXFxuKyAqXFxuKyAqIEBjaGFubmVsOiB0aGUgY2hhbm5lbCB0aGUgYnVmZmVyIHdpbGwgYmUgYXR0YWNoZWQgdG9cXG4rICogQHNpemU6IHJlcXVlc3RlZCBidWZmZXIgc2l6ZSBpbiBieXRlcyAod2lsbCBiZSByb3VuZGVkIHVwIHRvIFBBR0VfU0laRSlcXG4rICogQGNodW5rc19vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgYXJyYXkgb2YgdW5kZXJseWluZyBjaHVua3MsIG9yIE5VTEwgd2hlblxcbisgKiAgICAgICAgICAgICAgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpXFxuKyAqIEBjaHVua19jbnRfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIG51bWJlciBvZiBjaHVua3NcXG4rICpcXG4rICogQnVmZmVycyBub3QgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKS5cXG4rICpcXG4rICogQnVmZmVycyByZXF1aXJpbmcgZGVjcnlwdGlvbiBhcmUgYWxsb2NhdGVkIGFzIGEgc2VyaWVzIG9mXFxuKyAqIHBoeXNpY2FsbHktY29udGlndW91cyBjaHVua3MsIHN0YXJ0aW5nIGF0IE1BWF9QQUdFX09SREVSIGFuZCBmYWxsaW5nIGJhY2sgdG9cXG4rICogc21hbGxlciBvcmRlcnMgb24gYWxsb2NhdGlvbiBmYWlsdXJlLiBFYWNoIGNodW5rIGlzIHRyYW5zaXRpb25lZCB0b1xcbisgKiBob3N0LXZpc2libGUgdmlhIHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgb24gaXRzIGRpcmVjdC1tYXAgYWRkcmVzcywgdGhlbiBhbGxcXG4rICogY2h1bmtzIGFyZSBjb21iaW5lZCBpbnRvIGEgdmlydHVhbGx5LWNvbnRpZ3VvdXMgcmFuZ2UgdmlhIHZtYXAoKS5cXG4rICpcXG4rICogUmV0dXJuOiB0aGUgYnVmZmVyJ3MgdmlydHVhbCBhZGRyZXNzLCBvciBOVUxMIG9uIGZhaWx1cmUuXFxuKyAqL1xcbit2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuK1xcdFxcdFxcdCB1MzIgc2l6ZSxcXG4rXFx0XFx0XFx0IHN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsXFxuK1xcdFxcdFxcdCB1MzIgKmNodW5rX2NudF9vdXQpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IFBGTl9VUChzaXplKTtcXG4rXFx0dW5zaWduZWQgbG9uZyByZW1haW5pbmcgPSBucl9wYWdlcztcXG4rXFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeCA9IDA7XFxuK1xcdHN0cnVjdCBwYWdlICoqY2h1bmtzID0gTlVMTDtcXG4rXFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XFxuK1xcdGludCBvcmRlciA9IE1BWF9QQUdFX09SREVSO1xcbitcXHR1MzIgY2h1bmtfY250ID0gMDtcXG4rXFx0dm9pZCAqYWRkcjtcXG4rXFx0dTMyIGk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHQqY2h1bmtzX291dCA9IE5VTEw7XFxuK1xcdCpjaHVua19jbnRfb3V0ID0gMDtcXG4rXFxuK1xcdGlmICghbnJfcGFnZXMpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0LyogSWYgdGhlIGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlY3J5cHRlZCwganVzdCB1c2UgdnphbGxvYygpICovXFxuK1xcdGlmICghaHZfaXNfaXNvbGF0aW9uX3N1cHBvcnRlZCgpIHx8IGNoYW5uZWwtXFx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSlcXG4rXFx0XFx0cmV0dXJuIHZ6YWxsb2MobnJfcGFnZXMgXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCk7XFxuK1xcbitcXHQvKiBXb3JzdCBjYXNlOiBldmVyeSBjaHVuayBpcyBhIHNpbmdsZSBwYWdlLiAqL1xcbitcXHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxcbitcXHRcXHRcXHRcXHRHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7XFxuK1xcdGlmICghY2h1bmtzKVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFxuK1xcdHBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkobnJfcGFnZXMsIHNpemVvZigqcGFnZXMpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwYWdlcylcXG4rXFx0XFx0Z290byBlcnI7XFxuK1xcbitcXHR3aGlsZSAocmVtYWluaW5nKSB7XFxuK1xcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRnZnBfdCBnZnA7XFxuK1xcbitcXHRcXHRvcmRlciA9IG1pbihvcmRlciwgaWxvZzIocmVtYWluaW5nKSk7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBVc2UgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTiB0byBhdm9pZCBPT00ta2lsbGluZyxcXG4rXFx0XFx0ICogYnV0IHRyeSBoYXJkZXIgYXQgb3JkZXIgMCBzaW5jZSB0aGF0IGlzIHRoZSBmaW5hbFxcbitcXHRcXHQgKiBmYWxsYmFjay5cXG4rXFx0XFx0ICogX19HRlBfQ09NUCBzdG9yZXMgb3JkZXIgaW5mb3JtYXRpb24gaW4gdGhlIHBhZ2UgZm9saW8uXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRnZnAgPSBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTztcXG4rXFx0XFx0aWYgKG9yZGVyKVxcbitcXHRcXHRcXHRnZnAgfD0gX19HRlBfQ09NUCB8IF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk47XFxuK1xcbitcXHRcXHRwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShjcHVfdG9fbm9kZShjaGFubmVsLVxcdTAwM2V0YXJnZXRfY3B1KSxcXG4rXFx0XFx0XFx0XFx0XFx0Z2ZwLCBvcmRlcik7XFxuK1xcdFxcdGlmICghcGFnZSkge1xcbitcXHRcXHRcXHRpZiAoIW9yZGVyLS0pXFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gc2V0X21lbW9yeV9kZWNyeXB0ZWQoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAxVSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBmYWlsZWQ7IHRoZSBwYWdlIHN0YXRlIGlzXFxuK1xcdFxcdFxcdCAqIHVua25vd24gc28gaXQgbXVzdCBiZSBsZWFrZWQgcmF0aGVyIHRoYW4gZnJlZWQuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRnb3RvIGVycjtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Y2h1bmtzW2NodW5rX2NudCsrXSA9IHBhZ2U7XFxuK1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKVxcbitcXHRcXHRcXHRwYWdlc1twYWdlX2lkeCsrXSA9IHBhZ2UgKyBpO1xcbitcXG4rXFx0XFx0cmVtYWluaW5nIC09IDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyO1xcbitcXHR9XFxuK1xcbitcXHRhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpO1xcbitcXHRpZiAoIWFkZHIpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4rXFx0bWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbitcXG4rXFx0a3ZmcmVlKHBhZ2VzKTtcXG4rXFx0KmNodW5rc19vdXQgPSBjaHVua3M7XFxuK1xcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xcbitcXHRyZXR1cm4gYWRkcjtcXG4rXFxuK2VycjpcXG4rXFx0a3ZmcmVlKHBhZ2VzKTtcXG4rXFx0dm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xcbitcXG4gLyoqXFxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcXG4gICoga2VlcHMgdHJhY2sgb2YgdGhlIG5leHQgYXZhaWxhYmxlIHNsb3QgaW4gdGhlIGFycmF5LiBJbml0aWFsbHksIGVhY2hcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaCBiL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmhcXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXFxuQEAgLTIyMCw2ICsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xcbiBcXG4gZXh0ZXJuIHUzMiBuZXR2c2NfcmluZ19ieXRlcztcXG4gXFxuK2ludCBuZXR2c2Nfd29ya3F1ZXVlX2luaXQodm9pZCk7XFxuK3ZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpO1xcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcXG4gaW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KTtcXG5AQCAtMTE1OCw2ICsxMTYwLDggQEAgc3RydWN0IG5ldHZzY19kZXZpY2Uge1xcbiBcXHQvKiBSZWNlaXZlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgYnV0IG1hbmFnZXMgYnkgTmV0VlNQICovXFxuIFxcdHZvaWQgKnJlY3ZfYnVmO1xcbiBcXHR1MzIgcmVjdl9idWZfc2l6ZTsgLyogYWxsb2NhdGVkIGJ5dGVzICovXFxuK1xcdHN0cnVjdCBwYWdlICoqcmVjdl9idWZfY2h1bmtzO1xcbitcXHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xcbiBcXHRzdHJ1Y3Qgdm1idXNfZ3BhZGwgcmVjdl9idWZfZ3BhZGxfaGFuZGxlO1xcbiBcXHR1MzIgcmVjdl9zZWN0aW9uX2NudDtcXG4gXFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xcbkBAIC0xMTY2LDYgKzExNzAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XFxuIFxcdC8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqL1xcbiBcXHR2b2lkICpzZW5kX2J1ZjtcXG4gXFx0dTMyIHNlbmRfYnVmX3NpemU7XFxuK1xcdHN0cnVjdCBwYWdlICoqc2VuZF9idWZfY2h1bmtzO1xcbitcXHR1MzIgc2VuZF9idWZfY2h1bmtfY250O1xcbiBcXHRzdHJ1Y3Qgdm1idXNfZ3BhZGwgc2VuZF9idWZfZ3BhZGxfaGFuZGxlO1xcbiBcXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcXG4gXFx0dTMyIHNlbmRfc2VjdGlvbl9zaXplO1xcbkBAIC0xMTkzLDcgKzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTtcXG4gXFxuLVxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHN0cnVjdCByY3Vfd29yayByd29yaztcXG4gfTtcXG4gXFxuIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXFxuaW5kZXggNTllOTUzNDFmOWIxZS4uYzU5ZjJhNDRiYWRmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcXG5AQCAtMjgsNiArMjgsOCBAQFxcbiAjaW5jbHVkZSBcXFwiaHlwZXJ2X25ldC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibmV0dnNjX3RyYWNlLmhcXFwiXFxuIFxcbitzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTtcXG4rXFxuIC8qXFxuICAqIFN3aXRjaCB0aGUgZGF0YSBwYXRoIGZyb20gdGhlIHN5bnRoZXRpYyBpbnRlcmZhY2UgdG8gdGhlIFZGXFxuICAqIGludGVyZmFjZS5cXG5AQCAtMTI1LDYgKzEyNyw0NyBAQCBzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4gXFx0cnRubF91bmxvY2soKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgX19mcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxcbit7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0a2ZyZWUobnZkZXYtXFx1MDAzZWV4dGVuc2lvbik7XFxuK1xcbitcXHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cXHUwMDNlcmVjdl9idWYsIG52ZGV2LVxcdTAwM2VyZWN2X2J1Zl9jaHVua3MsXFxuK1xcdFxcdFxcdCAgbnZkZXYtXFx1MDAzZXJlY3ZfYnVmX2NodW5rX2NudCk7XFxuK1xcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVxcdTAwM2VzZW5kX2J1ZiwgbnZkZXYtXFx1MDAzZXNlbmRfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0ICBudmRldi1cXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcXG4rXFx0Yml0bWFwX2ZyZWUobnZkZXYtXFx1MDAzZXNlbmRfc2VjdGlvbl9tYXApO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbitcXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNm52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLnhkcF9yeHEpO1xcbitcXHRcXHRrZnJlZShudmRldi1cXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XFxuK1xcdFxcdHZmcmVlKG52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XFxuK1xcdH1cXG4rXFxuK1xcdGtmcmVlKG52ZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4re1xcbitcXHRzdHJ1Y3QgcmN1X3dvcmsgKnJ3b3JrID0gdG9fcmN1X3dvcmsodyk7XFxuK1xcbitcXHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xcbit9XFxuK1xcbitpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXFxuK3tcXG4rXFx0bmV0dnNjX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCJodl9uZXR2c2NcXFwiLCBXUV9VTkJPVU5ELCAwKTtcXG4rXFxuK1xcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcXG4rfVxcbitcXG4rdm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG4re1xcbitcXHRyY3VfYmFycmllcigpO1xcbitcXHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZTtcXG5AQCAtMTQzLDM2ICsxODYsMTggQEAgc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbm5lbF9pbml0X3dhaXQpO1xcbiBcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX29wZW4pO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXN1YmNoYW5fd29yaywgbmV0dnNjX3N1YmNoYW5fd29yayk7XFxuK1xcdElOSVRfUkNVX1dPUksoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJ3b3JrLCBmcmVlX25ldHZzY19kZXZpY2UpO1xcbiBcXG4gXFx0cmV0dXJuIG5ldF9kZXZpY2U7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLXtcXG4tXFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2XFxuLVxcdFxcdD0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByY3UpO1xcbi1cXHRpbnQgaTtcXG4tXFxuLVxcdGtmcmVlKG52ZGV2LVxcdTAwM2VleHRlbnNpb24pO1xcbi1cXG4tXFx0aWYgKCFudmRldi1cXHUwMDNlcmVjdl9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcXG4tXFx0XFx0dmZyZWUobnZkZXYtXFx1MDAzZXJlY3ZfYnVmKTtcXG4tXFx0aWYgKCFudmRldi1cXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcXG4tXFx0XFx0dmZyZWUobnZkZXYtXFx1MDAzZXNlbmRfYnVmKTtcXG4tXFx0Yml0bWFwX2ZyZWUobnZkZXYtXFx1MDAzZXNlbmRfc2VjdGlvbl9tYXApO1xcbi1cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbi1cXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNm52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLnhkcF9yeHEpO1xcbi1cXHRcXHRrZnJlZShudmRldi1cXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XFxuLVxcdFxcdHZmcmVlKG52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XFxuLVxcdH1cXG4tXFxuLVxcdGtmcmVlKG52ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXFxuIHtcXG4tXFx0Y2FsbF9yY3UoXFx1MDAyNm52ZGV2LVxcdTAwM2VyY3UsIGZyZWVfbmV0dnNjX2RldmljZSk7XFxuK1xcdC8qXFxuK1xcdCAqIERlZmVyIHRoZSBhY3R1YWwgZnJlZSB0byBwcm9jZXNzIGNvbnRleHQ6IHZ1bm1hcCgpIGFuZFxcbitcXHQgKiBzZXRfbWVtb3J5X2VuY3J5cHRlZCgpIGNhbm5vdCBydW4gZnJvbSBSQ1Ugc29mdGlycSBjb250ZXh0LlxcbitcXHQgKi9cXG4rXFx0cXVldWVfcmN1X3dvcmsobmV0dnNjX3dxLCBcXHUwMDI2bnZkZXYtXFx1MDAzZXJ3b3JrKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuQEAgLTM1MSw3ICszNzYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRidWZfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgYnVmX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBORVRWU0NfUkVDRUlWRV9CVUZGRVJfU0laRV9MRUdBQ1kpO1xcbiBcXG4tXFx0bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcXG4rXFx0bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYgPVxcbitcXHRcXHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2NodW5rX2NudCk7XFxuIFxcdGlmICghbmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIHJlY2VpdmUgYnVmZmVyIG9mIHNpemUgJXVcXFxcblxcXCIsXFxuQEAgLTM2Nyw5ICszOTUsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXFxuIFxcdCAqIHRoYW4gdGhlIGNoYW5uZWwgdG8gZXN0YWJsaXNoIHRoZSBncGFkbCBoYW5kbGUuXFxuIFxcdCAqL1xcbi1cXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2J1ZixcXG4tXFx0XFx0XFx0XFx0ICAgIGJ1Zl9zaXplLFxcbi1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7XFxuK1xcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cXHUwMDNlY2hhbm5lbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2J1ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWZfZ3BhZGxfaGFuZGxlKTtcXG4gXFx0aWYgKHJldCAhPSAwKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIobmRldixcXG4gXFx0XFx0XFx0XFxcInVuYWJsZSB0byBlc3RhYmxpc2ggcmVjZWl2ZSBidWZmZXIncyBncGFkbFxcXFxuXFxcIik7XFxuQEAgLTQ1Nyw3ICs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRidWZfc2l6ZSA9IGRldmljZV9pbmZvLVxcdTAwM2VzZW5kX3NlY3Rpb25zICogZGV2aWNlX2luZm8tXFx1MDAzZXNlbmRfc2VjdGlvbl9zaXplO1xcbiBcXHRidWZfc2l6ZSA9IHJvdW5kX3VwKGJ1Zl9zaXplLCBQQUdFX1NJWkUpO1xcbiBcXG4tXFx0bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcXG4rXFx0bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYgPVxcbitcXHRcXHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmX2NodW5rX2NudCk7XFxuIFxcdGlmICghbmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIHNlbmQgYnVmZmVyIG9mIHNpemUgJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIGJ1Zl9zaXplKTtcXG5AQCAtNDcwLDkgKzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuIFxcdCAqIGNoYW5uZWwuICBOb3RlOiBUaGlzIGNhbGwgdXNlcyB0aGUgdm1idXMgY29ubmVjdGlvbiByYXRoZXJcXG4gXFx0ICogdGhhbiB0aGUgY2hhbm5lbCB0byBlc3RhYmxpc2ggdGhlIGdwYWRsIGhhbmRsZS5cXG4gXFx0ICovXFxuLVxcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbChkZXZpY2UtXFx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmLFxcbi1cXHRcXHRcXHRcXHQgICAgYnVmX3NpemUsXFxuLVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlKTtcXG4rXFx0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVxcdTAwM2VjaGFubmVsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGJ1Zl9zaXplLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xcbiBcXHRpZiAocmV0ICE9IDApIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwidW5hYmxlIHRvIGVzdGFibGlzaCBzZW5kIGJ1ZmZlcidzIGdwYWRsXFxcXG5cXFwiKTtcXG5AQCAtMTg2Myw3ICsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbiBcXG4gY2xlYW51cDI6XFxuLVxcdGZyZWVfbmV0dnNjX2RldmljZShcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcmN1KTtcXG4rXFx0LypcXG4rXFx0ICogbmV0X2RldmljZSB3YXMgbmV2ZXIgcHVibGlzaGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9yIGFuXFxuK1xcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXFxuK1xcdCAqL1xcbitcXHRfX2ZyZWVfbmV0dnNjX2RldmljZShuZXRfZGV2aWNlKTtcXG4gXFxuIFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcXG5pbmRleCBlZTVhYjVjZWIyYmUyLi4xZDQzYzczZmQ3M2YxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXFxuQEAgLTI4NjcsMTIgKzI4NjcsMTcgQEAgc3RhdGljIHZvaWQgX19leGl0IG5ldHZzY19kcnZfZXhpdCh2b2lkKVxcbiB7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZuZXR2c2NfbmV0ZGV2X25vdGlmaWVyKTtcXG4gXFx0dm1idXNfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNm5ldHZzY19kcnYpO1xcbitcXHRuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdHJldCA9IG5ldHZzY193b3JrcXVldWVfaW5pdCgpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0aWYgKHJpbmdfc2l6ZSBcXHUwMDNjIFJJTkdfU0laRV9NSU4pIHtcXG4gXFx0XFx0cmluZ19zaXplID0gUklOR19TSVpFX01JTjtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiSW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxcXG5cXFwiLFxcbkBAIC0yODkwLDYgKzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcXG4gXFxuIGVycl92bWJ1c19yZWc6XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZuZXR2c2NfbmV0ZGV2X25vdGlmaWVyKTtcXG4rXFx0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmggYi9pbmNsdWRlL2xpbnV4L2h5cGVydi5oXFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxcbkBAIC03MCw3ICs3MCw4IEBAXFxuICAqL1xcbiBlbnVtIGh2X2dwYWRsX3R5cGUge1xcbiBcXHRIVl9HUEFETF9CVUZGRVIsXFxuLVxcdEhWX0dQQURMX1JJTkdcXG4rXFx0SFZfR1BBRExfUklORyxcXG4rXFx0SFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRFxcbiB9O1xcbiBcXG4gLyogU2luZ2xlLXBhZ2UgYnVmZmVyICovXFxuQEAgLTEyMDUsOSArMTIwNiwyMSBAQCBleHRlcm4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgdTMyIHNpemUsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xcbiBcXG4rZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICprYnVmZmVyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHUzMiBzaXplLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xcbitcXG4gZXh0ZXJuIGludCB2bWJ1c190ZWFyZG93bl9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcXG4gXFxuK2V4dGVybiB2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuK1xcdFxcdFxcdFxcdHUzMiBzaXplLFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxcbitcXHRcXHRcXHRcXHR1MzIgKmNodW5rX2NudF9vdXQpO1xcbitcXG4rZXh0ZXJuIHZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpO1xcbitcXG4gdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTtcXG4gXFxuIGV4dGVybiBpbnQgdm1idXNfcmVjdnBhY2tldChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NDQuNTY4NTU2OTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA3Nzg1NDE5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVl9ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWJ1c19hbGxvY19idWZmZXJcIixcbiAgICBcInZtYnVzX2ZyZWVfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IFZNQnVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBHUEFETCBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyAoYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGApIGFuZCB1cGRhdGVzIHRoZSBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIChgbmV0dnNjYCkgdG8gdXNlIHRoZW0uIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgbWVtb3J5IGRlY3J5cHRpb24gYW5kIG1hcHBpbmcgZm9yIFZNQnVzIGNoYW5uZWxzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBIeXBlci1WIFZNQnVzIGlzIGVtdWxhdGVkIG9yIG1vY2tlZCAoZS5nLiwgdmlhIHN5emthbGxlcikuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIG5ldyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgR1BBREwgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyMDo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h2L2NoYW5uZWwuY1xuKysrIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbkBAIC0xMywxMSArMTMsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbG9nMi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9oeXBlcnYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXRfbWVtb3J5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXNoeXBlcnYuaFx1MDAzZVxuQEAgLTQwLDYgKzQyLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaHZfZ3BhZGxfc2l6ZShlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdTMyIHNpemUpXG4ge1xuIFx0c3dpdGNoICh0eXBlKSB7XG4gXHRjYXNlIEhWX0dQQURMX0JVRkZFUjpcbitcdGNhc2UgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRDpcbiBcdFx0cmV0dXJuIHNpemU7XG4gXHRjYXNlIEhWX0dQQURMX1JJTkc6XG4gXHRcdC8qIFRoZSBzaXplIG9mIGEgcmluZ2J1ZmZlciBtdXN0IGJlIHBhZ2UtYWxpZ25lZCAqL1xuQEAgLTEwMCw2ICsxMDMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBodl9ncGFkbF9odnBmbihlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdm9pZCAqa2J1ZmZlcixcbiBcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4rXHRjYXNlIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQ6XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIVl9HUEFETF9SSU5HOlxuIFx0XHRpZiAoaSA9PSAwKVxuQEAgLTQ2MCw3ICs0NjQsOCBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0fVxuIFxuIFx0Z3BhZGwtXHUwMDNlZGVjcnlwdGVkID0gISgoY2hhbm5lbC1cdTAwM2Vjb19leHRlcm5hbF9tZW1vcnkgXHUwMDI2XHUwMDI2IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fFxuLVx0XHQoY2hhbm5lbC1cdTAwM2Vjb19yaW5nX2J1ZmZlciBcdTAwMjZcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9SSU5HKSk7XG4rXHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XG4rXHRcdCh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTtcbiBcdGlmIChncGFkbC1cdTAwM2VkZWNyeXB0ZWQpIHtcbiBcdFx0LypcbiBcdFx0ICogVGhlIFwiZGVjcnlwdGVkXCIgZmxhZyBiZWluZyB0cnVlIGFzc3VtZXMgdGhhdCBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIHN1Y2NlZWRzLlxuQEAgLTU3NSw3ICs1ODAsNyBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuICAqIEBjaGFubmVsOiBhIGNoYW5uZWxcbiAgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2NcbiAgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlXG4tICogQGdwYWRsX2hhbmRsZTogc29tZSBmdW5reSB0aGluZ1xuKyAqIEBncGFkbDogb3V0cHV0IGdwYWRsXG4gICovXG4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcbiBcdFx0XHQgIHUzMiBzaXplLCBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKVxuQEAgLTU4NSw2ICs1OTAsMTc5IEBAIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsIHZvaWQgKmtidWZmZXIsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XG4gXG4rLypcbisgKiB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCAtIEVzdGFibGlzaCBhIEdQQURMIGZvciBhIGJ1ZmZlclxuKyAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbisgKlxuKyAqIEBjaGFubmVsOiBhIGNoYW5uZWxcbisgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2M7IG11c3QgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlclxuKyAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcbisgKiBAZ3BhZGw6IG91dHB1dCBncGFkbFxuKyAqXG4rICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmUtZW5jcnlwdGluZyB0aGUgYnVmZmVyIGJlZm9yZSBmcmVlaW5nIGl0LlxuKyAqL1xuK2ludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbitcdFx0XHRcdFx0ICAgdm9pZCAqa2J1ZmZlciwgdTMyIHNpemUsXG4rXHRcdFx0XHRcdCAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpXG4re1xuK1x0cmV0dXJuIF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKGNoYW5uZWwsIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQsXG4rXHRcdFx0XHQgICAgICAga2J1ZmZlciwgc2l6ZSwgMFUsIGdwYWRsKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xuK1xuKy8qKlxuKyAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXG4rICpcbisgKiBAYWRkcjogYnVmZmVyIGFkZHJlc3MsIG9yIE5VTEwgaWYgbm9uZSB3YXMgYWxsb2NhdGVkIChlLmcuIGNsZWFudXAgZnJvbSBhXG4rICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxuKyAqIEBjaHVua3M6IGNodW5rcyBhcnJheSBmcm9tIHZtYnVzX2FsbG9jX2J1ZmZlcigpLCBvciBOVUxMXG4rICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuKyAqXG4rICogV2hlbiBAY2h1bmtzIGlzIE5VTEwgdGhlIGJ1ZmZlciBpcyBhIHBsYWluIHZ6YWxsb2MoKSBhbGxvY2F0aW9uLlxuKyAqXG4rICogT3RoZXJ3aXNlIHRlYXIgZG93biB0aGUgdm1hcCwgYW5kIGZvciBlYWNoIGNodW5rIHJlLWVuY3J5cHQgYW5kIGZyZWVcbisgKiB0aGUgdW5kZXJseWluZyBwYWdlcy4gQW55IGNodW5rIHRoYXQgY2Fubm90IGJlIHJlLWVuY3J5cHRlZCBpcyBsZWFrZWQuXG4rICovXG4rdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudClcbit7XG4rXHR1MzIgaTtcbitcbitcdGlmICghY2h1bmtzKSB7XG4rXHRcdHZmcmVlKGFkZHIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHR2dW5tYXAoYWRkcik7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjaHVua19jbnQ7IGkrKykge1xuK1x0XHR1bnNpZ25lZCBsb25nIHZhZGRyID1cbitcdFx0XHQodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MoY2h1bmtzW2ldKTtcbitcdFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIocGFnZV9mb2xpbyhjaHVua3NbaV0pKTtcbitcbitcdFx0aWYgKHNldF9tZW1vcnlfZW5jcnlwdGVkKHZhZGRyLCAxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRfX2ZyZWVfcGFnZXMoY2h1bmtzW2ldLCBvcmRlcik7XG4rXHR9XG4rXG4rXHRrdmZyZWUoY2h1bmtzKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZnJlZV9idWZmZXIpO1xuK1xuKy8qKlxuKyAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXG4rICpcbisgKiBAY2hhbm5lbDogdGhlIGNoYW5uZWwgdGhlIGJ1ZmZlciB3aWxsIGJlIGF0dGFjaGVkIHRvXG4rICogQHNpemU6IHJlcXVlc3RlZCBidWZmZXIgc2l6ZSBpbiBieXRlcyAod2lsbCBiZSByb3VuZGVkIHVwIHRvIFBBR0VfU0laRSlcbisgKiBAY2h1bmtzX291dDogb24gc3VjY2Vzcywgc2V0IHRvIHRoZSBhcnJheSBvZiB1bmRlcmx5aW5nIGNodW5rcywgb3IgTlVMTCB3aGVuXG4rICogICAgICAgICAgICAgIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKVxuKyAqIEBjaHVua19jbnRfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIG51bWJlciBvZiBjaHVua3NcbisgKlxuKyAqIEJ1ZmZlcnMgbm90IHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgd2l0aCB2emFsbG9jKCkuXG4rICpcbisgKiBCdWZmZXJzIHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgYXMgYSBzZXJpZXMgb2ZcbisgKiBwaHlzaWNhbGx5LWNvbnRpZ3VvdXMgY2h1bmtzLCBzdGFydGluZyBhdCBNQVhfUEFHRV9PUkRFUiBhbmQgZmFsbGluZyBiYWNrIHRvXG4rICogc21hbGxlciBvcmRlcnMgb24gYWxsb2NhdGlvbiBmYWlsdXJlLiBFYWNoIGNodW5rIGlzIHRyYW5zaXRpb25lZCB0b1xuKyAqIGhvc3QtdmlzaWJsZSB2aWEgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBvbiBpdHMgZGlyZWN0LW1hcCBhZGRyZXNzLCB0aGVuIGFsbFxuKyAqIGNodW5rcyBhcmUgY29tYmluZWQgaW50byBhIHZpcnR1YWxseS1jb250aWd1b3VzIHJhbmdlIHZpYSB2bWFwKCkuXG4rICpcbisgKiBSZXR1cm46IHRoZSBidWZmZXIncyB2aXJ0dWFsIGFkZHJlc3MsIG9yIE5VTEwgb24gZmFpbHVyZS5cbisgKi9cbit2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4rXHRcdFx0IHUzMiBzaXplLFxuK1x0XHRcdCBzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuK1x0XHRcdCB1MzIgKmNodW5rX2NudF9vdXQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IFBGTl9VUChzaXplKTtcbitcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nID0gbnJfcGFnZXM7XG4rXHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4ID0gMDtcbitcdHN0cnVjdCBwYWdlICoqY2h1bmtzID0gTlVMTDtcbitcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMO1xuK1x0aW50IG9yZGVyID0gTUFYX1BBR0VfT1JERVI7XG4rXHR1MzIgY2h1bmtfY250ID0gMDtcbitcdHZvaWQgKmFkZHI7XG4rXHR1MzIgaTtcbitcdGludCByZXQ7XG4rXG4rXHQqY2h1bmtzX291dCA9IE5VTEw7XG4rXHQqY2h1bmtfY250X291dCA9IDA7XG4rXG4rXHRpZiAoIW5yX3BhZ2VzKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdC8qIElmIHRoZSBidWZmZXIgZG9lcyBub3QgbmVlZCB0byBiZSBkZWNyeXB0ZWQsIGp1c3QgdXNlIHZ6YWxsb2MoKSAqL1xuK1x0aWYgKCFodl9pc19pc29sYXRpb25fc3VwcG9ydGVkKCkgfHwgY2hhbm5lbC1cdTAwM2Vjb19leHRlcm5hbF9tZW1vcnkpXG4rXHRcdHJldHVybiB2emFsbG9jKG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbitcbitcdC8qIFdvcnN0IGNhc2U6IGV2ZXJ5IGNodW5rIGlzIGEgc2luZ2xlIHBhZ2UuICovXG4rXHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxuK1x0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuK1x0aWYgKCFjaHVua3MpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0cGFnZXMgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpwYWdlcyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwYWdlcylcbitcdFx0Z290byBlcnI7XG4rXG4rXHR3aGlsZSAocmVtYWluaW5nKSB7XG4rXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRnZnBfdCBnZnA7XG4rXG4rXHRcdG9yZGVyID0gbWluKG9yZGVyLCBpbG9nMihyZW1haW5pbmcpKTtcbitcbitcdFx0LypcbitcdFx0ICogVXNlIF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk4gdG8gYXZvaWQgT09NLWtpbGxpbmcsXG4rXHRcdCAqIGJ1dCB0cnkgaGFyZGVyIGF0IG9yZGVyIDAgc2luY2UgdGhhdCBpcyB0aGUgZmluYWxcbitcdFx0ICogZmFsbGJhY2suXG4rXHRcdCAqIF9fR0ZQX0NPTVAgc3RvcmVzIG9yZGVyIGluZm9ybWF0aW9uIGluIHRoZSBwYWdlIGZvbGlvLlxuK1x0XHQgKi9cbitcdFx0Z2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk87XG4rXHRcdGlmIChvcmRlcilcbitcdFx0XHRnZnAgfD0gX19HRlBfQ09NUCB8IF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk47XG4rXG4rXHRcdHBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKGNwdV90b19ub2RlKGNoYW5uZWwtXHUwMDNldGFyZ2V0X2NwdSksXG4rXHRcdFx0XHRcdGdmcCwgb3JkZXIpO1xuK1x0XHRpZiAoIXBhZ2UpIHtcbitcdFx0XHRpZiAoIW9yZGVyLS0pXG4rXHRcdFx0XHRnb3RvIGVycjtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRyZXQgPSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSksXG4rXHRcdFx0XHRcdCAgIDFVIFx1MDAzY1x1MDAzYyBvcmRlcik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgZmFpbGVkOyB0aGUgcGFnZSBzdGF0ZSBpc1xuK1x0XHRcdCAqIHVua25vd24gc28gaXQgbXVzdCBiZSBsZWFrZWQgcmF0aGVyIHRoYW4gZnJlZWQuXG4rXHRcdFx0ICovXG4rXHRcdFx0Z290byBlcnI7XG4rXHRcdH1cbitcbitcdFx0Y2h1bmtzW2NodW5rX2NudCsrXSA9IHBhZ2U7XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjICgxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpOyBpKyspXG4rXHRcdFx0cGFnZXNbcGFnZV9pZHgrK10gPSBwYWdlICsgaTtcbitcbitcdFx0cmVtYWluaW5nIC09IDFVIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdH1cbitcbitcdGFkZHIgPSB2bWFwKHBhZ2VzLCBucl9wYWdlcywgVk1fTUFQLCBwZ3Byb3RfZGVjcnlwdGVkKFBBR0VfS0VSTkVMKSk7XG4rXHRpZiAoIWFkZHIpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0bWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbitcbitcdGt2ZnJlZShwYWdlcyk7XG4rXHQqY2h1bmtzX291dCA9IGNodW5rcztcbitcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xuK1x0cmV0dXJuIGFkZHI7XG4rXG4rZXJyOlxuK1x0a3ZmcmVlKHBhZ2VzKTtcbitcdHZtYnVzX2ZyZWVfYnVmZmVyKE5VTEwsIGNodW5rcywgY2h1bmtfY250KTtcbitcdHJldHVybiBOVUxMO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xuK1xuIC8qKlxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcbiAgKiBrZWVwcyB0cmFjayBvZiB0aGUgbmV4dCBhdmFpbGFibGUgc2xvdCBpbiB0aGUgYXJyYXkuIEluaXRpYWxseSwgZWFjaFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuKysrIGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuQEAgLTIyMCw2ICsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xuIFxuIGV4dGVybiB1MzIgbmV0dnNjX3JpbmdfYnl0ZXM7XG4gXG4raW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcbit2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbiBpbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpO1xuQEAgLTExNTgsNiArMTE2MCw4IEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbiBcdC8qIFJlY2VpdmUgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyBidXQgbWFuYWdlcyBieSBOZXRWU1AgKi9cbiBcdHZvaWQgKnJlY3ZfYnVmO1xuIFx0dTMyIHJlY3ZfYnVmX3NpemU7IC8qIGFsbG9jYXRlZCBieXRlcyAqL1xuK1x0c3RydWN0IHBhZ2UgKipyZWN2X2J1Zl9jaHVua3M7XG4rXHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xuIFx0c3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTtcbiBcdHUzMiByZWN2X3NlY3Rpb25fY250O1xuIFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xuQEAgLTExNjYsNiArMTE3MCw4IEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbiBcdC8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqL1xuIFx0dm9pZCAqc2VuZF9idWY7XG4gXHR1MzIgc2VuZF9idWZfc2l6ZTtcbitcdHN0cnVjdCBwYWdlICoqc2VuZF9idWZfY2h1bmtzO1xuK1x0dTMyIHNlbmRfYnVmX2NodW5rX2NudDtcbiBcdHN0cnVjdCB2bWJ1c19ncGFkbCBzZW5kX2J1Zl9ncGFkbF9oYW5kbGU7XG4gXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcbiBcdHUzMiBzZW5kX3NlY3Rpb25fc2l6ZTtcbkBAIC0xMTkzLDcgKzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXG4gXHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTtcbiBcbi1cdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzdHJ1Y3QgcmN1X3dvcmsgcndvcms7XG4gfTtcbiBcbiAvKiBOZGlzSW5pdGlhbGl6ZSBtZXNzYWdlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXG5pbmRleCA1OWU5NTM0MWY5YjFlLi5jNTlmMmE0NGJhZGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbkBAIC0yOCw2ICsyOCw4IEBAXG4gI2luY2x1ZGUgXCJoeXBlcnZfbmV0LmhcIlxuICNpbmNsdWRlIFwibmV0dnNjX3RyYWNlLmhcIlxuIFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbmV0dnNjX3dxO1xuK1xuIC8qXG4gICogU3dpdGNoIHRoZSBkYXRhIHBhdGggZnJvbSB0aGUgc3ludGhldGljIGludGVyZmFjZSB0byB0aGUgVkZcbiAgKiBpbnRlcmZhY2UuXG5AQCAtMTI1LDYgKzEyNyw0NyBAQCBzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbiBcdHJ0bmxfdW5sb2NrKCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbit7XG4rXHRpbnQgaTtcbitcbitcdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4rXG4rXHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cdTAwM2VyZWN2X2J1ZiwgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtzLFxuK1x0XHRcdCAgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtfY250KTtcbitcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVx1MDAzZXNlbmRfYnVmLCBudmRldi1cdTAwM2VzZW5kX2J1Zl9jaHVua3MsXG4rXHRcdFx0ICBudmRldi1cdTAwM2VzZW5kX2J1Zl9jaHVua19jbnQpO1xuK1x0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpKyspIHtcbitcdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNm52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ueGRwX3J4cSk7XG4rXHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuK1x0XHR2ZnJlZShudmRldi1cdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XG4rXHR9XG4rXG4rXHRrZnJlZShudmRldik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4re1xuK1x0c3RydWN0IHJjdV93b3JrICpyd29yayA9IHRvX3JjdV93b3JrKHcpO1xuK1xuK1x0X19mcmVlX25ldHZzY19kZXZpY2UoY29udGFpbmVyX29mKHJ3b3JrLCBzdHJ1Y3QgbmV0dnNjX2RldmljZSwgcndvcmspKTtcbit9XG4rXG4raW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKVxuK3tcbitcdG5ldHZzY193cSA9IGFsbG9jX3dvcmtxdWV1ZShcImh2X25ldHZzY1wiLCBXUV9VTkJPVU5ELCAwKTtcbitcbitcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcbit9XG4rXG4rdm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcbit7XG4rXHRyY3VfYmFycmllcigpO1xuK1x0ZGVzdHJveV93b3JrcXVldWUobmV0dnNjX3dxKTtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG4ge1xuIFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2U7XG5AQCAtMTQzLDM2ICsxODYsMTggQEAgc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFubmVsX2luaXRfd2FpdCk7XG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl9vcGVuKTtcbiBcdElOSVRfV09SSyhcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXN1YmNoYW5fd29yaywgbmV0dnNjX3N1YmNoYW5fd29yayk7XG4rXHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG4gXG4gXHRyZXR1cm4gbmV0X2RldmljZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi17XG4tXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXZcbi1cdFx0PSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7XG4tXHRpbnQgaTtcbi1cbi1cdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4tXG4tXHRpZiAoIW52ZGV2LVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpXG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZXJlY3ZfYnVmKTtcbi1cdGlmICghbnZkZXYtXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcbi1cdFx0dmZyZWUobnZkZXYtXHUwMDNlc2VuZF9idWYpO1xuLVx0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpKyspIHtcbi1cdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNm52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ueGRwX3J4cSk7XG4tXHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuLVx0XHR2ZnJlZShudmRldi1cdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XG4tXHR9XG4tXG4tXHRrZnJlZShudmRldik7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuIHtcbi1cdGNhbGxfcmN1KFx1MDAyNm52ZGV2LVx1MDAzZXJjdSwgZnJlZV9uZXR2c2NfZGV2aWNlKTtcbitcdC8qXG4rXHQgKiBEZWZlciB0aGUgYWN0dWFsIGZyZWUgdG8gcHJvY2VzcyBjb250ZXh0OiB2dW5tYXAoKSBhbmRcbitcdCAqIHNldF9tZW1vcnlfZW5jcnlwdGVkKCkgY2Fubm90IHJ1biBmcm9tIFJDVSBzb2Z0aXJxIGNvbnRleHQuXG4rXHQgKi9cbitcdHF1ZXVlX3JjdV93b3JrKG5ldHZzY193cSwgXHUwMDI2bnZkZXYtXHUwMDNlcndvcmspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbkBAIC0zNTEsNyArMzc2LDEwIEBAIHN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbiBcdFx0YnVmX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJ1Zl9zaXplLFxuIFx0XHRcdFx0IE5FVFZTQ19SRUNFSVZFX0JVRkZFUl9TSVpFX0xFR0FDWSk7XG4gXG4tXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7XG4rXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID1cbitcdFx0dm1idXNfYWxsb2NfYnVmZmVyKGRldmljZS1cdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcbitcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWZfY2h1bmtzLFxuK1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua19jbnQpO1xuIFx0aWYgKCFuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcInVuYWJsZSB0byBhbGxvY2F0ZSByZWNlaXZlIGJ1ZmZlciBvZiBzaXplICV1XFxuXCIsXG5AQCAtMzY3LDkgKzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuK1x0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVx1MDAzZWNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmLFxuK1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4rXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7XG4gXHRpZiAocmV0ICE9IDApIHtcbiBcdFx0bmV0ZGV2X2VycihuZGV2LFxuIFx0XHRcdFwidW5hYmxlIHRvIGVzdGFibGlzaCByZWNlaXZlIGJ1ZmZlcidzIGdwYWRsXFxuXCIpO1xuQEAgLTQ1Nyw3ICs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0YnVmX3NpemUgPSBkZXZpY2VfaW5mby1cdTAwM2VzZW5kX3NlY3Rpb25zICogZGV2aWNlX2luZm8tXHUwMDNlc2VuZF9zZWN0aW9uX3NpemU7XG4gXHRidWZfc2l6ZSA9IHJvdW5kX3VwKGJ1Zl9zaXplLCBQQUdFX1NJWkUpO1xuIFxuLVx0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9IHZ6YWxsb2MoYnVmX3NpemUpO1xuK1x0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9XG4rXHRcdHZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtXHUwMDNlY2hhbm5lbCwgYnVmX3NpemUsXG4rXHRcdFx0XHQgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmX2NodW5rcyxcbitcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcbiBcdGlmICghbmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zikge1xuIFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwidW5hYmxlIHRvIGFsbG9jYXRlIHNlbmQgYnVmZmVyIG9mIHNpemUgJXVcXG5cIixcbiBcdFx0XHQgICBidWZfc2l6ZSk7XG5AQCAtNDcwLDkgKzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuK1x0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVx1MDAzZWNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmLFxuK1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4rXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmX2dwYWRsX2hhbmRsZSk7XG4gXHRpZiAocmV0ICE9IDApIHtcbiBcdFx0bmV0ZGV2X2VycihuZGV2LFxuIFx0XHRcdCAgIFwidW5hYmxlIHRvIGVzdGFibGlzaCBzZW5kIGJ1ZmZlcidzIGdwYWRsXFxuXCIpO1xuQEAgLTE4NjMsNyArMTg5NiwxMSBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuIFxuIGNsZWFudXAyOlxuLVx0ZnJlZV9uZXR2c2NfZGV2aWNlKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcmN1KTtcbitcdC8qXG4rXHQgKiBuZXRfZGV2aWNlIHdhcyBuZXZlciBwdWJsaXNoZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgYW5cbitcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXG4rXHQgKi9cbitcdF9fZnJlZV9uZXR2c2NfZGV2aWNlKG5ldF9kZXZpY2UpO1xuIFxuIFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbmluZGV4IGVlNWFiNWNlYjJiZTIuLjFkNDNjNzNmZDczZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXG5AQCAtMjg2NywxMiArMjg2NywxNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmV0dnNjX2Rydl9leGl0KHZvaWQpXG4ge1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4gXHR2bWJ1c19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZuZXR2c2NfZHJ2KTtcbitcdG5ldHZzY193b3JrcXVldWVfZGVzdHJveSgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0cmV0ID0gbmV0dnNjX3dvcmtxdWV1ZV9pbml0KCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0aWYgKHJpbmdfc2l6ZSBcdTAwM2MgUklOR19TSVpFX01JTikge1xuIFx0XHRyaW5nX3NpemUgPSBSSU5HX1NJWkVfTUlOO1xuIFx0XHRwcl9pbmZvKFwiSW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxuXCIsXG5AQCAtMjg5MCw2ICsyODk1LDcgQEAgc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXG4gXG4gZXJyX3ZtYnVzX3JlZzpcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNm5ldHZzY19uZXRkZXZfbm90aWZpZXIpO1xuK1x0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbisrKyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbkBAIC03MCw3ICs3MCw4IEBAXG4gICovXG4gZW51bSBodl9ncGFkbF90eXBlIHtcbiBcdEhWX0dQQURMX0JVRkZFUixcbi1cdEhWX0dQQURMX1JJTkdcbitcdEhWX0dQQURMX1JJTkcsXG4rXHRIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEXG4gfTtcbiBcbiAvKiBTaW5nbGUtcGFnZSBidWZmZXIgKi9cbkBAIC0xMjA1LDkgKzEyMDYsMjEgQEAgZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4gXHRcdFx0XHQgICAgICB1MzIgc2l6ZSxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xuIFxuK2V4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICB2b2lkICprYnVmZmVyLFxuK1x0XHRcdFx0XHRcdCAgdTMyIHNpemUsXG4rXHRcdFx0XHRcdFx0ICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbitcbiBleHRlcm4gaW50IHZtYnVzX3RlYXJkb3duX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbitleHRlcm4gdm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuK1x0XHRcdFx0dTMyIHNpemUsXG4rXHRcdFx0XHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuK1x0XHRcdFx0dTMyICpjaHVua19jbnRfb3V0KTtcbitcbitleHRlcm4gdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudCk7XG4rXG4gdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTtcbiBcbiBleHRlcm4gaW50IHZtYnVzX3JlY3ZwYWNrZXQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMDo0NC41Njg1NTgzNTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM1NzczODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBIeXBlci1WIGNoYW5uZWwgYW5kIG5ldHZzYyBkcml2ZXJzLiBJdCdzIGludHJvZHVjaW5nIHNvbWUgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCdzIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldHZzY19pbml0X2J1ZmAgaW5zdGVhZCBvZiB0aGUgb2xkIG1ldGhvZC4gVGhhdCdzIGEgZ29vZCBzaWduLCBwb3RlbnRpYWxseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhZGRyZXNzaW5nIHNvbWUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSB3b3JrcXVldWUgZm9yIGBuZXR2c2NgIHRvIGRlZmVyIGRldmljZSBmcmVlaW5nIGJlY2F1c2Ugb2YgdGhlIHJlc3RyaWN0aW9ucyBhcm91bmQgYHZ1bm1hcCgpYCBhbmQgYHNldF9tZW1vcnlfZW5jcnlwdGVkKClgIHdpdGhpbiB0aGUgUkNVIHNvZnRpcnEgY29udGV4dC4gU21hcnQuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRlc3RpbmcgdGhpcy4gSHlwZXItViBkcml2ZXJzIGFyZSwgb2YgY291cnNlLCB1c3VhbGx5IHJlbGV2YW50IHdoZW4gcnVubmluZyAqb24qIEh5cGVyLVYuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGVzZSBjaGFuZ2VzIGFyZSAqcmVhY2hhYmxlKiBpbiBtb3JlIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gSXQncyBwb3NzaWJsZSB0byBlbXVsYXRlIHNvbWUgSHlwZXItViBmZWF0dXJlcyBpbiBRRU1VLCBsaWtlIFZNQnVzLCBidXQgZG9lcyB0aGF0IGV4dGVuZGVkIHRvIG5ldHZzYz8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgYENPTkZJR19IWVBFUlZgIGFuZCBgQ09ORklHX0hZUEVSVl9ORVRgIGFyZSB0ZXN0YWJsZSBvciBlbmFibGVkIGluIG15IHRhcmdldCBlbnZpcm9ubWVudC5cblxuU3l6a2FsbGVyIGlzIHRoZSBmaXJzdCB0b29sIHRoYXQgY29tZXMgdG8gbWluZCBmb3IgZnV6emluZyB0aGlzLiBJIGtub3cgaXQgaGFzIHNvbWUgdm1idXMgc3VwcG9ydCwgYnV0IEkgbmVlZCB0byBkaXZlIGRlZXBlci4gQWgsIGhlcmUgd2UgZ28sIHN5emthbGxlciBoYXMgYHN5cy9saW51eC9zb2NrZXRfaHlwZXJ2LnR4dGAgYW5kIGBzeXMvbGludXgvdm1idXMudHh0YC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgbmV0dnNjYCBhY3R1YWxseSBjb3ZlcmVkPyBMZXQgbWUgY2hlY2sgcXVpY2tseSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgbmV0dnNjLiBUaGF0J2xsIGJlIHRoZSBjbGluY2hlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIwOjUwLjYwNDMzNjk2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcwODcwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldHZzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTk9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9tYXJ2ZWxsL29jdGVvbnR4MiBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyXFxuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQ6ODIwOm5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbWljcm9zb2Z0L25ldHZzYyBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2NcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dC04MjEtbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9uZXRyb25vbWUvbmZwIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbmV0cm9ub21lL25mcFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3Q9Njg2PWxpa2UgdGhpczo6XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3QtNjg3LVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0OjY4ODogICAgICAgICAgZWNobyAtbiBlZDk2MzY5NC1lODQ3LTRiMmEtODVhZi1iYzljZmMxMWQ2ZjMgXFx1MDAzZSAvc3lzL2J1cy92bWJ1cy9kcml2ZXJzL2h2X25ldHZzYy91bmJpbmRcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdWlvLWhvd3RvLnJzdC02ODktICAgICAgICAgIGVjaG8gLW4gZWQ5NjM2OTQtZTg0Ny00YjJhLTg1YWYtYmM5Y2ZjMTFkNmYzIFxcdTAwM2UgL3N5cy9idXMvdm1idXMvZHJpdmVycy91aW9faHZfZ2VuZXJpYy9iaW5kXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0PTg9Q29udGVudHM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTQ4LSAgIG1ldGEvZmJuaWNcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0OjQ5OiAgIG1pY3Jvc29mdC9uZXR2c2NcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTUwLSAgIG11Y3NlL3JucGdiZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTE2PUNoZWNrc3VtIG9mZmxvYWRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTctLS0tLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDoxODogIFRoZSBuZXR2c2MgZHJpdmVyIHN1cHBvcnRzIGNoZWNrc3VtIG9mZmxvYWQgYXMgbG9uZyBhcyB0aGVcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTktICBIeXBlci1WIGhvc3QgdmVyc2lvbiBkb2VzLiBXaW5kb3dzIFNlcnZlciAyMDE2IGFuZCBBenVyZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTY3PVNSLUlPViBzdXBwb3J0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzEtICBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgZGV2aWNlIGlzIHBhc3NlZCB0byB0aGUgZ3Vlc3QgYXMgYSBQQ0lcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6NzI6ICBkZXZpY2UuIEluIHRoaXMgY2FzZSwgYm90aCBhIHN5bnRoZXRpYyAobmV0dnNjKSBhbmQgVkYgZGV2aWNlIGFyZVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC03My0gIHZpc2libGUgaW4gdGhlIGd1ZXN0IE9TIGFuZCBib3RoIE5JQydzIGhhdmUgdGhlIHNhbWUgTUFDIGFkZHJlc3MuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc0LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3NTogIFRoZSBWRiBpcyBlbnNsYXZlZCBieSBuZXR2c2MgZGV2aWNlLiAgVGhlIG5ldHZzYyBkcml2ZXIgd2lsbCB0cmFuc3BhcmVudGx5XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc2LSAgc3dpdGNoIHRoZSBkYXRhIHBhdGggdG8gdGhlIFZGIHdoZW4gaXQgaXMgYXZhaWxhYmxlIGFuZCB1cC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzctICBOZXR3b3JrIHN0YXRlIChhZGRyZXNzZXMsIGZpcmV3YWxsLCBldGMpIHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0Ojc4OiAgbmV0dnNjIGRldmljZTsgdGhlIHNsYXZlIGRldmljZSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGluXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc5LSAgbW9zdCBjYXNlcy4gIFRoZSBleGNlcHRpb25zIGFyZSBpZiBzb21lIHNwZWNpYWwgcXVldWUgZGlzY2lwbGluZSBvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTEwMD1YRFAgc3VwcG9ydFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTA3OiAgaHZfbmV0dnNjIHN1cHBvcnRzIFhEUCBpbiBuYXRpdmUgbW9kZSwgYW5kIHRyYW5zcGFyZW50bHkgc2V0cyB0aGUgWERQXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwOC0gIHByb2dyYW0gb24gdGhlIGFzc29jaWF0ZWQgVkYgTklDIGFzIHdlbGwuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwOS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTEwOiAgU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBzeW50aGV0aWMgTklDIChuZXR2c2MpIHByb3BhZ2F0ZXMgdG9cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTExLSAgVkYgTklDIGF1dG9tYXRpY2FsbHkuIFNldHRpbmcgLyB1bnNldHRpbmcgWERQIHByb2dyYW0gb24gVkYgTklDIGRpcmVjdGx5XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0PTIxMj1Ud28gVk1CdXMgZGV2aWNlcyBkZXBlbmQgb24gdGhlIEh5cGVyLVYgaG9zdCB0byBkbyBETUEgZGF0YSB0cmFuc2ZlcnM6XFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTM6c3RvcnZzYyBmb3IgZGlzayBJL08gYW5kIG5ldHZzYyBmb3IgbmV0d29yayBJL08uIHN0b3J2c2MgdXNlcyB0aGUgbm9ybWFsXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdC0yMTQtTGludXgga2VybmVsIERNQSBBUElzLCBhbmQgc28gYm91bmNlIGJ1ZmZlcmluZyB0aHJvdWdoIGRlY3J5cHRlZCBzd2lvdGxiXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTU6bWVtb3J5IGlzIGRvbmUgaW1wbGljaXRseS4gbmV0dnNjIGhhcyB0d28gbW9kZXMgZm9yIGRhdGEgdHJhbnNmZXJzLiBUaGUgZmlyc3RcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxNi1tb2RlIGdvZXMgdGhyb3VnaCBzZW5kIGFuZCByZWNlaXZlIGJ1ZmZlciBzcGFjZSB0aGF0IGlzIGV4cGxpY2l0bHkgYWxsb2NhdGVkXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTc6YnkgdGhlIG5ldHZzYyBkcml2ZXIsIGFuZCBpcyB1c2VkIGZvciBtb3N0IHNtYWxsZXIgcGFja2V0cy4gVGhlc2Ugc2VuZCBhbmRcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxOC1yZWNlaXZlIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkZWNyeXB0ZWQgYnkgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoKS4gQmVjYXVzZVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3Q6MjE5OnRoZSBuZXR2c2MgZHJpdmVyIGV4cGxpY2l0bHkgY29waWVzIHBhY2tldHMgdG8vZnJvbSB0aGVzZSBidWZmZXJzLCB0aGVcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIyMC1lcXVpdmFsZW50IG9mIGJvdW5jZSBidWZmZXJpbmcgYmV0d2VlbiBlbmNyeXB0ZWQgYW5kIGRlY3J5cHRlZCBtZW1vcnkgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0PTQ3PXRoZSBkZXZpY2UgaW4gdGhlIGd1ZXN0IFZNLiAgRm9yIGV4YW1wbGUsIHRoZSBMaW51eCBkcml2ZXIgZm9yIHRoZVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0OjQ4OnN5bnRoZXRpYyBOSUMgaXMgcmVmZXJyZWQgdG8gYXMgXFxcIm5ldHZzY1xcXCIgYW5kIHRoZSBMaW51eCBkcml2ZXIgZm9yXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi92bWJ1cy5yc3QtNDktdGhlIHN5bnRoZXRpYyBTQ1NJIGNvbnRyb2xsZXIgaXMgXFxcInN0b3J2c2NcXFwiLiAgVGhlc2UgZHJpdmVycyBjb250YWluXFxuLS1cXG5NQUlOVEFJTkVSUz0xMTk3OD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvbWljcm9zb2Z0LHZtYnVzLnlhbWxcXG5NQUlOVEFJTkVSUzoxMTk3OTpGOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdFxcbk1BSU5UQUlORVJTLTExOTgwLUY6XFx0RG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9MTA3Nj12b2lkIHZtYnVzX3Jlc2V0X2NoYW5uZWxfY2Ioc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwpXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDg2LVxcdCAqXFxuZHJpdmVycy9odi9jaGFubmVsLmM6MTA4NzpcXHQgKiB2bWJ1c19jaGFuX3NjaGVkKCkgbWlnaHQgY2FsbCB0aGUgbmV0dnNjIGRyaXZlciBjYWxsYmFjayBmdW5jdGlvblxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTEwODgtXFx0ICogdGhhdCBlbmRzIHVwIHNjaGVkdWxpbmcgTkFQSSB3b3JrIHRoYXQgYWNjZXNzZXMgdGhlIHJpbmcgYnVmZmVyLlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA5MC1cXHQgKiBhbmQgdGhhdCB0aGUgY2hhbm5lbCByaW5nIGJ1ZmZlciBpcyBubyBsb25nZXIgYmVpbmcgYWNjZXNzZWQsIGNmLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwOTE6XFx0ICogdGhlIGNhbGxzIHRvIG5hcGlfZGlzYWJsZSgpIGluIG5ldHZzY19kZXZpY2VfcmVtb3ZlKCkuXFxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA5Mi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM9NTk5PXN0YXRpYyB2b2lkIHZtYnVzX3Byb2Nlc3Nfb2ZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKm5ld2NoYW5uZWwpXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTY5OC1cXHQgKiB3b3JrcXVldWVzIHRvIGF2b2lkIHBvc3NpYmxlIGRlYWRsb2NrLCBlLmcuIGluIHN5bmMtcHJvYmluZyBtb2RlLFxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6Njk5OlxcdCAqIE5JQzEncyBuZXR2c2Nfc3ViY2hhbl93b3JrKCkgY2FuIHJhY2Ugd2l0aCBOSUMyJ3MgbmV0dnNjX3Byb2JlKCkgLVxcdTAwM2VcXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTcwMC1cXHQgKiBydG5sX2xvY2soKSwgYW5kIGNhdXNlcyBkZWFkbG9jazogdGhlIGZvcm1lciBnZXRzIHRoZSBydG5sX2xvY2tcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19odnNvY2tfZGV2aWNlX3VucmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYy0xMzMwLSAqIE5JQyBjaGFubmVsIGlzIG9wZW5lZCAob25jZSBpdCBrbm93cyB0aGUgZ3Vlc3QgY2FuIHN1cHBvcnQgaXQsIHZpYSB0aGVcXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jOjEzMzE6ICogc3Jpb3YgYml0IGluIHRoZSBuZXR2c2MgcHJvdG9jb2wpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtMTMzMi0gKi9cXG4tLVxcbmRyaXZlcnMvaHYvdm1idXNfZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSB2bWJ1c19jaGFuX2t0eXBlID0ge1xcbi0tXFxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU1LSAqIGlzIHJ1bm5pbmcuXFxuZHJpdmVycy9odi92bWJ1c19kcnYuYzoyMDU2OiAqIEZvciBleGFtcGxlLCBIVl9OSUMgZGV2aWNlIGlzIHVzZWQgZWl0aGVyIGJ5IHVpb19odl9nZW5lcmljIG9yIGh2X25ldHZzYyBhdCBhbnkgZ2l2ZW4gcG9pbnQgb2ZcXG5kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jLTIwNTctICogdGltZSwgYW5kIFxcXCJyaW5nXFxcIiBzeXNmcyBpcyBuZWVkZWQgb25seSB3aGVuIHVpb19odl9nZW5lcmljIGlzIGJvdW5kIHRvIHRoYXQgZGV2aWNlLiBUbyBhdm9pZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM4NTI9c3RydWN0IG5ldF9kZXZpY2UgKm1hbmFfZ2V0X3ByaW1hcnlfbmV0ZGV2KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM4NjM6XFx0LyogSWYgbWFuYSBpcyB1c2VkIGluIG5ldHZzYywgdGhlIHVwcGVyIG5ldGRldmljZSBzaG91bGQgYmUgcmV0dXJuZWQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4NjQtXFx0bmRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoYWMtXFx1MDAzZXBvcnRzW3BvcnRfaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19IWVBFUlZfTkVUKSArPSBodl9uZXR2c2Mub1xcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZTo0Omh2X25ldHZzYy15IDo9IG5ldHZzY19kcnYubyBuZXR2c2MubyBybmRpc19maWx0ZXIubyBuZXR2c2NfdHJhY2UubyBuZXR2c2NfYnBmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MTM3PXN0cnVjdCBuZGlzX3BrdF84MDIxcV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQ5LS8qXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxNTA6ICogUmVwcmVzZW50IG5ldHZzYyBwYWNrZXQgd2hpY2ggY29udGFpbnMgMSBSTkRJUyBhbmQgMSBldGhlcm5ldCBmcmFtZVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTUxLSAqIHdpdGhpbiB0aGUgUk5ESVNcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTU1LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTU2OnN0cnVjdCBodl9uZXR2c2NfcGFja2V0IHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1Ny1cXHQvKiBCb29ra2VlcGluZyBzdHVmZiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxNzQ6c3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzUtXFx0dW5zaWduZWQgY2hhciBtYWNfYWRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MjE2PXN0cnVjdCBuZGlzX29mZmxvYWRfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE3OnN0cnVjdCBuZXR2c2NfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE4OnN0cnVjdCBuZXR2c2NfY2hhbm5lbDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTIxOS1zdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIwLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjIxOmV4dGVybiB1MzIgbmV0dnNjX3JpbmdfYnl0ZXM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjM6aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyNDp2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyNTpzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI2OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmluZm8pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI3OmludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjg6dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI5OmludCBuZXR2c2Nfc2VuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjMwOlxcdFxcdHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzEtXFx0XFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJuZGlzX21zZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjM0LVxcdFxcdGJvb2wgeGRwX3R4KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzNTp2b2lkIG5ldHZzY19saW5rc3RhdHVzX2NhbGxiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzYtXFx0XFx0XFx0XFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJlc3AsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzctXFx0XFx0XFx0XFx0dm9pZCAqZGF0YSwgdTMyIGRhdGFfYnVmbGVuKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzODppbnQgbmV0dnNjX3JlY3ZfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzOTpcXHRcXHRcXHQgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQwOlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDE6dm9pZCBuZXR2c2NfY2hhbm5lbF9jYih2b2lkICpjb250ZXh0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0MjppbnQgbmV0dnNjX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI0My1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NDp2b2lkIG5ldHZzY194ZHBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDU6dTMyIG5ldHZzY19ydW5feGRwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI0Ni1cXHRcXHQgICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDc6dW5zaWduZWQgaW50IG5ldHZzY194ZHBfZnJhZ2xlbih1bnNpZ25lZCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0ODpzdHJ1Y3QgYnBmX3Byb2cgKm5ldHZzY194ZHBfZ2V0KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDk6aW50IG5ldHZzY194ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI1MC1cXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTE6XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI1MjppbnQgbmV0dnNjX3ZmX3NldHhkcChzdHJ1Y3QgbmV0X2RldmljZSAqdmZfbmV0ZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUzOmludCBuZXR2c2NfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU0OmludCBuZXR2c2NfbmRveGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBuLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjU1LVxcdFxcdCAgICAgICBzdHJ1Y3QgeGRwX2ZyYW1lICoqZnJhbWVzLCB1MzIgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNTc9aW50IHJuZGlzX3NldF9zdWJjaGFubmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU4OlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTk6XFx0XFx0XFx0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmRldl9pbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MDppbnQgcm5kaXNfZmlsdGVyX29wZW4oc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MTppbnQgcm5kaXNfZmlsdGVyX2Nsb3NlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNjI6c3RydWN0IG5ldHZzY19kZXZpY2UgKnJuZGlzX2ZpbHRlcl9kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MzpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NDp2b2lkIHJuZGlzX2ZpbHRlcl91cGRhdGUoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI2NS12b2lkIHJuZGlzX2ZpbHRlcl9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjY3LWludCBybmRpc19maWx0ZXJfc2V0X3Jzc19wYXJhbShzdHJ1Y3Qgcm5kaXNfZGV2aWNlICpyZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNjk9aW50IHJuZGlzX2ZpbHRlcl9zZXRfb2ZmbG9hZF9wYXJhbXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNzA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3MS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5kaXNfb2ZmbG9hZF9wYXJhbXMgKnJlcV9vZmZsb2Fkcyk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNzI9aW50IHJuZGlzX2ZpbHRlcl9yZWNlaXZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjczOlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI3NDpcXHRcXHRcXHQgc3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4sXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNzUtXFx0XFx0XFx0IHZvaWQgKmRhdGEsIHUzMiBidWZsZW4pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc2LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6Mjc3OmludCBybmRpc19maWx0ZXJfc2V0X2RldmljZV9tYWMoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNzgtXFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqbWFjKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI4MDppbnQgbmV0dnNjX3N3aXRjaF9kYXRhcGF0aChzdHJ1Y3QgbmV0X2RldmljZSAqbnZfZGV2LCBib29sIHZmKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9ODQ2PXN0cnVjdCBudnNwX21lc3NhZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05MTEtICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5MTI6c3RhdGljIGlubGluZSB1MzIgbmV0dnNjX3Jxc3Rvcl9zaXplKHVuc2lnbmVkIGxvbmcgcmluZ2J5dGVzKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9OTI5PXN0cnVjdCBtdWx0aV9zZW5kX2RhdGEge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMwLVxcdHN0cnVjdCBza19idWZmICpza2I7IC8qIHNrYiBjb250YWluaW5nIHRoZSBwa3QgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjkzMTpcXHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGt0OyAvKiBuZXR2c2MgcGt0IHBlbmRpbmcgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTkzMi1cXHR1MzIgY291bnQ7IC8qIGNvdW50ZXIgb2YgYmF0Y2hlZCBwYWNrZXRzICovXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTk0OD1zdHJ1Y3QgbnZzY19yc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5NjQ6c3RydWN0IG5ldHZzY19zdGF0c190eCB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjUtXFx0dTY0IHBhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk3MC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk3MTpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk3Mi1cXHR1NjQgcGFja2V0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTgxLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTgyOnN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODMtXFx0dW5zaWduZWQgbG9uZyB0eF9zY2F0dGVyZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk5NS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk5NjpzdHJ1Y3QgbmV0dnNjX2V0aHRvb2xfcGNwdV9zdGF0cyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05OTctXFx0dTY0ICAgICByeF9wYWNrZXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDA2LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAwNzpzdHJ1Y3QgbmV0dnNjX3ZmX3BjcHVfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAwOC1cXHR1NjQgICAgIHJ4X3BhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMTUtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDE2OnN0cnVjdCBuZXR2c2NfcmVjb25maWcge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMjgtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDI5Oi8qIFRoZSBjb250ZXh0IG9mIHRoZSBuZXR2c2MgZGV2aWNlICAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAzMC1zdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAzMi1cXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzMzpcXHQvKiBuZXR2c2NfZGV2aWNlICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDM0OlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlIF9fcmN1ICpudmRldjtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwMzU6XFx0LyogbGlzdCBvZiBuZXR2c2MgbmV0X2RldmljZXMgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzYtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDU5LVxcdHUzMiBsNF9oYXNoOyAvKiBMNCBoYXNoIHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDYwOlxcdHN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyBldGhfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYxLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYzLVxcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1ICp2Zl9uZXRkZXY7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDY0OlxcdHN0cnVjdCBuZXR2c2NfdmZfcGNwdV9zdGF0cyBfX3BlcmNwdSAqdmZfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDY1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgdmZfdGFrZW92ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNzctXFx0LyogVXNlZCB0byB0ZW1wb3JhcmlseSBzYXZlIHRoZSBjb25maWcgaW5mbyBhY3Jvc3MgaGliZXJuYXRpb24gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwNzg6XFx0c3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqc2F2ZWRfbmV0dnNjX2Rldl9pbmZvO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA3OS19O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4MC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwODE6dm9pZCBuZXR2c2NfdmZuc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdyk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDg1LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA4NjpzdGF0aWMgaW5saW5lIHUzMiBuZXR2c2NfZ2V0X2hhc2goc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODctXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0ICpuZGMpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzItLyogUGVyIGNoYW5uZWwgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTEzMzpzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTEzNC1cXHRzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExMzU6XFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2U7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTM2LVxcdHZvaWQgKnJlY3ZfYnVmOyAvKiBidWZmZXIgdG8gY29weSBwYWNrZXRzIG91dCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTQ3LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0ODpcXHRzdHJ1Y3QgbmV0dnNjX3N0YXRzX3R4IHR4X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0OTpcXHRzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHJ4X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MC19O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExNTI6LyogUGVyIG5ldHZzYyBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExNTM6c3RydWN0IG5ldHZzY19kZXZpY2Uge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1NC1cXHR1MzIgbnZzcF92ZXJzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTg4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE4OTpcXHR1MzIgbmV0dnNjX2dzb19tYXhfc2l6ZTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMjAwOlxcdHN0cnVjdCBuZXR2c2NfY2hhbm5lbCBjaGFuX3RhYmxlW1ZSU1NfQ0hBTk5FTF9NQVhdO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTIwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MTc3Nz1zdHJ1Y3Qgcm5kaXNfbWVzc2FnZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI1OnZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI2OlxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTgyNy0jZW5kaWYgLyogX0hZUEVSVl9ORVRfSCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI4LSNpbmNsdWRlIFxcXCJoeXBlcnZfbmV0LmhcXFwiXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI5OiNpbmNsdWRlIFxcXCJuZXR2c2NfdHJhY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMxOnN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbmV0dnNjX3dxO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNi0gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mzc6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgdmYpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00MC1cXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXYgPSBuZXRfZGV2aWNlX2N0eC1cXHUwMDNlZGV2aWNlX2N0eDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NDE6XFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm52X2RldiA9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXFx1MDAzZW52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDItXFx0c3RydWN0IG52c3BfbWVzc2FnZSAqaW5pdF9wa3QgPSBcXHUwMDI2bnZfZGV2LVxcdTAwM2VjaGFubmVsX2luaXRfcGt0O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAwLXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAxOlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldiA9XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMjpcXHRcXHRjb250YWluZXJfb2Yodywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHN1YmNoYW5fd29yayk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMy1cXHRzdHJ1Y3Qgcm5kaXNfZGV2aWNlICpyZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyOS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTMwOnN0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1MTpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1NC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTU1OlxcdF9fZnJlZV9uZXR2c2NfZGV2aWNlKGNvbnRhaW5lcl9vZihyd29yaywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJ3b3JrKSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ni19XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTU4OmludCBuZXR2c2Nfd29ya3F1ZXVlX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU5LXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYwOlxcdG5ldHZzY193cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiaHZfbmV0dnNjXFxcIiwgV1FfVU5CT1VORCwgMCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYyOlxcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTYzLX1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjU6dm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY2LXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY3LVxcdHJjdV9iYXJyaWVyKCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2ODpcXHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjktfVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTczOlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3NTpcXHRuZXRfZGV2aWNlID0ga3phbGxvY19vYmooc3RydWN0IG5ldHZzY19kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzYtXFx0aWYgKCFuZXRfZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4Ny1cXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX29wZW4pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX3dvcmssIG5ldHZzY19zdWJjaGFuX3dvcmspO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODk6XFx0SU5JVF9SQ1VfV09SSyhcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTktXFx0ICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMDpcXHRxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsIFxcdTAwMjZudmRldi1cXHUwMDNlcndvcmspO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDEtfVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjA0OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjUyLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyNTM6c3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9zZW5kX2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI1NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMwMy1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA0OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzA2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMjQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNTpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNjpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDY6aW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNDcte1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDg6XFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVtxX2lkeF07XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM0OS1cXHRpbnQgbm9kZSA9IGNwdV90b19ub2RlKG52Y2hhbi1cXHUwMDNlY2hhbm5lbC1cXHUwMDNldGFyZ2V0X2NwdSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNjA6c3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNjE6XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MjpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZpY2VfaW5mbylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00NjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo0Njc6XFx0XFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVtpXTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDY4LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTQ4MC1cXHRuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2NvbXBsZXRpb25fY250ID0gbmV0X2RldmljZS1cXHUwMDNlcmVjdl9zZWN0aW9uX2NudCArIDE7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjQ4MTpcXHRyZXQgPSBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3JpbmcobmV0X2RldmljZSwgMCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTQ4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU3Ni1jbGVhbnVwOlxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzc6XFx0bmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzg6XFx0bmV0dnNjX3Jldm9rZV9zZW5kX2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzk6XFx0bmV0dnNjX3RlYXJkb3duX3JlY3ZfZ3BhZGwoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NTgwOlxcdG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1ODg6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU4OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnZzcF9tZXNzYWdlICppbml0X3BhY2tldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NDgtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY0OTpzdGF0aWMgaW50IG5ldHZzY19jb25uZWN0X3ZzcChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY1MDpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NjUxOlxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmRldmljZV9pbmZvKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxMi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzEzOlxcdHJldCA9IG5ldHZzY19pbml0X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIGRldmljZV9pbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOS0vKlxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MjA6ICogbmV0dnNjX2RldmljZV9yZW1vdmUgLSBDYWxsYmFjayB3aGVuIHRoZSByb290IGJ1cyBkZXZpY2UgaXMgcmVtb3ZlZFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjEtICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMjp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjUtXFx0c3RydWN0IG5ldF9kZXZpY2VfY29udGV4dCAqbmV0X2RldmljZV9jdHggPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzI2OlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyNy1cXHRcXHQ9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXFx1MDAzZW52ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzMtXFx0ICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczNDpcXHRuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczNS1cXHRpZiAodm1idXNfcHJvdG9fdmVyc2lvbiBcXHUwMDNjIFZFUlNJT05fV0lOMTApXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczNjpcXHRcXHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzctXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczODpcXHRuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczOS1cXHRpZiAodm1idXNfcHJvdG9fdmVyc2lvbiBcXHUwMDNjIFZFUlNJT05fV0lOMTApXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc0MDpcXHRcXHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzcyLVxcdGlmICh2bWJ1c19wcm90b192ZXJzaW9uIFxcdTAwM2U9IFZFUlNJT05fV0lOMTApIHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzczOlxcdFxcdG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3NDpcXHRcXHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3Ny1cXHQvKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Nzc4OlxcdGZyZWVfbmV0dnNjX2RldmljZV9yY3UobmV0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3OS19XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3ODQ6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19mcmVlX3NlbmRfc2xvdChzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg1LVxcdFxcdFxcdFxcdFxcdCB1MzIgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3OTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdHhfY29tcGxldGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc5Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODExLVxcdGlmIChsaWtlbHkoc2tiKSkge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTI6XFx0XFx0c3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTM6XFx0XFx0XFx0PSAoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKilza2ItXFx1MDAzZWNiO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTQtXFx0XFx0dTMyIHNlbmRfaW5kZXggPSBwYWNrZXQtXFx1MDAzZXNlbmRfYnVmX2luZGV4O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTU6XFx0XFx0c3RydWN0IG5ldHZzY19zdGF0c190eCAqdHhfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgxNi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE3LVxcdFxcdGlmIChzZW5kX2luZGV4ICE9IE5FVFZTQ19JTlZBTElEX0lOREVYKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTg6XFx0XFx0XFx0bmV0dnNjX2ZyZWVfc2VuZF9zbG90KG5ldF9kZXZpY2UsIHNlbmRfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTktXFx0XFx0cV9pZHggPSBwYWNrZXQtXFx1MDAzZXFfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyNy1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6ODI4OlxcdFxcdG5ldHZzY19kbWFfdW5tYXAobmRldl9jdHgtXFx1MDAzZWRldmljZV9jdHgsIHBhY2tldCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyOS1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NDktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg1MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF9jb21wbGV0aW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg1Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqaW5jb21pbmdfY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDUtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk0NjpcXHRcXHRuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShuZGV2LCBuZXRfZGV2aWNlLCBpbmNvbWluZ19jaGFubmVsLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDctXFx0XFx0XFx0XFx0XFx0ZGVzYywgYnVkZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3OC1cXHRcXHRcXHRcXHQgICAgdTMyIHBlbmRfc2l6ZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6OTc5OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05ODAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBybmRpc19tZXNzYWdlICpybmRpc19tc2csXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAxMi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAxMzp2b2lkIG5ldHZzY19kbWFfdW5tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDE0OlxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzEtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMzI6LyogbmV0dnNjX2RtYV9tYXAgLSBNYXAgc3dpb3RsYiBib3VuY2UgYnVmZmVyIHdpdGggZGF0YSBwYWdlIG9mXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzMtICogcGFja2V0IHNlbnQgYnkgdm1idXNfc2VuZHBhY2tldF9wYWdlYnVmZmVyKCkgaW4gdGhlIElzb2xhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzUtICpcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAzNjogKiBJbiBpc29sYXRpb24gVk0sIG5ldHZzYyBzZW5kIGJ1ZmZlciBoYXMgYmVlbiBtYXJrZWQgdmlzaWJsZSB0b1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDM3LSAqIGhvc3QgYW5kIHNvIHRoZSBkYXRhIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gdXNlXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzOS0gKiBtYXkgbm90IGJlIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBhbmQgc28gdGhlc2UgcGFnZXMgbmVlZCB0byBiZVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDQwOiAqIG1hcHBlZCB3aXRoIHN3aW90bGIgYm91bmNlIGJ1ZmZlci4gbmV0dnNjX2RtYV9tYXAoKSBpcyB0byBkb1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDQxLSAqIHRoYXQuIFRoZSBwZm5zIGluIHRoZSBzdHJ1Y3QgaHZfcGFnZV9idWZmZXIgbmVlZCB0byBiZSBjb252ZXJ0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDQ5LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUwOnN0YXRpYyBpbnQgbmV0dnNjX2RtYV9tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUxOlxcdFxcdFxcdCAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA1Mi1cXHRcXHRcXHQgIHN0cnVjdCBodl9wYWdlX2J1ZmZlciAqcGIpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA5OS0gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTEwMDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2J1aWxkX21wYl9hcnJheShzdHJ1Y3QgaHZfcGFnZV9idWZmZXIgKnBiLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTAxLVxcdFxcdFxcdFxcdHUzMiBwYWdlX2J1ZmZlcl9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTI0LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTI1OnN0YXRpYyBpbmxpbmUgaW50IG5ldHZzY19zZW5kX3BrdChcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NTMuNDc1MjE0NjY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNjI5MTU4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgTmV0dnNjIGluIGEgRnV6emluZyBDb250ZXh0KipcblxuT2theSwgc28gdGhlIG91dHB1dCBjb25maXJtcyBgbmV0dnNjYCBpcyBpbmRlZWQgdGhlIEh5cGVyLVYgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBHb29kLiBJIHNlZSBpdCdzIGxpbmtlZCB0byBgQ09ORklHX0hZUEVSVl9ORVRgLCB3aGljaCBpcyBleHBlY3RlZC4gTm93LCBTeXprYWxsZXIgYWxyZWFkeSBoYXMgZGVzY3JpcHRpb25zIGZvciBWTUJ1cyBhbmQgYHNvY2tldF9oeXBlcnZgLCBidXQgd2hhdCBhYm91dCBgbmV0dnNjYD8gSXQncyBhIHN0YW5kYXJkIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgcmVnaXN0ZXJzIGEgYG5ldGRldmAuIFRoYXQncyBzaWduaWZpY2FudC4gQW55IHN0YW5kYXJkIG5ldHdvcmsgZnV6emluZyDigJMgc2VuZGluZyBwYWNrZXRzLCBgaW9jdGxgcywgYGV0aHRvb2xgLCBYRFAg4oCTIHdpbGwgcG90ZW50aWFsbHkgaGl0IGl0IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZGV2aWNlIHByZXNlbnQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGNhbiBlbXVsYXRlIFZNQnVzIGFuZCBzb21lIFZNQnVzIGRldmljZXMuIFdhaXQsIGRvZXMgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZSBgbmV0dnNjYCBvdXQgb2YgdGhlIGJveD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gQWN0dWFsbHksIGxvb2tzIGxpa2UgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYG5ldHZzY2AgZGlyZWN0bHkuIEl0IGVtdWxhdGVzIGB2bWJ1c2AsIGJ1dCB0eXBpY2FsbHkgb25seSBhIGZldyBkZXZpY2VzLiBPciBtYXliZSBpdCAqZG9lcyo/XG5cbkhhbmcgb24sIFN5emthbGxlciBoYXMgYHN5cy9saW51eC92bWJ1cy50eHRgIHdoaWNoIG1lYW5zIHdlIGNhbiBjcmVhdGUgc3ludGhldGljIFZNQnVzIGRldmljZXMhIFRoYXQncyBpdCEgU3l6a2FsbGVyIGNhbiBpbmplY3QgVk1CdXMgZGV2aWNlcyBhbmQgbWVzc2FnZXMgdXNpbmcgYC9kZXYvdm1idXMvaHZfdWlvYCBvciBzaW1pbGFyIG1ldGhvZHMsIG9yIGV2ZW4gbW9jayB0aGUgVk1CdXMgaG9zdCBlbnRpcmVseS4gRG9lcyBzeXprYWxsZXIgdXNlIGBzeXpfdm1idXNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcGF0Y2ggbWVudGlvbnMgYSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIC0gc28gc3l6Ym90IGZvdW5kIGEgd2F5IHRvIHRyaWdnZXIgc29tZXRoaW5nIG9yIGl0J3MganVzdCBhIHBhdGNoIGJlaW5nIHRlc3RlZC5cblxuTm93LCB0aGF0IHByb21wdDogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gSWYgU3l6a2FsbGVyIGNhbiByZWFjaCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZSwgcmlnaHQ/IFNvIGNhbiB3ZSByZWFjaCBgbmV0dnNjYCB0aGVuPyBMZXQncyB0cmFjZSBpdCBhbmQgc2VlIGlmIHdlIGNhbiByZWFjaCBgdm1idXNfYWxsb2NfYnVmZmVyYC5cblxuYG5ldHZzY19pbml0X2J1ZmAgY2FsbHMgYHZtYnVzX2FsbG9jX2J1ZmZlcmAuIGBuZXR2c2NfaW5pdF9idWZgIGlzIHRoZW4gY2FsbGVkIGZyb20gYG5ldHZzY19jb25uZWN0X3ZzcGAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgbmV0dnNjX2RldmljZV9hZGRgLCB3aGljaCBpcyBmaW5hbGx5IGNhbGxlZCBmcm9tIGBuZXR2c2NfcHJvYmVgLiBgbmV0dnNjX3Byb2JlYCBpcyB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgVk1CdXMgZGV2aWNlLiBJZiBhIFZNQnVzIGRldmljZSB3aXRoIHRoZSBgbmV0dnNjYCBHVUlEIGlzIG9mZmVyZWQsIGBuZXR2c2NfcHJvYmVgIHdpbGwgcnVuLiBUaGF0J3MgdGhlIGNoYWluLiBTbywgY2FuIHdlIG9mZmVyIFZNQnVzIGRldmljZXMgaW4gUUVNVT8gWWVzLCBTeXprYWxsZXIgaGFzIGEgd2F5IHRvIG1vY2sgVk1CdXMgZGV2aWNlcywgb3IgbWF5YmUgUUVNVSBwcm92aWRlcyBvbmU/XG5cblRoZSBwcm9tcHQgc3RhdGVzOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIEJ1dCBgbmV0dnNjYCBpcyBhIHN5bnRoZXRpYyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyLiBJdCBydW5zIG9uIHRvcCBvZiBWTUJ1cy4gVk1CdXMgaXMgc29mdHdhcmUtZW11bGF0ZWQgaW4gUUVNVS9LVk0gKHRvIHNvbWUgZXh0ZW50KSBvciBTeXprYWxsZXIgY2FuIG1vY2sgaXQuIFRoZXJlZm9yZSBpdCBpcyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBsZXQgbWUgbG9vayBhdCB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOlxuXG4qICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYFxuKiAgIGB2bWJ1c19mcmVlX2J1ZmZlcmBcbiogICBgdm1idXNfYWxsb2NfYnVmZmVyYFxuKiAgIGBuZXR2c2Nfd29ya3F1ZXVlX2luaXRgXG4qICAgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWBcblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AgYW5kIGBkcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNgLiBUaGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZTogYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYW5kIGB2bWJ1c19hbGxvY19idWZmZXJgLiBMZXQncyBjaGVjayBgdm1idXNfYWxsb2NfYnVmZmVyYCBhbmQgYHZtYnVzX2ZyZWVfYnVmZmVyYC4gSSBzZWUgdGhleSBhcmUgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9odi9jaGFubmVsLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM5NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTowNC41MzgxMzM4OTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzEzMDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtYnVzX2FsbG9jX2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuYz02MTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYxNDogKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjE3LSAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbilcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTg6ICogQGNodW5rczogY2h1bmtzIGFycmF5IGZyb20gdm1idXNfYWxsb2NfYnVmZmVyKCksIG9yIE5VTExcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTktICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9NjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2ZyZWVfYnVmZmVyKTtcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY1MS0vKipcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NTI6ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci5cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NTMtICpcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY2OS0gKi9cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NzA6dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY3MS1cXHRcXHRcXHQgdTMyIHNpemUsXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjMtfVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjc2NDpFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MDQuNjU1NDUyMDE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NTg0Mzk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB2bWJ1c19mcmVlX2J1ZmZlcmAgYW5kIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBJcyBgdm1idXNfZnJlZV9idWZmZXJgIGNhbGxlZCAqYWZ0ZXIqIGEgZ3BhZGwgaXMgZXN0YWJsaXNoZWQsIGxpa2VseSB0byBjbGVhbiB1cCBhZnRlciBpdD8gT3IgYXJlIHRoZXNlIHR3byBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcms/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlaXIgdXNhZ2UgdG8gc2VlIGlmIGFueSBvYnZpb3VzIHBhdHRlcm5zIGVtZXJnZS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBjb250ZXh0IGVhY2ggZnVuY3Rpb24gb3BlcmF0ZXMgd2l0aGluLiBXaGF0J3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkLCBhbmQgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBpbiB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucz8gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIG9yIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGBfZGVjcnlwdGVkYCBvbmUsIGJlY2F1c2UgZGVjcnlwdGlvbiBmdW5jdGlvbnMgYWx3YXlzIGludHJvZHVjZSBtb3JlIGNvbXBsZXhpdHkgYW5kIHJpc2suXG5cbkkgYW50aWNpcGF0ZSB0aGUgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCBmdW5jdGlvbiBjb3VsZCBiZSBrZXkgaW4gdGhlIHNlY3VyaXR5IHBvc3R1cmUgb2YgdGhlIFZNQnVzLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBlbmNyeXB0aW9uIGtleSBleGNoYW5nZSBhbmQgZGVjcnlwdGlvbiBwcm9jZXNzIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkgYW5kIHNlY3VyZWx5LiBBbnkgZmxhdyBjb3VsZCBsZWFkIHRvIGEgY29tcHJvbWlzZS4gVW5kZXJzdGFuZGluZyBob3cgdGhlIGNhbGxlciBjb250ZXh0IGlzIGVzdGFibGlzaGVkIHdpbGwgYmUgY3J1Y2lhbC4gRG9lcyB0aGUgY2FsbGVyIGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2U/IElzIHRoZSBncGFkbCBzZWN1cmUgZnJvbSB1bmF1dGhvcml6ZWQgYWNjZXNzP1xuXG5SZWdhcmRpbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgSSdsbCBuZWVkIHRvIGNvbmZpcm0gaXQgaGFuZGxlcyBhbGwgY2FzZXMuIEFyZSB0aGVyZSBhbnkgY29ybmVyIGNhc2VzIHdoZXJlIGJ1ZmZlcnMgbWlnaHQgYmUgbGVha2VkLCBvciBkb3VibGUtZnJlZWQ/IEhvdyBhcmUgdGhlc2UgYnVmZmVycyBtYW5hZ2VkPyBJcyBhIHJlZmNvdW50aW5nIHNjaGVtZSBpbnZvbHZlZD8gVW5kZXJzdGFuZGluZyB0aGUgcmVzb3VyY2UgbGlmZWN5Y2xlIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBzaG9ydCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGJ1aWxkaW5nIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBlYWNoIGZ1bmN0aW9uJ3MgcHVycG9zZSwgdGhlbiB0cnkgdG8gcGllY2UgdG9nZXRoZXIgdGhlaXIgcmVsYXRpb25zaGlwIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGlzc3VlcyBpbiB0ZXJtcyBvZiBzZWN1cml0eSwgcmVzb3VyY2UgbWFuYWdlbWVudCwgYW5kIG92ZXJhbGwgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBWTUJ1cyBhcmNoaXRlY3R1cmUuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIGFuYWx5c2lzLCBmb2N1c2luZyBvbiBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIGFuZCBwb3RlbnRpYWwgZXhwbG9pdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MDkuMjUxMzA1MjcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjA5Mjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuYz02MTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYxNDogKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjI1LSAqL1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYyNjp2b2lkIHZtYnVzX2ZyZWVfYnVmZmVyKHZvaWQgKmFkZHIsIHN0cnVjdCBwYWdlICoqY2h1bmtzLCB1MzIgY2h1bmtfY250KVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYyNy17XFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NDgtfVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjY0OTpFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjUwLVxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9NjcwPXZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2MC1cXHRrdmZyZWUocGFnZXMpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjc2MTpcXHR2bWJ1c19mcmVlX2J1ZmZlcihOVUxMLCBjaHVua3MsIGNodW5rX2NudCk7XFxuZHJpdmVycy9odi9jaGFubmVsLmMtNzYyLVxcdHJldHVybiBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTowOS4zNTc0MDI1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDA2MTk5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgR1BBREwgRXN0YWJsaXNobWVudCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAsIGFuZCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBjcml0aWNhbCByb2xlIHRoaXMgZnVuY3Rpb24gcGxheXMgaW4gc2VjdXJlIGNvbW11bmljYXRpb24gd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcmsuIEkgbmVlZCB0byBicmVhayBkb3duIHByZWNpc2VseSAqaG93KiBpdCdzIHdvcmtpbmcgdG8gZXN0YWJsaXNoIGEgR2xvYmFsIFBhZ2UgQWRkcmVzcyBEZXNjcmlwdG9yIExpc3QgKEdQQURMKSwgZXNwZWNpYWxseSB3aXRoIHRoZSBcImRlY3J5cHRlZFwiIGVsZW1lbnQuIFRoaXMgY2xlYXJseSBzaWduYWxzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgc2VjdXJpdHktc2Vuc2l0aXZlIGNoYW5uZWwuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYXJvdW5kIGRhdGEgaW50ZWdyaXR5OiBXaGF0IGVuY3J5cHRpb24gc2NoZW1lIGlzIGVtcGxveWVkPyBJcyBpdCBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYz8gVW5kZXJzdGFuZGluZyB0aGUga2V5IGV4Y2hhbmdlIHByb2Nlc3MgaXMgcGFyYW1vdW50LiBXaGVyZSBpcyB0aGUgZGVjcnlwdGlvbiBrZXkgZGVyaXZlZCBmcm9tPyBJcyBpdCBzb21ldGhpbmcgc3RhdGljLCBvciBwYXJ0IG9mIGEgbW9yZSBkeW5hbWljIGFuZCBzZWN1cmUga2V5IGFncmVlbWVudCBwcm90b2NvbD8gSXMgaXQgYXV0aGVudGljYXRlZCBzb21laG93PyBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgY29udHJvbCBhbmQgZGV0ZXJtaW5lIHdoZXJlIHRoZSBkZWNyeXB0aW9uIGhhcHBlbnMuIElzIGl0IHBlcmZvcm1lZCBpbiB0aGUgY2FsbGVyLCBvciBpcyBpdCBkZWxlZ2F0ZWQgZnVydGhlciBkb3duP1xuXG5UaGVuLCB0aGUgR1BBREwgc3RydWN0dXJlIGl0c2VsZiBpcyBrZXkuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBsYXlvdXQgb2YgdGhlIG1lbW9yeSBtYXBwaW5ncyDigJMgd2hpY2ggcGh5c2ljYWwgcGFnZXMgYXJlIGJlaW5nIHJlZmVyZW5jZWQsIGFuZCBob3cuIElzIGl0IGEgY29udGlndW91cyBtYXBwaW5nLCBvciBpcyBpdCBmcmFnbWVudGVkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGFsaWdubWVudCBjb25zdHJhaW50cz8gVGhlIFwiY2FsbGVyXCIgcGFydCBpcyBpbnRlcmVzdGluZyB0b28uIEl0IHRlbGxzIG1lIHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpcyB0aGUgaW5pdGlhdG9yLiBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBkcml2ZXIsIHRoZSBndWVzdCBPUywgb3Igc29tZXdoZXJlIGVsc2U/IFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hhdCBsZXZlbCBvZiBwcml2aWxlZ2UgbmVlZHMgdG8gYmUgaW52b2x2ZWQuXG5cbkFuZCBvZiBjb3Vyc2UsIHNlY3VyaXR5IGlzIGV2ZXJ5dGhpbmcgaGVyZS4gSSBtdXN0IGZvY3VzIG9uIHZ1bG5lcmFiaWxpdGllcy4gTXkgbWluZCBpcyBhbHJlYWR5IHByb2JpbmcgZm9yIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueSBvcHBvcnR1bml0aWVzIGZvciBkYXRhIHRhbXBlcmluZyBkdXJpbmcgdGhpcyBwcm9jZXNzLiBDYW4gYSBtYWxpY2lvdXMgYWN0b3IgZ2FpbiBhY2Nlc3MgdG8gdGhlIHJhdyBHUEFETCBpbmZvcm1hdGlvbiBhbmQgc3VidmVydCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFwcGluZz8gV2hhdCBhdWRpdGluZyBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZT9cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYXR0YWNrIHN1cmZhY2UgYW5kIGFzc2VzcyB0aGUgcmVsaWFiaWxpdHkgb2YgdGhpcyBzZWN1cmUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdpdGhpbiB0aGUgVk1CdXMgYXJjaGl0ZWN0dXJlLiBJdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIHZ1bG5lcmFiaWxpdHkgaGVyZSBjb3VsZCBoYXZlIHNlcmlvdXMgcmFtaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxNC40OTgwMjc4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NDIzMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9odi9jaGFubmVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9odi9jaGFubmVsLmM9NTkxPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTMtLypcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo1OTQ6ICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXJcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTUtICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjAzLSAqL1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYwNDppbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjA1LVxcdFxcdFxcdFxcdFxcdCAgIHZvaWQgKmtidWZmZXIsIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEwLX1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTE6RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MTQuNTY5Njc4OTAyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzkzMjY0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBOZXRWU0MgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IHdvcmtxdWV1ZXMgYXJlIG9mdGVuIHVzZWQgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcsIGxpa2VseSB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cyBvciBvZmZsb2FkIHRhc2tzLiBNeSBmaXJzdCBtb3ZlIGlzIGdvaW5nIHRvIGJlIHRvIHplcm8gaW4gb24gdGhvc2UgZnVuY3Rpb25zIHdpdGhpbiBgbmV0dnNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSB3b3JrcXVldWVzIGFyZSBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgYWRkaXRpb25zIGluIHRoZSBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlcyBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIG5ldHdvcmsgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCdzIHNlZSB3aGF0IGVsc2UgdGhleSBzbnVjayBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxNy45NDkwMDg4MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDcyNDM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljLipuZXR2c2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzE6c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTM3PWludCBuZXR2c2Nfc3dpdGNoX2RhdGFwYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMjktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEzMDpzdGF0aWMgdm9pZCBfX2ZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUwLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTE6c3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0xNjU9dm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjA0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI1Mi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjUzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2Vfc2VuZF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTQtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMDQ6c3RhdGljIHZvaWQgbmV0dnNjX3RlYXJkb3duX3JlY3ZfZ3BhZGwoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzI1OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzI2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0zNDY9aW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM1OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzYwOnN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYxLVxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTU4Nz1zdGF0aWMgaW50IG5lZ290aWF0ZV9udnNwX3ZlcihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NDk6c3RhdGljIGludCBuZXR2c2NfY29ubmVjdF92c3Aoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NzIyPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4My1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Nzg0OnN0YXRpYyBpbmxpbmUgdm9pZCBuZXR2c2NfZnJlZV9zZW5kX3Nsb3Qoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cXHRcXHRcXHRcXHRcXHQgdTMyIGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzkwOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3R4X2NvbXBsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03OTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6ODUwOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX2NvbXBsZXRpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg1MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTAxMz12b2lkIG5ldHZzY19kbWFfdW5tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNDktICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwNTA6c3RhdGljIGludCBuZXR2c2NfZG1hX21hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNTEtXFx0XFx0XFx0ICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwOTktICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMDA6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19idWlsZF9tcGJfYXJyYXkoc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYixcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEwMS1cXHRcXHRcXHRcXHR1MzIgcGFnZV9idWZmZXJfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTEyNTpzdGF0aWMgaW5saW5lIGludCBuZXR2c2Nfc2VuZF9wa3QoXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTExMjYtXFx0c3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjQtLyogTW92ZSBwYWNrZXQgb3V0IG9mIG11bHRpIHNlbmQgZGF0YSAobXNkKSwgYW5kIGNsZWFyIG1zZCAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZlX3BrdF9tc2Qoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKiptc2Rfc2VuZCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTIyNi1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqKm1zZF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTM4ND1zdGF0aWMgaW50IHNlbmRfcmVjdl9jb21wbGV0aW9ucyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDIzLS8qIENvdW50IGhvdyBtYW55IHJlY2VpdmUgY29tcGxldGlvbnMgYXJlIG91dHN0YW5kaW5nICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE0MjQ6c3RhdGljIHZvaWQgcmVjdl9jb21wX3Nsb3RfYXZhaWwoY29uc3Qgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDI1LVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbXVsdGlfcmVjdl9jb21wICptcmMsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTQzOT1zdGF0aWMgdm9pZCBlbnFfcmVjZWl2ZV9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDY4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDY5OnN0YXRpYyBpbnQgbmV0dnNjX3JlY2VpdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE0NzAtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgxLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTgyOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudnNjZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjctXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2Mjg6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG52c3BfbWVzc2FnZSAqbnZtc2csXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY1MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY1MjpzdGF0aWMgdm9pZCBuZXR2c2NfcmVjZWl2ZV9pbmJhbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NTMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZzY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjc4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjc5OnN0YXRpYyBpbnQgbmV0dnNjX3Byb2Nlc3NfcmF3X3BrdChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2ODAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzExLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzEyOnN0YXRpYyBzdHJ1Y3QgaHZfZGV2aWNlICpuZXR2c2NfY2hhbm5lbF90b19kZXZpY2Uoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3MTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxOC4wNjM3NDE0NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzk1MjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZNQnVzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLCBhbmQgc29tZSB3b3JrcXVldWUgbWFuYWdlbWVudCByb3V0aW5lcywgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLiBBaCwgdGhlIHdvcmtxdWV1ZSBmdW5jdGlvbnMgYXJlIGp1c3Qgd3JhcHBlcnMsIG5vdGhpbmcgY29tcGxleCB0aGVyZS4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIHBhdGNoIGlzIGluIHRoZSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGB2bWJ1c19hbGxvY19idWZmZXJgIGFuZCBgdm1idXNfZnJlZV9idWZmZXJgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgaXMgYWN0dWFsbHkgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQncyBjYWxsZWQgd2l0aGluIGBuZXR2c2NfaW5pdF9idWZgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBhIG5ldHZzYyBkZXZpY2UgaXMgYWRkZWQg4oCTIHNvLCB5ZXMsIGl04oCZcyByZWFjaGFibGUuIEdvb2QsIHRoYXQncyBpbXBvcnRhbnQgZm9yIGZ1enppbmcuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHkhIEl0IGFsbG9jYXRlcyBtZW1vcnksIG1hcmtzIGl0IGFzIGRlY3J5cHRlZCwgKmFuZCogbWFwcyBpdC4gVGhhdCdzIGEgY2xhc3NpYyB0YXJnZXQgZm9yIGZpbmRpbmcgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbjpcblxuKiAgIGB2bWJ1c19hbGxvY19idWZmZXJgXG4qICAgYHZtYnVzX2ZyZWVfYnVmZmVyYFxuKiAgIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGBcblxuTGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvcnJlY3QgdG8gc3RhcnQgd2l0aC4gTG9va3MgbGlrZSBgQ09ORklHX0hZUEVSVmAgYW5kIGBDT05GSUdfSFlQRVJWX05FVGAgYXJlIHJlcXVpcmVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIGBkcml2ZXJzL25ldC9oeXBlcnYvYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyMy4yNjc2OTc1NjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMjA1MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhZUEVSVl9ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaHlwZXJ2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnOjI6Y29uZmlnIEhZUEVSVl9ORVRcXG5kcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICs9IGh2X25ldHZzYy5vXFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTMtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTI6I2lmbmRlZiBfSFlQRVJWX05FVF9IXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMzojZGVmaW5lIF9IWVBFUlZfTkVUX0hcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xODI1PXZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xODI2LVxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTgyNzojZW5kaWYgLyogX0hZUEVSVl9ORVRfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyMy4zNTA5MDg1NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4OTY0OTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEh5cGVyLVYgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYGRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHdoYXQncyByZXF1aXJlZCBhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2hvaWNlcyBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIgaW4gbXkgZXhhbWluYXRpb24gb2YgdGhlIGRyaXZlciBjb2RlLCBvciBJJ2xsIGJlIHNwaW5uaW5nIG15IHdoZWVscy4gS25vd2luZyB0aGlzIEtjb25maWcgY29uZmlndXJhdGlvbiBpbnNpZGUgYW5kIG91dCB3aWxsIHByZXZlbnQgYSBsb3Qgb2Ygd2FzdGVkIHRpbWUgZG93biB0aGUgbGluZS4gSXQgaXMgYSBsb2dpY2FsIGZpcnN0IHN0ZXAgZm9yIHRoaXMgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyNi40NDA1NjE2MjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSFlQRVJWX05FVFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhZUEVSVl9WTUJVU1xcbiAgIDU6XFx0XFx0c2VsZWN0IFVDUzJfU1RSSU5HXFxuICAgNjpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgdGhlIEh5cGVyLVYgdmlydHVhbCBuZXR3b3JrIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MjYuNDQwNjkwMDQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODk3MjM2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBoeXBlcnZpc29yIGRyaXZlcnMuXG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBEcmlsbGluZyBEb3duIGludG8gSHlwZXItViBOZXR3b3JraW5nKipcblxuQWxyaWdodCwgc28gYEhZUEVSVl9ORVRgIHJlbGllcyBvbiBgSFlQRVJWX1ZNQlVTYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgcHJvcGVybHkgY29uZmlndXJlZCwgYW5kIEknbGwgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGp1bXAgc3RyYWlnaHQgdG8gYGRyaXZlcnMvaHYvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2ssIGdpdmVuIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgY2xlYXJseSByZWxhdGVkIHRvIHRoZSBIeXBlci1WIHZpcnR1YWwgYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGF0IHBsYXkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXNuJ3QgZGlzYWJsZWQgYnkgZGVmYXVsdCBvciBoaWRkZW4gYmVoaW5kIHNvbWUgb2JzY3VyZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHRyb3VibGVzaG9vdCBhbnkgbmV0d29ya2luZyBwcm9ibGVtcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBoeXBlcnZpc29yLCBhbmQgSSdsbCBrbm93IHdoZXJlIHRvIGFkanVzdCB0aGUgYnVpbGQgY29uZmlnIHRvIG1lZXQgaXRzIHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NjMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjMwLjMzMDQyMDIxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4MDMzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhZUEVSVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L0tjb25maWc9Mz1tZW51IFxcXCJNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvaHYvS2NvbmZpZy00LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo1OmNvbmZpZyBIWVBFUlZcXG5kcml2ZXJzL2h2L0tjb25maWctNi1cXHRib29sIFxcXCJNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL2h2L0tjb25maWc6MTc6Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxcbmRyaXZlcnMvaHYvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFxcXCJcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL2h2L0tjb25maWc6NDM6Y29uZmlnIEhZUEVSVl9USU1FUlxcbmRyaXZlcnMvaHYvS2NvbmZpZy00NC1cXHRkZWZfYm9vbCBIWVBFUlYgXFx1MDAyNlxcdTAwMjYgWDg2XFxuZHJpdmVycy9odi9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo0Njpjb25maWcgSFlQRVJWX1VUSUxTXFxuZHJpdmVycy9odi9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViBVdGlsaXRpZXMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTUyLVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo1Mzpjb25maWcgSFlQRVJWX0JBTExPT05cXG5kcml2ZXJzL2h2L0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIEJhbGxvb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTU5LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXFxuZHJpdmVycy9odi9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjMwLjQwODIzMDA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0NTIxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIEh5cGVyLVYgVk1CdXMgRGVwZW5kZW5jaWVzKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYEhZUEVSVl9WTUJVU2AuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXJzIGluIHRoZSBIeXBlci1WIHNlY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gaXMgYGRyaXZlcnMvaHYvS2NvbmZpZ2AuIEknbGwgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBvciBvcHRpb25zIGFyZSBsaW5rZWQgdG8gYEhZUEVSVl9WTUJVU2AuIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMsIHBlcmhhcHMgb3RoZXIgSHlwZXItViBmZWF0dXJlcyB0aGF0IHJlbHkgb24gdGhlIFZNQnVzLCBvciBtYXliZSBldmVuIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgcmVsYXRlZCB0byBob3cgdGhlIFZNQnVzIGlzIHVzZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBIeXBlci1WIGRyaXZlciBmcmFtZXdvcmsuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBpdCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgYW5kIHdoZXRoZXIgSSBjYW4gY2hhbmdlIGFueSBhc3NvY2lhdGVkIHBhcmFtZXRlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MzMuNDkyNjg1NTkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2h2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgSFlQRVJWX1ZNQlVTXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgVk1CdXMgZHJpdmVyXFxcIlxcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBIWVBFUlZcXG4gIDYzOlxcdFxcdGRlZmF1bHQgSFlQRVJWXFxuICA2NDpcXHRcXHRzZWxlY3QgU1lTRkIgaWYgRUZJIFxcdTAwMjZcXHUwMDI2ICFIWVBFUlZfVlRMX01PREVcXG4gIDY1OlxcdFxcdGhlbHBcXG4gIDY2OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSBIeXBlci1WIFZtYnVzIGRyaXZlci5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIE1TSFZfUk9PVFxcbiAgNjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIHJvb3QgcGFydGl0aW9uIHN1cHBvcnRcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIEhZUEVSViBcXHUwMDI2XFx1MDAyNiAoWDg2XzY0IHx8IEFSTTY0KVxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiAhSFlQRVJWX1ZUTF9NT0RFXFxuICA3MjpcXHRcXHQjIFRoZSBoeXBlcnZpc29yIGludGVyZmFjZSBvcGVyYXRlcyBvbiA0ayBwYWdlcy4gRW5mb3JjaW5nIGl0IGhlcmVcXG4gIDczOlxcdFxcdCMgc2ltcGxpZmllcyBtYW55IGFzc3VtcHRpb25zIGluIHRoZSByb290IHBhcnRpdGlvbiBjb2RlLlxcbiAgNzQ6XFx0XFx0IyBlLmcuIFdoZW4gd2l0aGRyYXdpbmcgbWVtb3J5LCB0aGUgaHlwZXJ2aXNvciBnaXZlcyBiYWNrIDRrIHBhZ2VzIGluXFxuICA3NTpcXHRcXHQjIG5vIHBhcnRpY3VsYXIgb3JkZXIsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHJlYXNzZW1ibGUgbGFyZ2VyIHBhZ2VzXFxuICA3NjpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfU0laRV80S0JcXG4gIDc3OlxcdFxcdHNlbGVjdCBFVkVOVEZEXFxuICA3ODpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MzMuNDkyNzk1ODExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY1NjcyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBIeXBlci1WIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgSFlQRVJWX1ZNQlVTYCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBgSFlQRVJWYCBjb3JlIGNvbXBvbmVudC4gTmF0dXJhbGx5LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgaW50byB0aGUgYEhZUEVSVmAgbW9kdWxlIGl0c2VsZi4gV2hhdCBkb2VzICppdCogZGVwZW5kIG9uPyBHb3R0YSBtYXAgb3V0IHRoZSBlbnRpcmUgdHJlZSB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIEh5cGVyLVYgc3RhY2sgaXMgaW50ZXJjb25uZWN0ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcuLi4gbGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzg5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTozNi41MjkzNjY5MzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9odi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgSFlQRVJWXFxuICAgNjpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gKFg4NiBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBIWVBFUlZJU09SX0dVRVNUKSBcXFxcXFxuICAgODpcXHRcXHRcXHR8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbiAgIDk6XFx0XFx0c2VsZWN0IFBBUkFWSVJUXFxuICAxMDpcXHRcXHRzZWxlY3QgWDg2X0hWX0NBTExCQUNLX1ZFQ1RPUiBpZiBYODZcXG4gIDExOlxcdFxcdHNlbGVjdCBPRl9FQVJMWV9GTEFUVFJFRSBpZiBPRlxcbiAgMTI6XFx0XFx0c2VsZWN0IElSUV9NU0lfTElCIGlmIFg4NlxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcnVuIExpbnV4IGFzIGEgSHlwZXItViBjbGllbnQgb3BlcmF0aW5nXFxuICAxNTpcXHRcXHQgIHN5c3RlbS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIExpbnV4IHRvIGJvb3QgaW4gVlRMIGNvbnRleHRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIChYODZfNjQgXFx1MDAyNlxcdTAwMjYgSEFWRV9TVEFUSUNfQ0FMTCkgfHwgQVJNNjRcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSFlQRVJWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjM2LjUyOTQ2MDM4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ3MTEwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBIeXBlci1WIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBmb3IgYEhZUEVSVmA6IGl0IGhpbmdlcyBvbiBlaXRoZXIgYW4geDg2IGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBsb2NhbCBBUElDIGFuZCBhIGd1ZXN0IGh5cGVydmlzb3IsIG9yIEFSTTY0ICp3aXRob3V0KiBiaWctZW5kaWFubmVzcy4gR290IGl0LiBTeXprYWxsZXIncyByb2xlIGhlcmUgaXMgY3J1Y2lhbCwgYXMgaXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBWTUJ1cyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBidWZmZXIgYWxsb2NhdGlvbiwgZGVhbGxvY2F0aW9uLCBhbmQgR1BBREwgZXN0YWJsaXNobWVudDogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwgZnVuY3Rpb25zIGluIHRoZSBWTUJ1cyBub3cgYmVpbmcgdXRpbGl6ZWQgYnkgYG5ldHZzY2AsIGFuZCB0aGF0J3MgdGhlIGtleS4gVGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3Mgd2UgbmVlZCB0byBmb2N1cyBvbiBmb3IgZW5hYmxpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFyZSBgSFlQRVJWYCwgYEhZUEVSVl9WTUJVU2AsIGFuZCBgSFlQRVJWX05FVGAuXG5cbkkgcXVpY2tseSBldmFsdWF0ZWQgc29tZSBvdGhlciBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgdGhleSdyZSByZWxldmFudCwgYnV0IHRoZSB3cmFwcGVycyBmb3IgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLCBhbmQgdGhlIHRlYXJkb3duIGZ1bmN0aW9ucyBsaWtlIGBmcmVlX25ldHZzY19kZXZpY2VfcmN1YCwgYF9fZnJlZV9uZXR2c2NfZGV2aWNlYCwgYW5kIGBmcmVlX25ldHZzY19kZXZpY2VgLCBhcHBlYXIgbGVzcyBjcml0aWNhbCBmb3IgZnV6emluZyBwdXJwb3Nlcy4gVGhleSBtaWdodCBiZSByZWFjaGFibGUsIGJ1dCB0aGV5IGFyZW4ndCB0aGUgaGVhcnQgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFwcGVhciB0byBiZSBoZWF2aWx5IGNvbmNlbnRyYXRlZCBpbiB0aGUgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIG1hbmFnZW1lbnQgYXJlYXMuXG5cbkxldCBtZSB2ZXJpZnkgdGhhdCBgdm1idXNfYWxsb2NfYnVmZmVyYCBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFFFTVUvc3l6a2FsbGVyIHNldHVwLiBZZXMsIHN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBzbyB0aGF0IHNob3VsZCB3b3JrLiBXYWl0LCBgdm1idXNfYWxsb2NfYnVmZmVyYCByZXNpZGVzIGluIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AsIG1ha2luZyBpdCBhIGdlbmVyaWMgVk1CdXMgZnVuY3Rpb24uIEdvb2QsIGFuZCBpdCdzIGludm9rZWQgYnkgYG5ldHZzY19pbml0X2J1ZmAuIERlZmluaXRlbHkgcmVhY2hhYmxlIGlmIGBIWVBFUlZfTkVUYCBpcyBjb25maWd1cmVkIGFuZCBwcm9iZWQuICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbkhlcmUncyB0aGUgZGlzdGlsbGVkIHN1bW1hcnk6XG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYHZtYnVzX2FsbG9jX2J1ZmZlcmBcbiogICBgdm1idXNfZnJlZV9idWZmZXJgXG4qICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYFxuXG4qKkVuYWJsZSBDb25maWd1cmF0aW9uczoqKlxuXG4qICAgYEhZUEVSVmBcbiogICBgSFlQRVJWX1ZNQlVTYFxuKiAgIGBIWVBFUlZfTkVUYFxuXG4qKlJlYXNvbmluZzoqKlxuXG5UaGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IEh5cGVyLVYgbmV0d29ya2luZyBoYW5kbGVzIGJ1ZmZlciBhbGxvY2F0aW9uLCBtZW1vcnkgZGVjcnlwdGlvbiwgYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgdGhyb3VnaCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMgYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgIGFuZCBzdWJzZXF1ZW50IHVzZSBieSB0aGUgYG5ldHZzY2AgbmV0d29yayBkcml2ZXIuIFRoZXNlIFZNQnVzLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZSAqa2V5KiBhcyB0aGV5J3JlIG5vdyBpbnZvbHZlZCBpbiBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMuIEdpdmVuIHRoYXQgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSB0aGUgb25lcyBzdXBwb3J0ZWQgYnkgU3l6a2FsbGVyLCBpdCBtYWtlcyB0aGVzZSB0YXJnZXRzIGhpZ2hseSBzdWl0YWJsZSBmb3IgZnV6emluZyBlZmZvcnRzLCBhbmQgc2hvdWxkIGJlIHRoZSBpbW1lZGlhdGUgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjg1LCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjQ1LjE3NjU3Njc4NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDUxNzgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVl9ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWJ1c19hbGxvY19idWZmZXJcIixcbiAgICBcInZtYnVzX2ZyZWVfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IFZNQnVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBHUEFETCBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyAoYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGApIGFuZCB1cGRhdGVzIHRoZSBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIChgbmV0dnNjYCkgdG8gdXNlIHRoZW0uIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgbWVtb3J5IGRlY3J5cHRpb24gYW5kIG1hcHBpbmcgZm9yIFZNQnVzIGNoYW5uZWxzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBIeXBlci1WIFZNQnVzIGlzIGVtdWxhdGVkIG9yIG1vY2tlZCAoZS5nLiwgdmlhIHN5emthbGxlcikuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIG5ldyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgR1BBREwgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZfTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1idXNfYWxsb2NfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICAgIFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow9sdrz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 01:19:00 +0000 UTC FinishedAt: 2026-08-07 01:21:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a4ffc59238be84dd1c26bf1c001543e832674fc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HYPERV", "HYPERV_VMBUS", "HYPERV_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a4ffc59238be84dd1c26bf1c001543e832674fc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HYPERV", "HYPERV_VMBUS", "HYPERV_NET" ], "series_id": "d8ec3d92-da9c-4426-a4b3-e8731888d2b9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vmbus_alloc_buffer", "vmbus_free_buffer", "vmbus_establish_gpadl_caller_decrypted" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19mcmVlX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiNmI0NDU4OWZmYTQ1ZWJjMmNkZTZjZWJhZmMwYWI3NGM0MTY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjIwOjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h2L2NoYW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9odi9jaGFubmVsLmNcbkBAIC0xMywxMSAmIzQzOzEzLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9sb2cyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h5cGVydi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXNoeXBlcnYuaFx1MDAzZVxuQEAgLTQwLDYgJiM0Mzs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGh2X2dwYWRsX3NpemUoZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHUzMiBzaXplKVxuIHtcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4mIzQzO1x0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxuIFx0XHRyZXR1cm4gc2l6ZTtcbiBcdGNhc2UgSFZfR1BBRExfUklORzpcbiBcdFx0LyogVGhlIHNpemUgb2YgYSByaW5nYnVmZmVyIG11c3QgYmUgcGFnZS1hbGlnbmVkICovXG5AQCAtMTAwLDYgJiM0MzsxMDMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBodl9ncGFkbF9odnBmbihlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdm9pZCAqa2J1ZmZlcixcbiBcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4mIzQzO1x0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxuIFx0XHRicmVhaztcbiBcdGNhc2UgSFZfR1BBRExfUklORzpcbiBcdFx0aWYgKGkgPT0gMClcbkBAIC00NjAsNyAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4gXHR9XG4gXG4gXHRncGFkbC1cdTAwM2VkZWNyeXB0ZWQgPSAhKChjaGFubmVsLVx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSBcdTAwMjZcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9CVUZGRVIpIHx8XG4tXHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpKTtcbiYjNDM7XHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XG4mIzQzO1x0XHQodHlwZSA9PSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEKSk7XG4gXHRpZiAoZ3BhZGwtXHUwMDNlZGVjcnlwdGVkKSB7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBcJiMzNDtkZWNyeXB0ZWRcJiMzNDsgZmxhZyBiZWluZyB0cnVlIGFzc3VtZXMgdGhhdCBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIHN1Y2NlZWRzLlxuQEAgLTU3NSw3ICYjNDM7NTgwLDcgQEAgc3RhdGljIGludCBfX3ZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiAgKiBAY2hhbm5lbDogYSBjaGFubmVsXG4gICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jXG4gICogQHNpemU6IHBhZ2Utc2l6ZSBtdWx0aXBsZVxuLSAqIEBncGFkbF9oYW5kbGU6IHNvbWUgZnVua3kgdGhpbmdcbiYjNDM7ICogQGdwYWRsOiBvdXRwdXQgZ3BhZGxcbiAgKi9cbiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLFxuIFx0XHRcdCAgdTMyIHNpemUsIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpXG5AQCAtNTg1LDYgJiM0Mzs1OTAsMTc5IEBAIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsIHZvaWQgKmtidWZmZXIsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkIC0gRXN0YWJsaXNoIGEgR1BBREwgZm9yIGEgYnVmZmVyXG4mIzQzOyAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbiYjNDM7ICpcbiYjNDM7ICogQGNoYW5uZWw6IGEgY2hhbm5lbFxuJiM0MzsgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2M7IG11c3QgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlclxuJiM0MzsgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlXG4mIzQzOyAqIEBncGFkbDogb3V0cHV0IGdwYWRsXG4mIzQzOyAqXG4mIzQzOyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlLWVuY3J5cHRpbmcgdGhlIGJ1ZmZlciBiZWZvcmUgZnJlZWluZyBpdC5cbiYjNDM7ICovXG4mIzQzO2ludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHRcdCAgIHZvaWQgKmtidWZmZXIsIHUzMiBzaXplLFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBfX3ZtYnVzX2VzdGFibGlzaF9ncGFkbChjaGFubmVsLCBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVELFxuJiM0MztcdFx0XHRcdCAgICAgICBrYnVmZmVyLCBzaXplLCAwVSwgZ3BhZGwpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxuJiM0MzsgKlxuJiM0MzsgKiBAYWRkcjogYnVmZmVyIGFkZHJlc3MsIG9yIE5VTEwgaWYgbm9uZSB3YXMgYWxsb2NhdGVkIChlLmcuIGNsZWFudXAgZnJvbSBhXG4mIzQzOyAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbilcbiYjNDM7ICogQGNodW5rczogY2h1bmtzIGFycmF5IGZyb20gdm1idXNfYWxsb2NfYnVmZmVyKCksIG9yIE5VTExcbiYjNDM7ICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuJiM0MzsgKlxuJiM0MzsgKiBXaGVuIEBjaHVua3MgaXMgTlVMTCB0aGUgYnVmZmVyIGlzIGEgcGxhaW4gdnphbGxvYygpIGFsbG9jYXRpb24uXG4mIzQzOyAqXG4mIzQzOyAqIE90aGVyd2lzZSB0ZWFyIGRvd24gdGhlIHZtYXAsIGFuZCBmb3IgZWFjaCBjaHVuayByZS1lbmNyeXB0IGFuZCBmcmVlXG4mIzQzOyAqIHRoZSB1bmRlcmx5aW5nIHBhZ2VzLiBBbnkgY2h1bmsgdGhhdCBjYW5ub3QgYmUgcmUtZW5jcnlwdGVkIGlzIGxlYWtlZC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgaTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFjaHVua3MpIHtcbiYjNDM7XHRcdHZmcmVlKGFkZHIpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dnVubWFwKGFkZHIpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjaHVua19jbnQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIHZhZGRyID1cbiYjNDM7XHRcdFx0KHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKGNodW5rc1tpXSk7XG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihwYWdlX2ZvbGlvKGNodW5rc1tpXSkpO1xuJiM0MztcbiYjNDM7XHRcdGlmIChzZXRfbWVtb3J5X2VuY3J5cHRlZCh2YWRkciwgMVUgXHUwMDNjXHUwMDNjIG9yZGVyKSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRfX2ZyZWVfcGFnZXMoY2h1bmtzW2ldLCBvcmRlcik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRrdmZyZWUoY2h1bmtzKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci5cbiYjNDM7ICpcbiYjNDM7ICogQGNoYW5uZWw6IHRoZSBjaGFubmVsIHRoZSBidWZmZXIgd2lsbCBiZSBhdHRhY2hlZCB0b1xuJiM0MzsgKiBAc2l6ZTogcmVxdWVzdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzICh3aWxsIGJlIHJvdW5kZWQgdXAgdG8gUEFHRV9TSVpFKVxuJiM0MzsgKiBAY2h1bmtzX291dDogb24gc3VjY2Vzcywgc2V0IHRvIHRoZSBhcnJheSBvZiB1bmRlcmx5aW5nIGNodW5rcywgb3IgTlVMTCB3aGVuXG4mIzQzOyAqICAgICAgICAgICAgICB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgd2l0aCB2emFsbG9jKClcbiYjNDM7ICogQGNodW5rX2NudF9vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgbnVtYmVyIG9mIGNodW5rc1xuJiM0MzsgKlxuJiM0MzsgKiBCdWZmZXJzIG5vdCByZXF1aXJpbmcgZGVjcnlwdGlvbiBhcmUgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpLlxuJiM0MzsgKlxuJiM0MzsgKiBCdWZmZXJzIHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgYXMgYSBzZXJpZXMgb2ZcbiYjNDM7ICogcGh5c2ljYWxseS1jb250aWd1b3VzIGNodW5rcywgc3RhcnRpbmcgYXQgTUFYX1BBR0VfT1JERVIgYW5kIGZhbGxpbmcgYmFjayB0b1xuJiM0MzsgKiBzbWFsbGVyIG9yZGVycyBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuIEVhY2ggY2h1bmsgaXMgdHJhbnNpdGlvbmVkIHRvXG4mIzQzOyAqIGhvc3QtdmlzaWJsZSB2aWEgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBvbiBpdHMgZGlyZWN0LW1hcCBhZGRyZXNzLCB0aGVuIGFsbFxuJiM0MzsgKiBjaHVua3MgYXJlIGNvbWJpbmVkIGludG8gYSB2aXJ0dWFsbHktY29udGlndW91cyByYW5nZSB2aWEgdm1hcCgpLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRoZSBidWZmZXImIzM5O3MgdmlydHVhbCBhZGRyZXNzLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4mIzQzO1x0XHRcdCB1MzIgc2l6ZSxcbiYjNDM7XHRcdFx0IHN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsXG4mIzQzO1x0XHRcdCB1MzIgKmNodW5rX2NudF9vdXQpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gUEZOX1VQKHNpemUpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nID0gbnJfcGFnZXM7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBwYWdlX2lkeCA9IDA7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKipjaHVua3MgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMO1xuJiM0MztcdGludCBvcmRlciA9IE1BWF9QQUdFX09SREVSO1xuJiM0MztcdHUzMiBjaHVua19jbnQgPSAwO1xuJiM0MztcdHZvaWQgKmFkZHI7XG4mIzQzO1x0dTMyIGk7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0KmNodW5rc19vdXQgPSBOVUxMO1xuJiM0MztcdCpjaHVua19jbnRfb3V0ID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFucl9wYWdlcylcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHQvKiBJZiB0aGUgYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVjcnlwdGVkLCBqdXN0IHVzZSB2emFsbG9jKCkgKi9cbiYjNDM7XHRpZiAoIWh2X2lzX2lzb2xhdGlvbl9zdXBwb3J0ZWQoKSB8fCBjaGFubmVsLVx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSlcbiYjNDM7XHRcdHJldHVybiB2emFsbG9jKG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbiYjNDM7XG4mIzQzO1x0LyogV29yc3QgY2FzZTogZXZlcnkgY2h1bmsgaXMgYSBzaW5nbGUgcGFnZS4gKi9cbiYjNDM7XHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxuJiM0MztcdFx0XHRcdEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTtcbiYjNDM7XHRpZiAoIWNodW5rcylcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHRwYWdlcyA9IGt2bWFsbG9jX2FycmF5KG5yX3BhZ2VzLCBzaXplb2YoKnBhZ2VzKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFwYWdlcylcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAocmVtYWluaW5nKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHRcdGdmcF90IGdmcDtcbiYjNDM7XG4mIzQzO1x0XHRvcmRlciA9IG1pbihvcmRlciwgaWxvZzIocmVtYWluaW5nKSk7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFVzZSBfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9XQVJOIHRvIGF2b2lkIE9PTS1raWxsaW5nLFxuJiM0MztcdFx0ICogYnV0IHRyeSBoYXJkZXIgYXQgb3JkZXIgMCBzaW5jZSB0aGF0IGlzIHRoZSBmaW5hbFxuJiM0MztcdFx0ICogZmFsbGJhY2suXG4mIzQzO1x0XHQgKiBfX0dGUF9DT01QIHN0b3JlcyBvcmRlciBpbmZvcm1hdGlvbiBpbiB0aGUgcGFnZSBmb2xpby5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Z2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk87XG4mIzQzO1x0XHRpZiAob3JkZXIpXG4mIzQzO1x0XHRcdGdmcCB8PSBfX0dGUF9DT01QIHwgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTjtcbiYjNDM7XG4mIzQzO1x0XHRwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShjcHVfdG9fbm9kZShjaGFubmVsLVx1MDAzZXRhcmdldF9jcHUpLFxuJiM0MztcdFx0XHRcdFx0Z2ZwLCBvcmRlcik7XG4mIzQzO1x0XHRpZiAoIXBhZ2UpIHtcbiYjNDM7XHRcdFx0aWYgKCFvcmRlci0tKVxuJiM0MztcdFx0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSksXG4mIzQzO1x0XHRcdFx0XHQgICAxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpO1xuJiM0MztcdFx0aWYgKHJldCkge1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIGZhaWxlZDsgdGhlIHBhZ2Ugc3RhdGUgaXNcbiYjNDM7XHRcdFx0ICogdW5rbm93biBzbyBpdCBtdXN0IGJlIGxlYWtlZCByYXRoZXIgdGhhbiBmcmVlZC5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGdvdG8gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGNodW5rc1tjaHVua19jbnQmIzQzOyYjNDM7XSA9IHBhZ2U7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKDFVIFx1MDAzY1x1MDAzYyBvcmRlcik7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRwYWdlc1twYWdlX2lkeCYjNDM7JiM0MztdID0gcGFnZSAmIzQzOyBpO1xuJiM0MztcbiYjNDM7XHRcdHJlbWFpbmluZyAtPSAxVSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpO1xuJiM0MztcdGlmICghYWRkcilcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoYWRkciwgMCwgbnJfcGFnZXMgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpO1xuJiM0MztcbiYjNDM7XHRrdmZyZWUocGFnZXMpO1xuJiM0MztcdCpjaHVua3Nfb3V0ID0gY2h1bmtzO1xuJiM0MztcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xuJiM0MztcdHJldHVybiBhZGRyO1xuJiM0MztcbiYjNDM7ZXJyOlxuJiM0MztcdGt2ZnJlZShwYWdlcyk7XG4mIzQzO1x0dm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2FsbG9jX2J1ZmZlcik7XG4mIzQzO1xuIC8qKlxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcbiAgKiBrZWVwcyB0cmFjayBvZiB0aGUgbmV4dCBhdmFpbGFibGUgc2xvdCBpbiB0aGUgYXJyYXkuIEluaXRpYWxseSwgZWFjaFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuQEAgLTIyMCw2ICYjNDM7MjIwLDggQEAgc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dDtcbiBcbiBleHRlcm4gdTMyIG5ldHZzY19yaW5nX2J5dGVzO1xuIFxuJiM0MztpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpO1xuJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbiBpbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpO1xuQEAgLTExNTgsNiAmIzQzOzExNjAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXHQvKiBSZWNlaXZlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgYnV0IG1hbmFnZXMgYnkgTmV0VlNQICovXG4gXHR2b2lkICpyZWN2X2J1ZjtcbiBcdHUzMiByZWN2X2J1Zl9zaXplOyAvKiBhbGxvY2F0ZWQgYnl0ZXMgKi9cbiYjNDM7XHRzdHJ1Y3QgcGFnZSAqKnJlY3ZfYnVmX2NodW5rcztcbiYjNDM7XHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xuIFx0c3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTtcbiBcdHUzMiByZWN2X3NlY3Rpb25fY250O1xuIFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xuQEAgLTExNjYsNiAmIzQzOzExNzAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXHQvKiBTZW5kIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgKi9cbiBcdHZvaWQgKnNlbmRfYnVmO1xuIFx0dTMyIHNlbmRfYnVmX3NpemU7XG4mIzQzO1x0c3RydWN0IHBhZ2UgKipzZW5kX2J1Zl9jaHVua3M7XG4mIzQzO1x0dTMyIHNlbmRfYnVmX2NodW5rX2NudDtcbiBcdHN0cnVjdCB2bWJ1c19ncGFkbCBzZW5kX2J1Zl9ncGFkbF9oYW5kbGU7XG4gXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcbiBcdHUzMiBzZW5kX3NlY3Rpb25fc2l6ZTtcbkBAIC0xMTkzLDcgJiM0MzsxMTk5LDcgQEAgc3RydWN0IG5ldHZzY19kZXZpY2Uge1xuIFxuIFx0c3RydWN0IG5ldHZzY19jaGFubmVsIGNoYW5fdGFibGVbVlJTU19DSEFOTkVMX01BWF07XG4gXG4tXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdHN0cnVjdCByY3Vfd29yayByd29yaztcbiB9O1xuIFxuIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbmluZGV4IDU5ZTk1MzQxZjliMWUuLmM1OWYyYTQ0YmFkZjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuY1xuQEAgLTI4LDYgJiM0MzsyOCw4IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aHlwZXJ2X25ldC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7bmV0dnNjX3RyYWNlLmhcJiMzNDtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XG4mIzQzO1xuIC8qXG4gICogU3dpdGNoIHRoZSBkYXRhIHBhdGggZnJvbSB0aGUgc3ludGhldGljIGludGVyZmFjZSB0byB0aGUgVkZcbiAgKiBpbnRlcmZhY2UuXG5AQCAtMTI1LDYgJiM0MzsxMjcsNDcgQEAgc3RhdGljIHZvaWQgbmV0dnNjX3N1YmNoYW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXHRydG5sX3VubG9jaygpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgX19mcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4mIzQzO1xuJiM0MztcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVx1MDAzZXJlY3ZfYnVmLCBudmRldi1cdTAwM2VyZWN2X2J1Zl9jaHVua3MsXG4mIzQzO1x0XHRcdCAgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtfY250KTtcbiYjNDM7XHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cdTAwM2VzZW5kX2J1ZiwgbnZkZXYtXHUwMDNlc2VuZF9idWZfY2h1bmtzLFxuJiM0MztcdFx0XHQgIG52ZGV2LVx1MDAzZXNlbmRfYnVmX2NodW5rX2NudCk7XG4mIzQzO1x0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2bnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS54ZHBfcnhxKTtcbiYjNDM7XHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuJiM0MztcdFx0dmZyZWUobnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS5tcmMuc2xvdHMpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0a2ZyZWUobnZkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJjdV93b3JrICpyd29yayA9IHRvX3JjdV93b3JrKHcpO1xuJiM0MztcbiYjNDM7XHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRuZXR2c2Nfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7aHZfbmV0dnNjXCYjMzQ7LCBXUV9VTkJPVU5ELCAwKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG5ldHZzY193cSA/IDAgOiAtRU5PTUVNO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmN1X2JhcnJpZXIoKTtcbiYjNDM7XHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKVxuIHtcbiBcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuQEAgLTE0MywzNiAmIzQzOzE4NiwxOCBAQCBzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5uZWxfaW5pdF93YWl0KTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzdWJjaGFuX29wZW4pO1xuIFx0SU5JVF9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl93b3JrLCBuZXR2c2Nfc3ViY2hhbl93b3JrKTtcbiYjNDM7XHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG4gXG4gXHRyZXR1cm4gbmV0X2RldmljZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi17XG4tXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXZcbi1cdFx0PSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7XG4tXHRpbnQgaTtcbi1cbi1cdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4tXG4tXHRpZiAoIW52ZGV2LVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpXG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZXJlY3ZfYnVmKTtcbi1cdGlmICghbnZkZXYtXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcbi1cdFx0dmZyZWUobnZkZXYtXHUwMDNlc2VuZF9idWYpO1xuLVx0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykge1xuLVx0XHR4ZHBfcnhxX2luZm9fdW5yZWcoXHUwMDI2bnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS54ZHBfcnhxKTtcbi1cdFx0a2ZyZWUobnZkZXYtXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ubXJjLnNsb3RzKTtcbi1cdH1cbi1cbi1cdGtmcmVlKG52ZGV2KTtcbi19XG4tXG4gc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXG4ge1xuLVx0Y2FsbF9yY3UoXHUwMDI2bnZkZXYtXHUwMDNlcmN1LCBmcmVlX25ldHZzY19kZXZpY2UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRGVmZXIgdGhlIGFjdHVhbCBmcmVlIHRvIHByb2Nlc3MgY29udGV4dDogdnVubWFwKCkgYW5kXG4mIzQzO1x0ICogc2V0X21lbW9yeV9lbmNyeXB0ZWQoKSBjYW5ub3QgcnVuIGZyb20gUkNVIHNvZnRpcnEgY29udGV4dC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsIFx1MDAyNm52ZGV2LVx1MDAzZXJ3b3JrKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5AQCAtMzUxLDcgJiM0MzszNzYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRidWZfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgYnVmX3NpemUsXG4gXHRcdFx0XHQgTkVUVlNDX1JFQ0VJVkVfQlVGRkVSX1NJWkVfTEVHQUNZKTtcbiBcbi1cdG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcbiYjNDM7XHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID1cbiYjNDM7XHRcdHZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtXHUwMDNlY2hhbm5lbCwgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua3MsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua19jbnQpO1xuIFx0aWYgKCFuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgcmVjZWl2ZSBidWZmZXIgb2Ygc2l6ZSAldVxcblwmIzM0OyxcbkBAIC0zNjcsOSAmIzQzOzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuJiM0MztcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cdTAwM2VjaGFubmVsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuIFx0aWYgKHJldCAhPSAwKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHRcJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHJlY2VpdmUgYnVmZmVyJiMzOTtzIGdwYWRsXFxuXCYjMzQ7KTtcbkBAIC00NTcsNyAmIzQzOzQ4NiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHRidWZfc2l6ZSA9IGRldmljZV9pbmZvLVx1MDAzZXNlbmRfc2VjdGlvbnMgKiBkZXZpY2VfaW5mby1cdTAwM2VzZW5kX3NlY3Rpb25fc2l6ZTtcbiBcdGJ1Zl9zaXplID0gcm91bmRfdXAoYnVmX3NpemUsIFBBR0VfU0laRSk7XG4gXG4tXHRuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7XG4mIzQzO1x0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9XG4mIzQzO1x0XHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIGJ1Zl9zaXplLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtzLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcbiBcdGlmICghbmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zikge1xuIFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBzZW5kIGJ1ZmZlciBvZiBzaXplICV1XFxuXCYjMzQ7LFxuIFx0XHRcdCAgIGJ1Zl9zaXplKTtcbkBAIC00NzAsOSAmIzQzOzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuJiM0MztcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cdTAwM2VjaGFubmVsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuIFx0aWYgKHJldCAhPSAwKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHNlbmQgYnVmZmVyJiMzOTtzIGdwYWRsXFxuXCYjMzQ7KTtcbkBAIC0xODYzLDcgJiM0MzsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4gXG4gY2xlYW51cDI6XG4tXHRmcmVlX25ldHZzY19kZXZpY2UoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyY3UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbmV0X2RldmljZSB3YXMgbmV2ZXIgcHVibGlzaGVkLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byB3YWl0IGZvciBhblxuJiM0MztcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0X19mcmVlX25ldHZzY19kZXZpY2UobmV0X2RldmljZSk7XG4gXG4gXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuY1xuaW5kZXggZWU1YWI1Y2ViMmJlMi4uMWQ0M2M3M2ZkNzNmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbkBAIC0yODY3LDEyICYjNDM7Mjg2NywxNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmV0dnNjX2Rydl9leGl0KHZvaWQpXG4ge1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4gXHR2bWJ1c19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZuZXR2c2NfZHJ2KTtcbiYjNDM7XHRuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTtcbiB9XG4gXG4gc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXG4ge1xuIFx0aW50IHJldDtcbiBcbiYjNDM7XHRyZXQgPSBuZXR2c2Nfd29ya3F1ZXVlX2luaXQoKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRpZiAocmluZ19zaXplIFx1MDAzYyBSSU5HX1NJWkVfTUlOKSB7XG4gXHRcdHJpbmdfc2l6ZSA9IFJJTkdfU0laRV9NSU47XG4gXHRcdHByX2luZm8oXCYjMzQ7SW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxuXCYjMzQ7LFxuQEAgLTI4OTAsNiAmIzQzOzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcbiBcbiBlcnJfdm1idXNfcmVnOlxuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4mIzQzO1x0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbkBAIC03MCw3ICYjNDM7NzAsOCBAQFxuICAqL1xuIGVudW0gaHZfZ3BhZGxfdHlwZSB7XG4gXHRIVl9HUEFETF9CVUZGRVIsXG4tXHRIVl9HUEFETF9SSU5HXG4mIzQzO1x0SFZfR1BBRExfUklORyxcbiYjNDM7XHRIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEXG4gfTtcbiBcbiAvKiBTaW5nbGUtcGFnZSBidWZmZXIgKi9cbkBAIC0xMjA1LDkgJiM0MzsxMjA2LDIxIEBAIGV4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICAgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbiYjNDM7ZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHRcdFx0ICB2b2lkICprYnVmZmVyLFxuJiM0MztcdFx0XHRcdFx0XHQgIHUzMiBzaXplLFxuJiM0MztcdFx0XHRcdFx0XHQgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xuJiM0MztcbiBleHRlcm4gaW50IHZtYnVzX3RlYXJkb3duX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbiYjNDM7ZXh0ZXJuIHZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbiYjNDM7XHRcdFx0XHR1MzIgc2l6ZSxcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuJiM0MztcdFx0XHRcdHUzMiAqY2h1bmtfY250X291dCk7XG4mIzQzO1xuJiM0MztleHRlcm4gdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudCk7XG4mIzQzO1xuIHZvaWQgdm1idXNfcmVzZXRfY2hhbm5lbF9jYihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCk7XG4gXG4gZXh0ZXJuIGludCB2bWJ1c19yZWN2cGFja2V0KHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIWVBFUlYmIzM0OywKICAgICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssCiAgICAmIzM0O0hZUEVSVl9ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bWJ1c19hbGxvY19idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZnJlZV9idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgVk1CdXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgZnVuY3Rpb25zIChgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCkgYW5kIHVwZGF0ZXMgdGhlIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgKGBuZXR2c2NgKSB0byB1c2UgdGhlbS4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIEh5cGVyLVYgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIChlLmcuLCB2aWEgc3l6a2FsbGVyKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgbmV3IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBHUEFETCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwMToyMDo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmMKaW5kZXggNjgyMWYyMjUyNDhiMS4uZjQzNzA2MTdkZWFjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9odi9jaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9odi9jaGFubmVsLmMKQEAgLTEzLDExICYjNDM7MTMsMTMgQEAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xvZzIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9oeXBlcnYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91aW8uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zZXRfbWVtb3J5LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9leHBvcnQuaCZndDsKICNpbmNsdWRlICZsdDthc20vcGFnZS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9tc2h5cGVydi5oJmd0OwpAQCAtNDAsNiAmIzQzOzQyLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaHZfZ3BhZGxfc2l6ZShlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdTMyIHNpemUpCiB7CiAJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBIVl9HUEFETF9CVUZGRVI6CiYjNDM7CWNhc2UgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRDoKIAkJcmV0dXJuIHNpemU7CiAJY2FzZSBIVl9HUEFETF9SSU5HOgogCQkvKiBUaGUgc2l6ZSBvZiBhIHJpbmdidWZmZXIgbXVzdCBiZSBwYWdlLWFsaWduZWQgKi8KQEAgLTEwMCw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIGlubGluZSB1NjQgaHZfZ3BhZGxfaHZwZm4oZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHZvaWQgKmtidWZmZXIsCiAKIAlzd2l0Y2ggKHR5cGUpIHsKIAljYXNlIEhWX0dQQURMX0JVRkZFUjoKJiM0MzsJY2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOgogCQlicmVhazsKIAljYXNlIEhWX0dQQURMX1JJTkc6CiAJCWlmIChpID09IDApCkBAIC00NjAsNyAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiAJfQogCiAJZ3BhZGwtJmd0O2RlY3J5cHRlZCA9ICEoKGNoYW5uZWwtJmd0O2NvX2V4dGVybmFsX21lbW9yeSAmYW1wOyZhbXA7IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fAotCQkoY2hhbm5lbC0mZ3Q7Y29fcmluZ19idWZmZXIgJmFtcDsmYW1wOyB0eXBlID09IEhWX0dQQURMX1JJTkcpKTsKJiM0MzsJCShjaGFubmVsLSZndDtjb19yaW5nX2J1ZmZlciAmYW1wOyZhbXA7IHR5cGUgPT0gSFZfR1BBRExfUklORykgfHwKJiM0MzsJCSh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTsKIAlpZiAoZ3BhZGwtJmd0O2RlY3J5cHRlZCkgewogCQkvKgogCQkgKiBUaGUgJiMzNDtkZWNyeXB0ZWQmIzM0OyBmbGFnIGJlaW5nIHRydWUgYXNzdW1lcyB0aGF0IHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgc3VjY2VlZHMuCkBAIC01NzUsNyAmIzQzOzU4MCw3IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiAgKiBAY2hhbm5lbDogYSBjaGFubmVsCiAgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2MKICAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGUKLSAqIEBncGFkbF9oYW5kbGU6IHNvbWUgZnVua3kgdGhpbmcKJiM0MzsgKiBAZ3BhZGw6IG91dHB1dCBncGFkbAogICovCiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLAogCQkJICB1MzIgc2l6ZSwgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbCkKQEAgLTU4NSw2ICYjNDM7NTkwLDE3OSBAQCBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLCB2b2lkICprYnVmZmVyLAogfQogRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsKTsKIAomIzQzOy8qCiYjNDM7ICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXIKJiM0MzsgKiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGVjcnlwdGVkIGJ5IHRoZSBjYWxsZXIuCiYjNDM7ICoKJiM0MzsgKiBAY2hhbm5lbDogYSBjaGFubmVsCiYjNDM7ICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jOyBtdXN0IGFscmVhZHkgYmUgZGVjcnlwdGVkIGJ5IHRoZSBjYWxsZXIKJiM0MzsgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlCiYjNDM7ICogQGdwYWRsOiBvdXRwdXQgZ3BhZGwKJiM0MzsgKgomIzQzOyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlLWVuY3J5cHRpbmcgdGhlIGJ1ZmZlciBiZWZvcmUgZnJlZWluZyBpdC4KJiM0MzsgKi8KJiM0MztpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiYjNDM7CQkJCQkgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSwKJiM0MzsJCQkJCSAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpCiYjNDM7ewomIzQzOwlyZXR1cm4gX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoY2hhbm5lbCwgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRCwKJiM0MzsJCQkJICAgICAgIGtidWZmZXIsIHNpemUsIDBVLCBncGFkbCk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLgomIzQzOyAqCiYjNDM7ICogQGFkZHI6IGJ1ZmZlciBhZGRyZXNzLCBvciBOVUxMIGlmIG5vbmUgd2FzIGFsbG9jYXRlZCAoZS5nLiBjbGVhbnVwIGZyb20gYQomIzQzOyAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbikKJiM0MzsgKiBAY2h1bmtzOiBjaHVua3MgYXJyYXkgZnJvbSB2bWJ1c19hbGxvY19idWZmZXIoKSwgb3IgTlVMTAomIzQzOyAqIEBjaHVua19jbnQ6IG51bWJlciBvZiBlbnRyaWVzIGluIEBjaHVua3MKJiM0MzsgKgomIzQzOyAqIFdoZW4gQGNodW5rcyBpcyBOVUxMIHRoZSBidWZmZXIgaXMgYSBwbGFpbiB2emFsbG9jKCkgYWxsb2NhdGlvbi4KJiM0MzsgKgomIzQzOyAqIE90aGVyd2lzZSB0ZWFyIGRvd24gdGhlIHZtYXAsIGFuZCBmb3IgZWFjaCBjaHVuayByZS1lbmNyeXB0IGFuZCBmcmVlCiYjNDM7ICogdGhlIHVuZGVybHlpbmcgcGFnZXMuIEFueSBjaHVuayB0aGF0IGNhbm5vdCBiZSByZS1lbmNyeXB0ZWQgaXMgbGVha2VkLgomIzQzOyAqLwomIzQzO3ZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpCiYjNDM7ewomIzQzOwl1MzIgaTsKJiM0MzsKJiM0MzsJaWYgKCFjaHVua3MpIHsKJiM0MzsJCXZmcmVlKGFkZHIpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CXZ1bm1hcChhZGRyKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGNodW5rX2NudDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXVuc2lnbmVkIGxvbmcgdmFkZHIgPQomIzQzOwkJCSh1bnNpZ25lZCBsb25nKXBhZ2VfYWRkcmVzcyhjaHVua3NbaV0pOwomIzQzOwkJdW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIocGFnZV9mb2xpbyhjaHVua3NbaV0pKTsKJiM0MzsKJiM0MzsJCWlmIChzZXRfbWVtb3J5X2VuY3J5cHRlZCh2YWRkciwgMVUgJmx0OyZsdDsgb3JkZXIpKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJX19mcmVlX3BhZ2VzKGNodW5rc1tpXSwgb3JkZXIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWt2ZnJlZShjaHVua3MpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci4KJiM0MzsgKgomIzQzOyAqIEBjaGFubmVsOiB0aGUgY2hhbm5lbCB0aGUgYnVmZmVyIHdpbGwgYmUgYXR0YWNoZWQgdG8KJiM0MzsgKiBAc2l6ZTogcmVxdWVzdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzICh3aWxsIGJlIHJvdW5kZWQgdXAgdG8gUEFHRV9TSVpFKQomIzQzOyAqIEBjaHVua3Nfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIGFycmF5IG9mIHVuZGVybHlpbmcgY2h1bmtzLCBvciBOVUxMIHdoZW4KJiM0MzsgKiAgICAgICAgICAgICAgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpCiYjNDM7ICogQGNodW5rX2NudF9vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgbnVtYmVyIG9mIGNodW5rcwomIzQzOyAqCiYjNDM7ICogQnVmZmVycyBub3QgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKS4KJiM0MzsgKgomIzQzOyAqIEJ1ZmZlcnMgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCBhcyBhIHNlcmllcyBvZgomIzQzOyAqIHBoeXNpY2FsbHktY29udGlndW91cyBjaHVua3MsIHN0YXJ0aW5nIGF0IE1BWF9QQUdFX09SREVSIGFuZCBmYWxsaW5nIGJhY2sgdG8KJiM0MzsgKiBzbWFsbGVyIG9yZGVycyBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuIEVhY2ggY2h1bmsgaXMgdHJhbnNpdGlvbmVkIHRvCiYjNDM7ICogaG9zdC12aXNpYmxlIHZpYSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIG9uIGl0cyBkaXJlY3QtbWFwIGFkZHJlc3MsIHRoZW4gYWxsCiYjNDM7ICogY2h1bmtzIGFyZSBjb21iaW5lZCBpbnRvIGEgdmlydHVhbGx5LWNvbnRpZ3VvdXMgcmFuZ2UgdmlhIHZtYXAoKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogdGhlIGJ1ZmZlciYjMzk7cyB2aXJ0dWFsIGFkZHJlc3MsIG9yIE5VTEwgb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0Mzt2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsCiYjNDM7CQkJIHUzMiBzaXplLAomIzQzOwkJCSBzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LAomIzQzOwkJCSB1MzIgKmNodW5rX2NudF9vdXQpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gUEZOX1VQKHNpemUpOwomIzQzOwl1bnNpZ25lZCBsb25nIHJlbWFpbmluZyA9IG5yX3BhZ2VzOwomIzQzOwl1bnNpZ25lZCBsb25nIHBhZ2VfaWR4ID0gMDsKJiM0MzsJc3RydWN0IHBhZ2UgKipjaHVua3MgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gTlVMTDsKJiM0MzsJaW50IG9yZGVyID0gTUFYX1BBR0VfT1JERVI7CiYjNDM7CXUzMiBjaHVua19jbnQgPSAwOwomIzQzOwl2b2lkICphZGRyOwomIzQzOwl1MzIgaTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJKmNodW5rc19vdXQgPSBOVUxMOwomIzQzOwkqY2h1bmtfY250X291dCA9IDA7CiYjNDM7CiYjNDM7CWlmICghbnJfcGFnZXMpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJLyogSWYgdGhlIGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlY3J5cHRlZCwganVzdCB1c2UgdnphbGxvYygpICovCiYjNDM7CWlmICghaHZfaXNfaXNvbGF0aW9uX3N1cHBvcnRlZCgpIHx8IGNoYW5uZWwtJmd0O2NvX2V4dGVybmFsX21lbW9yeSkKJiM0MzsJCXJldHVybiB2emFsbG9jKG5yX3BhZ2VzICZsdDsmbHQ7IFBBR0VfU0hJRlQpOwomIzQzOwomIzQzOwkvKiBXb3JzdCBjYXNlOiBldmVyeSBjaHVuayBpcyBhIHNpbmdsZSBwYWdlLiAqLwomIzQzOwljaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLAomIzQzOwkJCQlHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CiYjNDM7CWlmICghY2h1bmtzKQomIzQzOwkJZ290byBlcnI7CiYjNDM7CiYjNDM7CXBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkobnJfcGFnZXMsIHNpemVvZigqcGFnZXMpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwYWdlcykKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwomIzQzOwl3aGlsZSAocmVtYWluaW5nKSB7CiYjNDM7CQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJCWdmcF90IGdmcDsKJiM0MzsKJiM0MzsJCW9yZGVyID0gbWluKG9yZGVyLCBpbG9nMihyZW1haW5pbmcpKTsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBVc2UgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTiB0byBhdm9pZCBPT00ta2lsbGluZywKJiM0MzsJCSAqIGJ1dCB0cnkgaGFyZGVyIGF0IG9yZGVyIDAgc2luY2UgdGhhdCBpcyB0aGUgZmluYWwKJiM0MzsJCSAqIGZhbGxiYWNrLgomIzQzOwkJICogX19HRlBfQ09NUCBzdG9yZXMgb3JkZXIgaW5mb3JtYXRpb24gaW4gdGhlIHBhZ2UgZm9saW8uCiYjNDM7CQkgKi8KJiM0MzsJCWdmcCA9IEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPOwomIzQzOwkJaWYgKG9yZGVyKQomIzQzOwkJCWdmcCB8PSBfX0dGUF9DT01QIHwgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTjsKJiM0MzsKJiM0MzsJCXBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKGNwdV90b19ub2RlKGNoYW5uZWwtJmd0O3RhcmdldF9jcHUpLAomIzQzOwkJCQkJZ2ZwLCBvcmRlcik7CiYjNDM7CQlpZiAoIXBhZ2UpIHsKJiM0MzsJCQlpZiAoIW9yZGVyLS0pCiYjNDM7CQkJCWdvdG8gZXJyOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0ID0gc2V0X21lbW9yeV9kZWNyeXB0ZWQoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpLAomIzQzOwkJCQkJICAgMVUgJmx0OyZsdDsgb3JkZXIpOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCS8qCiYjNDM7CQkJICogc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBmYWlsZWQ7IHRoZSBwYWdlIHN0YXRlIGlzCiYjNDM7CQkJICogdW5rbm93biBzbyBpdCBtdXN0IGJlIGxlYWtlZCByYXRoZXIgdGhhbiBmcmVlZC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlnb3RvIGVycjsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWNodW5rc1tjaHVua19jbnQmIzQzOyYjNDM7XSA9IHBhZ2U7CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgKDFVICZsdDsmbHQ7IG9yZGVyKTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJcGFnZXNbcGFnZV9pZHgmIzQzOyYjNDM7XSA9IHBhZ2UgJiM0MzsgaTsKJiM0MzsKJiM0MzsJCXJlbWFpbmluZyAtPSAxVSAmbHQ7Jmx0OyBvcmRlcjsKJiM0MzsJfQomIzQzOwomIzQzOwlhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpOwomIzQzOwlpZiAoIWFkZHIpCiYjNDM7CQlnb3RvIGVycjsKJiM0MzsKJiM0MzsJbWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzICZsdDsmbHQ7IFBBR0VfU0hJRlQpOwomIzQzOwomIzQzOwlrdmZyZWUocGFnZXMpOwomIzQzOwkqY2h1bmtzX291dCA9IGNodW5rczsKJiM0MzsJKmNodW5rX2NudF9vdXQgPSBjaHVua19jbnQ7CiYjNDM7CXJldHVybiBhZGRyOwomIzQzOwomIzQzO2VycjoKJiM0MzsJa3ZmcmVlKHBhZ2VzKTsKJiM0MzsJdm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfYWxsb2NfYnVmZmVyKTsKJiM0MzsKIC8qKgogICogcmVxdWVzdF9hcnJfaW5pdCAtIEFsbG9jYXRlcyBtZW1vcnkgZm9yIHRoZSByZXF1ZXN0b3IgYXJyYXkuIEVhY2ggc2xvdAogICoga2VlcHMgdHJhY2sgb2YgdGhlIG5leHQgYXZhaWxhYmxlIHNsb3QgaW4gdGhlIGFycmF5LiBJbml0aWFsbHksIGVhY2gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oCmluZGV4IDczOTdjNjkzZjk4NGEuLjQ4NDEzNjdmZGFiMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaApAQCAtMjIwLDYgJiM0MzsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0OwogCiBleHRlcm4gdTMyIG5ldHZzY19yaW5nX2J5dGVzOwogCiYjNDM7aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTsKJiM0Mzt2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTsKIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJCQkJCWNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmluZm8pOwogaW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KTsKQEAgLTExNTgsNiAmIzQzOzExNjAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7CiAJLyogUmVjZWl2ZSBidWZmZXIgYWxsb2NhdGVkIGJ5IHVzIGJ1dCBtYW5hZ2VzIGJ5IE5ldFZTUCAqLwogCXZvaWQgKnJlY3ZfYnVmOwogCXUzMiByZWN2X2J1Zl9zaXplOyAvKiBhbGxvY2F0ZWQgYnl0ZXMgKi8KJiM0MzsJc3RydWN0IHBhZ2UgKipyZWN2X2J1Zl9jaHVua3M7CiYjNDM7CXUzMiByZWN2X2J1Zl9jaHVua19jbnQ7CiAJc3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTsKIAl1MzIgcmVjdl9zZWN0aW9uX2NudDsKIAl1MzIgcmVjdl9zZWN0aW9uX3NpemU7CkBAIC0xMTY2LDYgJiM0MzsxMTcwLDggQEAgc3RydWN0IG5ldHZzY19kZXZpY2UgewogCS8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqLwogCXZvaWQgKnNlbmRfYnVmOwogCXUzMiBzZW5kX2J1Zl9zaXplOwomIzQzOwlzdHJ1Y3QgcGFnZSAqKnNlbmRfYnVmX2NodW5rczsKJiM0MzsJdTMyIHNlbmRfYnVmX2NodW5rX2NudDsKIAlzdHJ1Y3Qgdm1idXNfZ3BhZGwgc2VuZF9idWZfZ3BhZGxfaGFuZGxlOwogCXUzMiBzZW5kX3NlY3Rpb25fY250OwogCXUzMiBzZW5kX3NlY3Rpb25fc2l6ZTsKQEAgLTExOTMsNyAmIzQzOzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7CiAKIAlzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTsKIAotCXN0cnVjdCByY3VfaGVhZCByY3U7CiYjNDM7CXN0cnVjdCByY3Vfd29yayByd29yazsKIH07CiAKIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYwppbmRleCA1OWU5NTM0MWY5YjFlLi5jNTlmMmE0NGJhZGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jCkBAIC0yOCw2ICYjNDM7MjgsOCBAQAogI2luY2x1ZGUgJiMzNDtoeXBlcnZfbmV0LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtuZXR2c2NfdHJhY2UuaCYjMzQ7CiAKJiM0MztzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTsKJiM0MzsKIC8qCiAgKiBTd2l0Y2ggdGhlIGRhdGEgcGF0aCBmcm9tIHRoZSBzeW50aGV0aWMgaW50ZXJmYWNlIHRvIHRoZSBWRgogICogaW50ZXJmYWNlLgpAQCAtMTI1LDYgJiM0MzsxMjcsNDcgQEAgc3RhdGljIHZvaWQgbmV0dnNjX3N1YmNoYW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAJcnRubF91bmxvY2soKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldikKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlrZnJlZShudmRldi0mZ3Q7ZXh0ZW5zaW9uKTsKJiM0MzsKJiM0MzsJdm1idXNfZnJlZV9idWZmZXIobnZkZXYtJmd0O3JlY3ZfYnVmLCBudmRldi0mZ3Q7cmVjdl9idWZfY2h1bmtzLAomIzQzOwkJCSAgbnZkZXYtJmd0O3JlY3ZfYnVmX2NodW5rX2NudCk7CiYjNDM7CXZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LSZndDtzZW5kX2J1ZiwgbnZkZXYtJmd0O3NlbmRfYnVmX2NodW5rcywKJiM0MzsJCQkgIG52ZGV2LSZndDtzZW5kX2J1Zl9jaHVua19jbnQpOwomIzQzOwliaXRtYXBfZnJlZShudmRldi0mZ3Q7c2VuZF9zZWN0aW9uX21hcCk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykgewomIzQzOwkJeGRwX3J4cV9pbmZvX3VucmVnKCZhbXA7bnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ueGRwX3J4cSk7CiYjNDM7CQlrZnJlZShudmRldi0mZ3Q7Y2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7CiYjNDM7CQl2ZnJlZShudmRldi0mZ3Q7Y2hhbl90YWJsZVtpXS5tcmMuc2xvdHMpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWtmcmVlKG52ZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdykKJiM0Mzt7CiYjNDM7CXN0cnVjdCByY3Vfd29yayAqcndvcmsgPSB0b19yY3Vfd29yayh3KTsKJiM0MzsKJiM0MzsJX19mcmVlX25ldHZzY19kZXZpY2UoY29udGFpbmVyX29mKHJ3b3JrLCBzdHJ1Y3QgbmV0dnNjX2RldmljZSwgcndvcmspKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKQomIzQzO3sKJiM0MzsJbmV0dnNjX3dxID0gYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7aHZfbmV0dnNjJiMzNDssIFdRX1VOQk9VTkQsIDApOwomIzQzOwomIzQzOwlyZXR1cm4gbmV0dnNjX3dxID8gMCA6IC1FTk9NRU07CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpCiYjNDM7ewomIzQzOwlyY3VfYmFycmllcigpOwomIzQzOwlkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKQogewogCXN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlOwpAQCAtMTQzLDM2ICYjNDM7MTg2LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqYWxsb2NfbmV0X2RldmljZSh2b2lkKQogCWluaXRfY29tcGxldGlvbigmYW1wO25ldF9kZXZpY2UtJmd0O2NoYW5uZWxfaW5pdF93YWl0KTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7bmV0X2RldmljZS0mZ3Q7c3ViY2hhbl9vcGVuKTsKIAlJTklUX1dPUksoJmFtcDtuZXRfZGV2aWNlLSZndDtzdWJjaGFuX3dvcmssIG5ldHZzY19zdWJjaGFuX3dvcmspOwomIzQzOwlJTklUX1JDVV9XT1JLKCZhbXA7bmV0X2RldmljZS0mZ3Q7cndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7CiAKIAlyZXR1cm4gbmV0X2RldmljZTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKLXsKLQlzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYKLQkJPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7Ci0JaW50IGk7Ci0KLQlrZnJlZShudmRldi0mZ3Q7ZXh0ZW5zaW9uKTsKLQotCWlmICghbnZkZXYtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpCi0JCXZmcmVlKG52ZGV2LSZndDtyZWN2X2J1Zik7Ci0JaWYgKCFudmRldi0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZCkKLQkJdmZyZWUobnZkZXYtJmd0O3NlbmRfYnVmKTsKLQliaXRtYXBfZnJlZShudmRldi0mZ3Q7c2VuZF9zZWN0aW9uX21hcCk7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDsgVlJTU19DSEFOTkVMX01BWDsgaSYjNDM7JiM0MzspIHsKLQkJeGRwX3J4cV9pbmZvX3VucmVnKCZhbXA7bnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ueGRwX3J4cSk7Ci0JCWtmcmVlKG52ZGV2LSZndDtjaGFuX3RhYmxlW2ldLnJlY3ZfYnVmKTsKLQkJdmZyZWUobnZkZXYtJmd0O2NoYW5fdGFibGVbaV0ubXJjLnNsb3RzKTsKLQl9Ci0KLQlrZnJlZShudmRldik7Ci19Ci0KIHN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KQogewotCWNhbGxfcmN1KCZhbXA7bnZkZXYtJmd0O3JjdSwgZnJlZV9uZXR2c2NfZGV2aWNlKTsKJiM0MzsJLyoKJiM0MzsJICogRGVmZXIgdGhlIGFjdHVhbCBmcmVlIHRvIHByb2Nlc3MgY29udGV4dDogdnVubWFwKCkgYW5kCiYjNDM7CSAqIHNldF9tZW1vcnlfZW5jcnlwdGVkKCkgY2Fubm90IHJ1biBmcm9tIFJDVSBzb2Z0aXJxIGNvbnRleHQuCiYjNDM7CSAqLwomIzQzOwlxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsICZhbXA7bnZkZXYtJmd0O3J3b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCkBAIC0zNTEsNyAmIzQzOzM3NiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJCWJ1Zl9zaXplID0gbWluX3QodW5zaWduZWQgaW50LCBidWZfc2l6ZSwKIAkJCQkgTkVUVlNDX1JFQ0VJVkVfQlVGRkVSX1NJWkVfTEVHQUNZKTsKIAotCW5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7CiYjNDM7CW5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmID0KJiM0MzsJCXZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtJmd0O2NoYW5uZWwsIGJ1Zl9zaXplLAomIzQzOwkJCQkgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2NodW5rcywKJiM0MzsJCQkJICAgJmFtcDtuZXRfZGV2aWNlLSZndDtyZWN2X2J1Zl9jaHVua19jbnQpOwogCWlmICghbmV0X2RldmljZS0mZ3Q7cmVjdl9idWYpIHsKIAkJbmV0ZGV2X2VycihuZGV2LAogCQkJICAgJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgcmVjZWl2ZSBidWZmZXIgb2Ygc2l6ZSAldVxuJiMzNDssCkBAIC0zNjcsOSAmIzQzOzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJICogY2hhbm5lbC4gIE5vdGU6IFRoaXMgY2FsbCB1c2VzIHRoZSB2bWJ1cyBjb25uZWN0aW9uIHJhdGhlcgogCSAqIHRoYW4gdGhlIGNoYW5uZWwgdG8gZXN0YWJsaXNoIHRoZSBncGFkbCBoYW5kbGUuCiAJICovCi0JcmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsKGRldmljZS0mZ3Q7Y2hhbm5lbCwgbmV0X2RldmljZS0mZ3Q7cmVjdl9idWYsCi0JCQkJICAgIGJ1Zl9zaXplLAotCQkJCSAgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7CiYjNDM7CXJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS0mZ3Q7Y2hhbm5lbCwKJiM0MzsJCQkJCQkgICAgIG5ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmLAomIzQzOwkJCQkJCSAgICAgYnVmX3NpemUsCiYjNDM7CQkJCQkJICAgICAmYW1wO25ldF9kZXZpY2UtJmd0O3JlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7CiAJaWYgKHJldCAhPSAwKSB7CiAJCW5ldGRldl9lcnIobmRldiwKIAkJCSYjMzQ7dW5hYmxlIHRvIGVzdGFibGlzaCByZWNlaXZlIGJ1ZmZlciYjMzk7cyBncGFkbFxuJiMzNDspOwpAQCAtNDU3LDcgJiM0Mzs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLAogCWJ1Zl9zaXplID0gZGV2aWNlX2luZm8tJmd0O3NlbmRfc2VjdGlvbnMgKiBkZXZpY2VfaW5mby0mZ3Q7c2VuZF9zZWN0aW9uX3NpemU7CiAJYnVmX3NpemUgPSByb3VuZF91cChidWZfc2l6ZSwgUEFHRV9TSVpFKTsKIAotCW5ldF9kZXZpY2UtJmd0O3NlbmRfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7CiYjNDM7CW5ldF9kZXZpY2UtJmd0O3NlbmRfYnVmID0KJiM0MzsJCXZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtJmd0O2NoYW5uZWwsIGJ1Zl9zaXplLAomIzQzOwkJCQkgICAmYW1wO25ldF9kZXZpY2UtJmd0O3NlbmRfYnVmX2NodW5rcywKJiM0MzsJCQkJICAgJmFtcDtuZXRfZGV2aWNlLSZndDtzZW5kX2J1Zl9jaHVua19jbnQpOwogCWlmICghbmV0X2RldmljZS0mZ3Q7c2VuZF9idWYpIHsKIAkJbmV0ZGV2X2VycihuZGV2LCAmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBzZW5kIGJ1ZmZlciBvZiBzaXplICV1XG4mIzM0OywKIAkJCSAgIGJ1Zl9zaXplKTsKQEAgLTQ3MCw5ICYjNDM7NTAyLDEwIEBAIHN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSwKIAkgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyCiAJICogdGhhbiB0aGUgY2hhbm5lbCB0byBlc3RhYmxpc2ggdGhlIGdwYWRsIGhhbmRsZS4KIAkgKi8KLQlyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLSZndDtjaGFubmVsLCBuZXRfZGV2aWNlLSZndDtzZW5kX2J1ZiwKLQkJCQkgICAgYnVmX3NpemUsCi0JCQkJICAgICZhbXA7bmV0X2RldmljZS0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlKTsKJiM0MzsJcmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLSZndDtjaGFubmVsLAomIzQzOwkJCQkJCSAgICAgbmV0X2RldmljZS0mZ3Q7c2VuZF9idWYsCiYjNDM7CQkJCQkJICAgICBidWZfc2l6ZSwKJiM0MzsJCQkJCQkgICAgICZhbXA7bmV0X2RldmljZS0mZ3Q7c2VuZF9idWZfZ3BhZGxfaGFuZGxlKTsKIAlpZiAocmV0ICE9IDApIHsKIAkJbmV0ZGV2X2VycihuZGV2LAogCQkJICAgJiMzNDt1bmFibGUgdG8gZXN0YWJsaXNoIHNlbmQgYnVmZmVyJiMzOTtzIGdwYWRsXG4mIzM0Oyk7CkBAIC0xODYzLDcgJiM0MzsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsCiAJbmV0aWZfbmFwaV9kZWwoJmFtcDtuZXRfZGV2aWNlLSZndDtjaGFuX3RhYmxlWzBdLm5hcGkpOwogCiBjbGVhbnVwMjoKLQlmcmVlX25ldHZzY19kZXZpY2UoJmFtcDtuZXRfZGV2aWNlLSZndDtyY3UpOwomIzQzOwkvKgomIzQzOwkgKiBuZXRfZGV2aWNlIHdhcyBuZXZlciBwdWJsaXNoZWQsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHdhaXQgZm9yIGFuCiYjNDM7CSAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuCiYjNDM7CSAqLwomIzQzOwlfX2ZyZWVfbmV0dnNjX2RldmljZShuZXRfZGV2aWNlKTsKIAogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYwppbmRleCBlZTVhYjVjZWIyYmUyLi4xZDQzYzczZmQ3M2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmMKQEAgLTI4NjcsMTIgJiM0MzsyODY3LDE3IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBuZXR2c2NfZHJ2X2V4aXQodm9pZCkKIHsKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcigmYW1wO25ldHZzY19uZXRkZXZfbm90aWZpZXIpOwogCXZtYnVzX2RyaXZlcl91bnJlZ2lzdGVyKCZhbXA7bmV0dnNjX2Rydik7CiYjNDM7CW5ldHZzY193b3JrcXVldWVfZGVzdHJveSgpOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZCkKIHsKIAlpbnQgcmV0OwogCiYjNDM7CXJldCA9IG5ldHZzY193b3JrcXVldWVfaW5pdCgpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAlpZiAocmluZ19zaXplICZsdDsgUklOR19TSVpFX01JTikgewogCQlyaW5nX3NpemUgPSBSSU5HX1NJWkVfTUlOOwogCQlwcl9pbmZvKCYjMzQ7SW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXG4mIzM0OywKQEAgLTI4OTAsNiAmIzQzOzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZCkKIAogZXJyX3ZtYnVzX3JlZzoKIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcigmYW1wO25ldHZzY19uZXRkZXZfbm90aWZpZXIpOwomIzQzOwluZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaAppbmRleCA5NjRmMWJlODE1MGM1Li5mODQzZWUwZWZhMjJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmgKQEAgLTcwLDcgJiM0Mzs3MCw4IEBACiAgKi8KIGVudW0gaHZfZ3BhZGxfdHlwZSB7CiAJSFZfR1BBRExfQlVGRkVSLAotCUhWX0dQQURMX1JJTkcKJiM0MzsJSFZfR1BBRExfUklORywKJiM0MzsJSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRAogfTsKIAogLyogU2luZ2xlLXBhZ2UgYnVmZmVyICovCkBAIC0xMjA1LDkgJiM0MzsxMjA2LDIxIEBAIGV4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLAogCQkJCSAgICAgIHUzMiBzaXplLAogCQkJCSAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwogCiYjNDM7ZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKJiM0MzsJCQkJCQkgIHZvaWQgKmtidWZmZXIsCiYjNDM7CQkJCQkJICB1MzIgc2l6ZSwKJiM0MzsJCQkJCQkgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwomIzQzOwogZXh0ZXJuIGludCB2bWJ1c190ZWFyZG93bl9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKIAkJCQkgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpOwogCiYjNDM7ZXh0ZXJuIHZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwKJiM0MzsJCQkJdTMyIHNpemUsCiYjNDM7CQkJCXN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsCiYjNDM7CQkJCXUzMiAqY2h1bmtfY250X291dCk7CiYjNDM7CiYjNDM7ZXh0ZXJuIHZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpOwomIzQzOwogdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTsKIAogZXh0ZXJuIGludCB2bWJ1c19yZWN2cGFja2V0KHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTcwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSHlwZXItViBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEh5cGVyLVYgY2hhbm5lbCBhbmQgbmV0dnNjIGRyaXZlcnMuIEl0JiMzOTtzIGludHJvZHVjaW5nIHNvbWUgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCYjMzk7cyB1c2luZyB0aGVzZSBmdW5jdGlvbnMgd2l0aGluIGBuZXR2c2NfaW5pdF9idWZgIGluc3RlYWQgb2YgdGhlIG9sZCBtZXRob2QuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24sIHBvdGVudGlhbGx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIGFkZHJlc3Npbmcgc29tZSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSB3b3JrcXVldWUgZm9yIGBuZXR2c2NgIHRvIGRlZmVyIGRldmljZSBmcmVlaW5nIGJlY2F1c2Ugb2YgdGhlIHJlc3RyaWN0aW9ucyBhcm91bmQgYHZ1bm1hcCgpYCBhbmQgYHNldF9tZW1vcnlfZW5jcnlwdGVkKClgIHdpdGhpbiB0aGUgUkNVIHNvZnRpcnEgY29udGV4dC4gU21hcnQuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGVzdGluZyB0aGlzLiBIeXBlci1WIGRyaXZlcnMgYXJlLCBvZiBjb3Vyc2UsIHVzdWFsbHkgcmVsZXZhbnQgd2hlbiBydW5uaW5nICpvbiogSHlwZXItVi4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoZXNlIGNoYW5nZXMgYXJlICpyZWFjaGFibGUqIGluIG1vcmUgY29tbW9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLiBJdCYjMzk7cyBwb3NzaWJsZSB0byBlbXVsYXRlIHNvbWUgSHlwZXItViBmZWF0dXJlcyBpbiBRRU1VLCBsaWtlIFZNQnVzLCBidXQgZG9lcyB0aGF0IGV4dGVuZGVkIHRvIG5ldHZzYz8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gdG8gc2VlIGlmIGBDT05GSUdfSFlQRVJWYCBhbmQgYENPTkZJR19IWVBFUlZfTkVUYCBhcmUgdGVzdGFibGUgb3IgZW5hYmxlZCBpbiBteSB0YXJnZXQgZW52aXJvbm1lbnQuCgpTeXprYWxsZXIgaXMgdGhlIGZpcnN0IHRvb2wgdGhhdCBjb21lcyB0byBtaW5kIGZvciBmdXp6aW5nIHRoaXMuIEkga25vdyBpdCBoYXMgc29tZSB2bWJ1cyBzdXBwb3J0LCBidXQgSSBuZWVkIHRvIGRpdmUgZGVlcGVyLiBBaCwgaGVyZSB3ZSBnbywgc3l6a2FsbGVyIGhhcyBgc3lzL2xpbnV4L3NvY2tldF9oeXBlcnYudHh0YCBhbmQgYHN5cy9saW51eC92bWJ1cy50eHRgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgbmV0dnNjYCBhY3R1YWxseSBjb3ZlcmVkPyBMZXQgbWUgY2hlY2sgcXVpY2tseSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgbmV0dnNjLiBUaGF0JiMzOTtsbCBiZSB0aGUgY2xpbmNoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0dnNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDI1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTk9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9tYXJ2ZWxsL29jdGVvbnR4MiBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dDo4MjA6bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9taWNyb3NvZnQvbmV0dnNjIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzY1xuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQtODIxLW5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbmV0cm9ub21lL25mcCBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L25ldHJvbm9tZS9uZnBcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdWlvLWhvd3RvLnJzdD02ODY9bGlrZSB0aGlzOjpcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0LTY4Ny1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0OjY4ODogICAgICAgICAgZWNobyAtbiBlZDk2MzY5NC1lODQ3LTRiMmEtODVhZi1iYzljZmMxMWQ2ZjMgXHUwMDNlIC9zeXMvYnVzL3ZtYnVzL2RyaXZlcnMvaHZfbmV0dnNjL3VuYmluZFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3QtNjg5LSAgICAgICAgICBlY2hvIC1uIGVkOTYzNjk0LWU4NDctNGIyYS04NWFmLWJjOWNmYzExZDZmMyBcdTAwM2UgL3N5cy9idXMvdm1idXMvZHJpdmVycy91aW9faHZfZ2VuZXJpYy9iaW5kXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdD04PUNvbnRlbnRzOlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbmRleC5yc3QtNDgtICAgbWV0YS9mYm5pY1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2luZGV4LnJzdDo0OTogICBtaWNyb3NvZnQvbmV0dnNjXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTUwLSAgIG11Y3NlL3JucGdiZVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdD0xNj1DaGVja3N1bSBvZmZsb2FkXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTctLS0tLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0OjE4OiAgVGhlIG5ldHZzYyBkcml2ZXIgc3VwcG9ydHMgY2hlY2tzdW0gb2ZmbG9hZCBhcyBsb25nIGFzIHRoZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTE5LSAgSHlwZXItViBob3N0IHZlcnNpb24gZG9lcy4gV2luZG93cyBTZXJ2ZXIgMjAxNiBhbmQgQXp1cmVcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q9Njc9U1ItSU9WIHN1cHBvcnRcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzEtICBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgZGV2aWNlIGlzIHBhc3NlZCB0byB0aGUgZ3Vlc3QgYXMgYSBQQ0lcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3MjogIGRldmljZS4gSW4gdGhpcyBjYXNlLCBib3RoIGEgc3ludGhldGljIChuZXR2c2MpIGFuZCBWRiBkZXZpY2UgYXJlXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzMtICB2aXNpYmxlIGluIHRoZSBndWVzdCBPUyBhbmQgYm90aCBOSUMmIzM5O3MgaGF2ZSB0aGUgc2FtZSBNQUMgYWRkcmVzcy5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC03NC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3NTogIFRoZSBWRiBpcyBlbnNsYXZlZCBieSBuZXR2c2MgZGV2aWNlLiAgVGhlIG5ldHZzYyBkcml2ZXIgd2lsbCB0cmFuc3BhcmVudGx5XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzYtICBzd2l0Y2ggdGhlIGRhdGEgcGF0aCB0byB0aGUgVkYgd2hlbiBpdCBpcyBhdmFpbGFibGUgYW5kIHVwLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc3LSAgTmV0d29yayBzdGF0ZSAoYWRkcmVzc2VzLCBmaXJld2FsbCwgZXRjKSBzaG91bGQgYmUgYXBwbGllZCBvbmx5IHRvIHRoZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0Ojc4OiAgbmV0dnNjIGRldmljZTsgdGhlIHNsYXZlIGRldmljZSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGluXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzktICBtb3N0IGNhc2VzLiAgVGhlIGV4Y2VwdGlvbnMgYXJlIGlmIHNvbWUgc3BlY2lhbCBxdWV1ZSBkaXNjaXBsaW5lIG9yXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTEwMD1YRFAgc3VwcG9ydFxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMDYtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTA3OiAgaHZfbmV0dnNjIHN1cHBvcnRzIFhEUCBpbiBuYXRpdmUgbW9kZSwgYW5kIHRyYW5zcGFyZW50bHkgc2V0cyB0aGUgWERQXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTA4LSAgcHJvZ3JhbSBvbiB0aGUgYXNzb2NpYXRlZCBWRiBOSUMgYXMgd2VsbC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMDktXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTEwOiAgU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBzeW50aGV0aWMgTklDIChuZXR2c2MpIHByb3BhZ2F0ZXMgdG9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC0xMTEtICBWRiBOSUMgYXV0b21hdGljYWxseS4gU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBWRiBOSUMgZGlyZWN0bHlcbi0tXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0PTIxMj1Ud28gVk1CdXMgZGV2aWNlcyBkZXBlbmQgb24gdGhlIEh5cGVyLVYgaG9zdCB0byBkbyBETUEgZGF0YSB0cmFuc2ZlcnM6XG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0OjIxMzpzdG9ydnNjIGZvciBkaXNrIEkvTyBhbmQgbmV0dnNjIGZvciBuZXR3b3JrIEkvTy4gc3RvcnZzYyB1c2VzIHRoZSBub3JtYWxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3QtMjE0LUxpbnV4IGtlcm5lbCBETUEgQVBJcywgYW5kIHNvIGJvdW5jZSBidWZmZXJpbmcgdGhyb3VnaCBkZWNyeXB0ZWQgc3dpb3RsYlxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTU6bWVtb3J5IGlzIGRvbmUgaW1wbGljaXRseS4gbmV0dnNjIGhhcyB0d28gbW9kZXMgZm9yIGRhdGEgdHJhbnNmZXJzLiBUaGUgZmlyc3RcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3QtMjE2LW1vZGUgZ29lcyB0aHJvdWdoIHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHNwYWNlIHRoYXQgaXMgZXhwbGljaXRseSBhbGxvY2F0ZWRcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3Q6MjE3OmJ5IHRoZSBuZXR2c2MgZHJpdmVyLCBhbmQgaXMgdXNlZCBmb3IgbW9zdCBzbWFsbGVyIHBhY2tldHMuIFRoZXNlIHNlbmQgYW5kXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxOC1yZWNlaXZlIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkZWNyeXB0ZWQgYnkgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoKS4gQmVjYXVzZVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTk6dGhlIG5ldHZzYyBkcml2ZXIgZXhwbGljaXRseSBjb3BpZXMgcGFja2V0cyB0by9mcm9tIHRoZXNlIGJ1ZmZlcnMsIHRoZVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdC0yMjAtZXF1aXZhbGVudCBvZiBib3VuY2UgYnVmZmVyaW5nIGJldHdlZW4gZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQgbWVtb3J5IGlzXG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi92bWJ1cy5yc3Q9NDc9dGhlIGRldmljZSBpbiB0aGUgZ3Vlc3QgVk0uICBGb3IgZXhhbXBsZSwgdGhlIExpbnV4IGRyaXZlciBmb3IgdGhlXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L3ZtYnVzLnJzdDo0ODpzeW50aGV0aWMgTklDIGlzIHJlZmVycmVkIHRvIGFzIFwmIzM0O25ldHZzY1wmIzM0OyBhbmQgdGhlIExpbnV4IGRyaXZlciBmb3JcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0LTQ5LXRoZSBzeW50aGV0aWMgU0NTSSBjb250cm9sbGVyIGlzIFwmIzM0O3N0b3J2c2NcJiMzNDsuICBUaGVzZSBkcml2ZXJzIGNvbnRhaW5cbi0tXG5NQUlOVEFJTkVSUz0xMTk3OD1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9taWNyb3NvZnQsdm1idXMueWFtbFxuTUFJTlRBSU5FUlM6MTE5Nzk6RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdFxuTUFJTlRBSU5FUlMtMTE5ODAtRjpcdERvY3VtZW50YXRpb24vdmlydC9oeXBlcnZcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYz0xMDc2PXZvaWQgdm1idXNfcmVzZXRfY2hhbm5lbF9jYihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbClcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDg2LVx0ICpcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwODc6XHQgKiB2bWJ1c19jaGFuX3NjaGVkKCkgbWlnaHQgY2FsbCB0aGUgbmV0dnNjIGRyaXZlciBjYWxsYmFjayBmdW5jdGlvblxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA4OC1cdCAqIHRoYXQgZW5kcyB1cCBzY2hlZHVsaW5nIE5BUEkgd29yayB0aGF0IGFjY2Vzc2VzIHRoZSByaW5nIGJ1ZmZlci5cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDkwLVx0ICogYW5kIHRoYXQgdGhlIGNoYW5uZWwgcmluZyBidWZmZXIgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjY2Vzc2VkLCBjZi5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwOTE6XHQgKiB0aGUgY2FsbHMgdG8gbmFwaV9kaXNhYmxlKCkgaW4gbmV0dnNjX2RldmljZV9yZW1vdmUoKS5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTEwOTItXHQgKi9cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jPTU5OT1zdGF0aWMgdm9pZCB2bWJ1c19wcm9jZXNzX29mZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdjaGFubmVsKVxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtNjk4LVx0ICogd29ya3F1ZXVlcyB0byBhdm9pZCBwb3NzaWJsZSBkZWFkbG9jaywgZS5nLiBpbiBzeW5jLXByb2JpbmcgbW9kZSxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6Njk5Olx0ICogTklDMSYjMzk7cyBuZXR2c2Nfc3ViY2hhbl93b3JrKCkgY2FuIHJhY2Ugd2l0aCBOSUMyJiMzOTtzIG5ldHZzY19wcm9iZSgpIC1cdTAwM2VcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtNzAwLVx0ICogcnRubF9sb2NrKCksIGFuZCBjYXVzZXMgZGVhZGxvY2s6IHRoZSBmb3JtZXIgZ2V0cyB0aGUgcnRubF9sb2NrXG4tLVxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYz0xMzEwPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2h2c29ja19kZXZpY2VfdW5yZWdpc3Rlcik7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYy0xMzMwLSAqIE5JQyBjaGFubmVsIGlzIG9wZW5lZCAob25jZSBpdCBrbm93cyB0aGUgZ3Vlc3QgY2FuIHN1cHBvcnQgaXQsIHZpYSB0aGVcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6MTMzMTogKiBzcmlvdiBiaXQgaW4gdGhlIG5ldHZzYyBwcm90b2NvbCkuXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTEzMzItICovXG4tLVxuZHJpdmVycy9odi92bWJ1c19kcnYuYz0yMDM3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qga29ial90eXBlIHZtYnVzX2NoYW5fa3R5cGUgPSB7XG4tLVxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU1LSAqIGlzIHJ1bm5pbmcuXG5kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jOjIwNTY6ICogRm9yIGV4YW1wbGUsIEhWX05JQyBkZXZpY2UgaXMgdXNlZCBlaXRoZXIgYnkgdWlvX2h2X2dlbmVyaWMgb3IgaHZfbmV0dnNjIGF0IGFueSBnaXZlbiBwb2ludCBvZlxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU3LSAqIHRpbWUsIGFuZCBcJiMzNDtyaW5nXCYjMzQ7IHN5c2ZzIGlzIG5lZWRlZCBvbmx5IHdoZW4gdWlvX2h2X2dlbmVyaWMgaXMgYm91bmQgdG8gdGhhdCBkZXZpY2UuIFRvIGF2b2lkXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM4NTI9c3RydWN0IG5ldF9kZXZpY2UgKm1hbmFfZ2V0X3ByaW1hcnlfbmV0ZGV2KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM4NjM6XHQvKiBJZiBtYW5hIGlzIHVzZWQgaW4gbmV0dnNjLCB0aGUgdXBwZXIgbmV0ZGV2aWNlIHNob3VsZCBiZSByZXR1cm5lZC4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODY0LVx0bmRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoYWMtXHUwMDNlcG9ydHNbcG9ydF9pbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICYjNDM7PSBodl9uZXR2c2Mub1xuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9oeXBlcnYvTWFrZWZpbGU6NDpodl9uZXR2c2MteSA6PSBuZXR2c2NfZHJ2Lm8gbmV0dnNjLm8gcm5kaXNfZmlsdGVyLm8gbmV0dnNjX3RyYWNlLm8gbmV0dnNjX2JwZi5vXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xMzc9c3RydWN0IG5kaXNfcGt0XzgwMjFxX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQ5LS8qXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE1MDogKiBSZXByZXNlbnQgbmV0dnNjIHBhY2tldCB3aGljaCBjb250YWlucyAxIFJORElTIGFuZCAxIGV0aGVybmV0IGZyYW1lXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1MS0gKiB3aXRoaW4gdGhlIFJORElTXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNTUtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE1NjpzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCB7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1Ny1cdC8qIEJvb2trZWVwaW5nIHN0dWZmICovXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE3NDpzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTc1LVx0dW5zaWduZWQgY2hhciBtYWNfYWRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTIxNj1zdHJ1Y3QgbmRpc19vZmZsb2FkX3BhcmFtcztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE3OnN0cnVjdCBuZXR2c2NfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMTg6c3RydWN0IG5ldHZzY19jaGFubmVsO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMTktc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjE6ZXh0ZXJuIHUzMiBuZXR2c2NfcmluZ19ieXRlcztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjM6aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI0OnZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjU6c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI2Olx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI3OmludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyODp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyOTppbnQgbmV0dnNjX3NlbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjMwOlx0XHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzEtXHRcdHN0cnVjdCBybmRpc19tZXNzYWdlICpybmRpc19tc2csXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzQtXHRcdGJvb2wgeGRwX3R4KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjM1OnZvaWQgbmV0dnNjX2xpbmtzdGF0dXNfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjM2LVx0XHRcdFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJlc3AsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTIzNy1cdFx0XHRcdHZvaWQgKmRhdGEsIHUzMiBkYXRhX2J1Zmxlbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzODppbnQgbmV0dnNjX3JlY3ZfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjM5Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0MDpcdFx0XHQgc3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4pO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDE6dm9pZCBuZXR2c2NfY2hhbm5lbF9jYih2b2lkICpjb250ZXh0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQyOmludCBuZXR2c2NfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNDMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NDp2b2lkIG5ldHZzY194ZHBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NTp1MzIgbmV0dnNjX3J1bl94ZHAoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBuZXR2c2NfY2hhbm5lbCAqbnZjaGFuLFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNDYtXHRcdCAgIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQ3OnVuc2lnbmVkIGludCBuZXR2c2NfeGRwX2ZyYWdsZW4odW5zaWduZWQgaW50IGxlbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0ODpzdHJ1Y3QgYnBmX3Byb2cgKm5ldHZzY194ZHBfZ2V0KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0OTppbnQgbmV0dnNjX3hkcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNTAtXHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUxOlx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTI6aW50IG5ldHZzY192Zl9zZXR4ZHAoc3RydWN0IG5ldF9kZXZpY2UgKnZmX25ldGRldiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUzOmludCBuZXR2c2NfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTQ6aW50IG5ldHZzY19uZG94ZHBfeG1pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgaW50IG4sXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI1NS1cdFx0ICAgICAgIHN0cnVjdCB4ZHBfZnJhbWUgKipmcmFtZXMsIHUzMiBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNTc9aW50IHJuZGlzX3NldF9zdWJjaGFubmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTg6XHRcdFx0IHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU5Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZfaW5mbyk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MDppbnQgcm5kaXNfZmlsdGVyX29wZW4oc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjYxOmludCBybmRpc19maWx0ZXJfY2xvc2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjYyOnN0cnVjdCBuZXR2c2NfZGV2aWNlICpybmRpc19maWx0ZXJfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MzpcdFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqaW5mbyk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NDp2b2lkIHJuZGlzX2ZpbHRlcl91cGRhdGUoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjY1LXZvaWQgcm5kaXNfZmlsdGVyX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNjY6XHRcdFx0XHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNjctaW50IHJuZGlzX2ZpbHRlcl9zZXRfcnNzX3BhcmFtKHN0cnVjdCBybmRpc19kZXZpY2UgKnJkZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNjk9aW50IHJuZGlzX2ZpbHRlcl9zZXRfb2ZmbG9hZF9wYXJhbXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI3MDpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3MS1cdFx0XHRcdCAgICBzdHJ1Y3QgbmRpc19vZmZsb2FkX3BhcmFtcyAqcmVxX29mZmxvYWRzKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MjcyPWludCBybmRpc19maWx0ZXJfcmVjZWl2ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjczOlx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6Mjc0Olx0XHRcdCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc1LVx0XHRcdCB2b2lkICpkYXRhLCB1MzIgYnVmbGVuKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc2LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNzc6aW50IHJuZGlzX2ZpbHRlcl9zZXRfZGV2aWNlX21hYyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc4LVx0XHRcdFx0Y29uc3QgY2hhciAqbWFjKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyODA6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm52X2RldiwgYm9vbCB2Zik7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI4MS1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTg0Nj1zdHJ1Y3QgbnZzcF9tZXNzYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTkxMS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTEyOnN0YXRpYyBpbmxpbmUgdTMyIG5ldHZzY19ycXN0b3Jfc2l6ZSh1bnNpZ25lZCBsb25nIHJpbmdieXRlcylcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTEzLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTkyOT1zdHJ1Y3QgbXVsdGlfc2VuZF9kYXRhIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjsgLyogc2tiIGNvbnRhaW5pbmcgdGhlIHBrdCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5MzE6XHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGt0OyAvKiBuZXR2c2MgcGt0IHBlbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMyLVx0dTMyIGNvdW50OyAvKiBjb3VudGVyIG9mIGJhdGNoZWQgcGFja2V0cyAqL1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9OTQ4PXN0cnVjdCBudnNjX3JzYyB7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjMtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk2NDpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3R4IHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTY1LVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NzAtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk3MTpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTcyLVx0dTY0IHBhY2tldHM7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODEtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk4MjpzdHJ1Y3QgbmV0dnNjX2V0aHRvb2xfc3RhdHMge1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODMtXHR1bnNpZ25lZCBsb25nIHR4X3NjYXR0ZXJlZDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk5NS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTk2OnN0cnVjdCBuZXR2c2NfZXRodG9vbF9wY3B1X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTk3LVx0dTY0ICAgICByeF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAwNi1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAwNzpzdHJ1Y3QgbmV0dnNjX3ZmX3BjcHVfc3RhdHMge1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDA4LVx0dTY0ICAgICByeF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAxNjpzdHJ1Y3QgbmV0dnNjX3JlY29uZmlnIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNy1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMjgtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwMjk6LyogVGhlIGNvbnRleHQgb2YgdGhlIG5ldHZzYyBkZXZpY2UgICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzAtc3RydWN0IG5ldF9kZXZpY2VfY29udGV4dCB7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDMyLVx0c3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzMzpcdC8qIG5ldHZzY19kZXZpY2UgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzNDpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlIF9fcmN1ICpudmRldjtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzNTpcdC8qIGxpc3Qgb2YgbmV0dnNjIG5ldF9kZXZpY2VzICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzYtXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDU5LVx0dTMyIGw0X2hhc2g7IC8qIEw0IGhhc2ggc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA2MDpcdHN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyBldGhfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNjEtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYzLVx0c3RydWN0IG5ldF9kZXZpY2UgX19yY3UgKnZmX25ldGRldjtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA2NDpcdHN0cnVjdCBuZXR2c2NfdmZfcGNwdV9zdGF0cyBfX3BlcmNwdSAqdmZfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNjUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHZmX3Rha2VvdmVyO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA3Ny1cdC8qIFVzZWQgdG8gdGVtcG9yYXJpbHkgc2F2ZSB0aGUgY29uZmlnIGluZm8gYWNyb3NzIGhpYmVybmF0aW9uICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwNzg6XHRzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpzYXZlZF9uZXR2c2NfZGV2X2luZm87XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNzktfTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4MC1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA4MTp2b2lkIG5ldHZzY192Zm5zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4Mi1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODUtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwODY6c3RhdGljIGlubGluZSB1MzIgbmV0dnNjX2dldF9oYXNoKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODctXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQgKm5kYylcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzItLyogUGVyIGNoYW5uZWwgZGF0YSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTMzOnN0cnVjdCBuZXR2c2NfY2hhbm5lbCB7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzQtXHRzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbDtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTEzNTpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTM2LVx0dm9pZCAqcmVjdl9idWY7IC8qIGJ1ZmZlciB0byBjb3B5IHBhY2tldHMgb3V0IGZyb20gdGhlIHJlY2VpdmUgYnVmZmVyICovXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTQ3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTQ4Olx0c3RydWN0IG5ldHZzY19zdGF0c190eCB0eF9zdGF0cztcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0OTpcdHN0cnVjdCBuZXR2c2Nfc3RhdHNfcnggcnhfc3RhdHM7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExNTAtfTtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE1MjovKiBQZXIgbmV0dnNjIGRldmljZSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTUzOnN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1NC1cdHUzMiBudnNwX3ZlcnNpb247XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTg4LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMTg5Olx0dTMyIG5ldHZzY19nc29fbWF4X3NpemU7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTAtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTk5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMjAwOlx0c3RydWN0IG5ldHZzY19jaGFubmVsIGNoYW5fdGFibGVbVlJTU19DSEFOTkVMX01BWF07XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEyMDEtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xNzc3PXN0cnVjdCBybmRpc19tZXNzYWdlIHtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjQtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjE4MjU6dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTgyNjpcdFx0ICAgICAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjctI2VuZGlmIC8qIF9IWVBFUlZfTkVUX0ggKi9cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjgtI2luY2x1ZGUgXCYjMzQ7aHlwZXJ2X25ldC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mjk6I2luY2x1ZGUgXCYjMzQ7bmV0dnNjX3RyYWNlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMTpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYtICovXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mzc6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgdmYpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzgte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00MC1cdHN0cnVjdCBodl9kZXZpY2UgKmRldiA9IG5ldF9kZXZpY2VfY3R4LVx1MDAzZWRldmljZV9jdHg7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NDE6XHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZfZGV2ID0gcnRubF9kZXJlZmVyZW5jZShuZXRfZGV2aWNlX2N0eC1cdTAwM2VudmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDItXHRzdHJ1Y3QgbnZzcF9tZXNzYWdlICppbml0X3BrdCA9IFx1MDAyNm52X2Rldi1cdTAwM2VjaGFubmVsX2luaXRfcGt0O1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05OC0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDAte1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMTpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldiA9XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAyOlx0XHRjb250YWluZXJfb2Yodywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHN1YmNoYW5fd29yayk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzLVx0c3RydWN0IHJuZGlzX2RldmljZSAqcmRldjtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTI5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEzMDpzdGF0aWMgdm9pZCBfX2ZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTMxLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1MTpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Mi17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1NC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTU6XHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ni19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1ODppbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU5LXtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjA6XHRuZXR2c2Nfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7aHZfbmV0dnNjXCYjMzQ7LCBXUV9VTkJPVU5ELCAwKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjEtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYyOlx0cmV0dXJuIG5ldHZzY193cSA/IDAgOiAtRU5PTUVNO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2My19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2NTp2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2Ni17XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY3LVx0cmN1X2JhcnJpZXIoKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjg6XHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2OS19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcwLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzIte1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MzpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3NC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzU6XHRuZXRfZGV2aWNlID0ga3phbGxvY19vYmooc3RydWN0IG5ldHZzY19kZXZpY2UpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3Ni1cdGlmICghbmV0X2RldmljZSlcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3LVx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXN1YmNoYW5fb3Blbik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg4Olx0SU5JVF9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl93b3JrLCBuZXR2c2Nfc3ViY2hhbl93b3JrKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODk6XHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTkwLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTk0OnN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5NS17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5OS1cdCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMDpcdHF1ZXVlX3JjdV93b3JrKG5ldHZzY193cSwgXHUwMDI2bnZkZXYtXHUwMDNlcndvcmspO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTIwMS19XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjAyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyMDQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjUyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI1MzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyNTQ6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMwNDpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA1Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMwNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzI0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNTpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzI2Olx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM0NjppbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ3LXtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDg6XHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbiA9IFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlY2hhbl90YWJsZVtxX2lkeF07XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ5LVx0aW50IG5vZGUgPSBjcHVfdG9fbm9kZShudmNoYW4tXHUwMDNlY2hhbm5lbC1cdTAwM2V0YXJnZXRfY3B1KTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MDpzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzYxOlx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MjpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZpY2VfaW5mbylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNjMte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00NjYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjQ2NzpcdFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbaV07XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDY4LVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00ODAtXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfY29tcGxldGlvbl9jbnQgPSBuZXRfZGV2aWNlLVx1MDAzZXJlY3Zfc2VjdGlvbl9jbnQgJiM0MzsgMTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo0ODE6XHRyZXQgPSBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3JpbmcobmV0X2RldmljZSwgMCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNTc2LWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NTc3Olx0bmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU3ODpcdG5ldHZzY19yZXZva2Vfc2VuZF9idWYoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzk6XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU4MDpcdG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNTgxLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjU4ODpcdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy01ODktXHRcdFx0ICAgICAgc3RydWN0IG52c3BfbWVzc2FnZSAqaW5pdF9wYWNrZXQsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTY0OC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NDk6c3RhdGljIGludCBuZXR2c2NfY29ubmVjdF92c3Aoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY1MDpcdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NTE6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqZGV2aWNlX2luZm8pXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNjUyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzEyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxMzpcdHJldCA9IG5ldHZzY19pbml0X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIGRldmljZV9pbmZvKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTQtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOS0vKlxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMDogKiBuZXR2c2NfZGV2aWNlX3JlbW92ZSAtIENhbGxiYWNrIHdoZW4gdGhlIHJvb3QgYnVzIGRldmljZSBpcyByZW1vdmVkXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIxLSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMjp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjMte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjUtXHRzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0ICpuZXRfZGV2aWNlX2N0eCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyNjpcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzI3LVx0XHQ9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXHUwMDNlbnZkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzMtXHQgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MzQ6XHRuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzM1LVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNjIFZFUlNJT05fV0lOMTApXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzM2Olx0XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczNy1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3Mzg6XHRuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzM5LVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNjIFZFUlNJT05fV0lOMTApXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzQwOlx0XHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc0MS1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzcyLVx0aWYgKHZtYnVzX3Byb3RvX3ZlcnNpb24gXHUwMDNlPSBWRVJTSU9OX1dJTjEwKSB7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzczOlx0XHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3NDpcdFx0bmV0dnNjX3RlYXJkb3duX3NlbmRfZ3BhZGwoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3Ny1cdC8qIFJlbGVhc2UgYWxsIHJlc291cmNlcyAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3ODpcdGZyZWVfbmV0dnNjX2RldmljZV9yY3UobmV0X2RldmljZSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzc5LX1cbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc4NDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2ZyZWVfc2VuZF9zbG90KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cdFx0XHRcdFx0IHUzMiBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3OTE6XHRcdFx0XHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzkyLVx0XHRcdFx0ICAgIHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTEtXHRpZiAobGlrZWx5KHNrYikpIHtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTI6XHRcdHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXRcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTM6XHRcdFx0PSAoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKilza2ItXHUwMDNlY2I7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE0LVx0XHR1MzIgc2VuZF9pbmRleCA9IHBhY2tldC1cdTAwM2VzZW5kX2J1Zl9pbmRleDtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTU6XHRcdHN0cnVjdCBuZXR2c2Nfc3RhdHNfdHggKnR4X3N0YXRzO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgxNi1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTctXHRcdGlmIChzZW5kX2luZGV4ICE9IE5FVFZTQ19JTlZBTElEX0lOREVYKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjgxODpcdFx0XHRuZXR2c2NfZnJlZV9zZW5kX3Nsb3QobmV0X2RldmljZSwgc2VuZF9pbmRleCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE5LVx0XHRxX2lkeCA9IHBhY2tldC1cdTAwM2VxX2lkeDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODI3LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjgyODpcdFx0bmV0dnNjX2RtYV91bm1hcChuZGV2X2N0eC1cdTAwM2VkZXZpY2VfY3R4LCBwYWNrZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyOS1cdFx0bmFwaV9jb25zdW1lX3NrYihza2IsIGJ1ZGdldCk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfY29tcGxldGlvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTE6XHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NTItXHRcdFx0XHQgICBzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqaW5jb21pbmdfY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTQ1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk0NjpcdFx0bmV0dnNjX3NlbmRfdHhfY29tcGxldGUobmRldiwgbmV0X2RldmljZSwgaW5jb21pbmdfY2hhbm5lbCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDctXHRcdFx0XHRcdGRlc2MsIGJ1ZGdldCk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2Mi1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NjM6c3RhdGljIHUzMiBuZXR2c2NfZ2V0X25leHRfc2VuZF9zZWN0aW9uKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlKVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3NS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBzZWN0aW9uX2luZGV4LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3OC1cdFx0XHRcdCAgICB1MzIgcGVuZF9zaXplLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk3OTpcdFx0XHRcdCAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4MC1cdFx0XHRcdCAgICBzdHJ1Y3Qgcm5kaXNfbWVzc2FnZSAqcm5kaXNfbXNnLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDEyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMTM6dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDE0Olx0XHQgICAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0KVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMTUte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDMxLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMzI6LyogbmV0dnNjX2RtYV9tYXAgLSBNYXAgc3dpb3RsYiBib3VuY2UgYnVmZmVyIHdpdGggZGF0YSBwYWdlIG9mXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzMy0gKiBwYWNrZXQgc2VudCBieSB2bWJ1c19zZW5kcGFja2V0X3BhZ2VidWZmZXIoKSBpbiB0aGUgSXNvbGF0aW9uXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzUtICpcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDM2OiAqIEluIGlzb2xhdGlvbiBWTSwgbmV0dnNjIHNlbmQgYnVmZmVyIGhhcyBiZWVuIG1hcmtlZCB2aXNpYmxlIHRvXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzNy0gKiBob3N0IGFuZCBzbyB0aGUgZGF0YSBjb3BpZWQgdG8gc2VuZCBidWZmZXIgZG9lc24mIzM5O3QgbmVlZCB0byB1c2Vcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzOS0gKiBtYXkgbm90IGJlIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBhbmQgc28gdGhlc2UgcGFnZXMgbmVlZCB0byBiZVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwNDA6ICogbWFwcGVkIHdpdGggc3dpb3RsYiBib3VuY2UgYnVmZmVyLiBuZXR2c2NfZG1hX21hcCgpIGlzIHRvIGRvXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA0MS0gKiB0aGF0LiBUaGUgcGZucyBpbiB0aGUgc3RydWN0IGh2X3BhZ2VfYnVmZmVyIG5lZWQgdG8gYmUgY29udmVydGVkXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNDktICovXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTA1MDpzdGF0aWMgaW50IG5ldHZzY19kbWFfbWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2RldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUxOlx0XHRcdCAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDUyLVx0XHRcdCAgc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYilcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA5OS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTAwOnN0YXRpYyBpbmxpbmUgdm9pZCBuZXR2c2NfYnVpbGRfbXBiX2FycmF5KHN0cnVjdCBodl9wYWdlX2J1ZmZlciAqcGIsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEwMS1cdFx0XHRcdHUzMiBwYWdlX2J1ZmZlcl9jb3VudCxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTI1OnN0YXRpYyBpbmxpbmUgaW50IG5ldHZzY19zZW5kX3BrdChcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzk2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIE5ldHZzYyBpbiBhIEZ1enppbmcgQ29udGV4dCoqCgpPa2F5LCBzbyB0aGUgb3V0cHV0IGNvbmZpcm1zIGBuZXR2c2NgIGlzIGluZGVlZCB0aGUgSHlwZXItViBuZXR3b3JrIGRldmljZSBkcml2ZXIuIEdvb2QuIEkgc2VlIGl0JiMzOTtzIGxpbmtlZCB0byBgQ09ORklHX0hZUEVSVl9ORVRgLCB3aGljaCBpcyBleHBlY3RlZC4gTm93LCBTeXprYWxsZXIgYWxyZWFkeSBoYXMgZGVzY3JpcHRpb25zIGZvciBWTUJ1cyBhbmQgYHNvY2tldF9oeXBlcnZgLCBidXQgd2hhdCBhYm91dCBgbmV0dnNjYD8gSXQmIzM5O3MgYSBzdGFuZGFyZCBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IHJlZ2lzdGVycyBhIGBuZXRkZXZgLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBBbnkgc3RhbmRhcmQgbmV0d29yayBmdXp6aW5nIOKAkyBzZW5kaW5nIHBhY2tldHMsIGBpb2N0bGBzLCBgZXRodG9vbGAsIFhEUCDigJMgd2lsbCBwb3RlbnRpYWxseSBoaXQgaXQgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50LgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZGV2aWNlIHByZXNlbnQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGNhbiBlbXVsYXRlIFZNQnVzIGFuZCBzb21lIFZNQnVzIGRldmljZXMuIFdhaXQsIGRvZXMgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZSBgbmV0dnNjYCBvdXQgb2YgdGhlIGJveD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gQWN0dWFsbHksIGxvb2tzIGxpa2UgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIGBuZXR2c2NgIGRpcmVjdGx5LiBJdCBlbXVsYXRlcyBgdm1idXNgLCBidXQgdHlwaWNhbGx5IG9ubHkgYSBmZXcgZGV2aWNlcy4gT3IgbWF5YmUgaXQgKmRvZXMqPwoKSGFuZyBvbiwgU3l6a2FsbGVyIGhhcyBgc3lzL2xpbnV4L3ZtYnVzLnR4dGAgd2hpY2ggbWVhbnMgd2UgY2FuIGNyZWF0ZSBzeW50aGV0aWMgVk1CdXMgZGV2aWNlcyEgVGhhdCYjMzk7cyBpdCEgU3l6a2FsbGVyIGNhbiBpbmplY3QgVk1CdXMgZGV2aWNlcyBhbmQgbWVzc2FnZXMgdXNpbmcgYC9kZXYvdm1idXMvaHZfdWlvYCBvciBzaW1pbGFyIG1ldGhvZHMsIG9yIGV2ZW4gbW9jayB0aGUgVk1CdXMgaG9zdCBlbnRpcmVseS4gRG9lcyBzeXprYWxsZXIgdXNlIGBzeXpfdm1idXNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcGF0Y2ggbWVudGlvbnMgYSAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7IC0gc28gc3l6Ym90IGZvdW5kIGEgd2F5IHRvIHRyaWdnZXIgc29tZXRoaW5nIG9yIGl0JiMzOTtzIGp1c3QgYSBwYXRjaCBiZWluZyB0ZXN0ZWQuCgpOb3csIHRoYXQgcHJvbXB0OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBJZiBTeXprYWxsZXIgY2FuIHJlYWNoIGl0LCB0aGVuIGl0ICppcyogcmVhY2hhYmxlLCByaWdodD8gU28gY2FuIHdlIHJlYWNoIGBuZXR2c2NgIHRoZW4/IExldCYjMzk7cyB0cmFjZSBpdCBhbmQgc2VlIGlmIHdlIGNhbiByZWFjaCBgdm1idXNfYWxsb2NfYnVmZmVyYC4KCmBuZXR2c2NfaW5pdF9idWZgIGNhbGxzIGB2bWJ1c19hbGxvY19idWZmZXJgLiBgbmV0dnNjX2luaXRfYnVmYCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBuZXR2c2NfY29ubmVjdF92c3BgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYG5ldHZzY19kZXZpY2VfYWRkYCwgd2hpY2ggaXMgZmluYWxseSBjYWxsZWQgZnJvbSBgbmV0dnNjX3Byb2JlYC4gYG5ldHZzY19wcm9iZWAgaXMgdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIFZNQnVzIGRldmljZS4gSWYgYSBWTUJ1cyBkZXZpY2Ugd2l0aCB0aGUgYG5ldHZzY2AgR1VJRCBpcyBvZmZlcmVkLCBgbmV0dnNjX3Byb2JlYCB3aWxsIHJ1bi4gVGhhdCYjMzk7cyB0aGUgY2hhaW4uIFNvLCBjYW4gd2Ugb2ZmZXIgVk1CdXMgZGV2aWNlcyBpbiBRRU1VPyBZZXMsIFN5emthbGxlciBoYXMgYSB3YXkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBvciBtYXliZSBRRU1VIHByb3ZpZGVzIG9uZT8KClRoZSBwcm9tcHQgc3RhdGVzOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IEJ1dCBgbmV0dnNjYCBpcyBhIHN5bnRoZXRpYyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyLiBJdCBydW5zIG9uIHRvcCBvZiBWTUJ1cy4gVk1CdXMgaXMgc29mdHdhcmUtZW11bGF0ZWQgaW4gUUVNVS9LVk0gKHRvIHNvbWUgZXh0ZW50KSBvciBTeXprYWxsZXIgY2FuIG1vY2sgaXQuIFRoZXJlZm9yZSBpdCBpcyBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgbGV0IG1lIGxvb2sgYXQgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaDoKCiogICBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgCiogICBgdm1idXNfZnJlZV9idWZmZXJgCiogICBgdm1idXNfYWxsb2NfYnVmZmVyYAoqICAgYG5ldHZzY193b3JrcXVldWVfaW5pdGAKKiAgIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgCgpUaGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvaHYvY2hhbm5lbC5jYCBhbmQgYGRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuY2AuIFRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOiBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBhbmQgYHZtYnVzX2FsbG9jX2J1ZmZlcmAuIExldCYjMzk7cyBjaGVjayBgdm1idXNfYWxsb2NfYnVmZmVyYCBhbmQgYHZtYnVzX2ZyZWVfYnVmZmVyYC4gSSBzZWUgdGhleSBhcmUgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9odi9jaGFubmVsLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvY2hhbm5lbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvY2hhbm5lbC5jPTYxMT1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCk7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxuZHJpdmVycy9odi9jaGFubmVsLmM6NjE0OiAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTUtICpcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTctICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjE4OiAqIEBjaHVua3M6IGNodW5rcyBhcnJheSBmcm9tIHZtYnVzX2FsbG9jX2J1ZmZlcigpLCBvciBOVUxMXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTktICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jPTY0OT1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XG4tLVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjUxLS8qKlxuZHJpdmVycy9odi9jaGFubmVsLmM6NjUyOiAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NTMtICpcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NjktICovXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NzA6dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjcxLVx0XHRcdCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjMtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NzY0OkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2FsbG9jX2J1ZmZlcik7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBJcyBgdm1idXNfZnJlZV9idWZmZXJgIGNhbGxlZCAqYWZ0ZXIqIGEgZ3BhZGwgaXMgZXN0YWJsaXNoZWQsIGxpa2VseSB0byBjbGVhbiB1cCBhZnRlciBpdD8gT3IgYXJlIHRoZXNlIHR3byBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcms/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGNyb3NzLXJlZmVyZW5jaW5nIHRoZWlyIHVzYWdlIHRvIHNlZSBpZiBhbnkgb2J2aW91cyBwYXR0ZXJucyBlbWVyZ2UuCgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGF0IGNvbnRleHQgZWFjaCBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoaW4uIFdoYXQmIzM5O3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkLCBhbmQgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBpbiB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucz8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHNpZ25zIG9mIHJhY2UgY29uZGl0aW9ucywgbWVtb3J5IGxlYWtzLCBvciBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBlc3BlY2lhbGx5IGluIHRoZSBgX2RlY3J5cHRlZGAgb25lLCBiZWNhdXNlIGRlY3J5cHRpb24gZnVuY3Rpb25zIGFsd2F5cyBpbnRyb2R1Y2UgbW9yZSBjb21wbGV4aXR5IGFuZCByaXNrLgoKSSBhbnRpY2lwYXRlIHRoZSBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgIGZ1bmN0aW9uIGNvdWxkIGJlIGtleSBpbiB0aGUgc2VjdXJpdHkgcG9zdHVyZSBvZiB0aGUgVk1CdXMsIHNvIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGVuY3J5cHRpb24ga2V5IGV4Y2hhbmdlIGFuZCBkZWNyeXB0aW9uIHByb2Nlc3MgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseSBhbmQgc2VjdXJlbHkuIEFueSBmbGF3IGNvdWxkIGxlYWQgdG8gYSBjb21wcm9taXNlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGUgY2FsbGVyIGNvbnRleHQgaXMgZXN0YWJsaXNoZWQgd2lsbCBiZSBjcnVjaWFsLiBEb2VzIHRoZSBjYWxsZXIgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZT8gSXMgdGhlIGdwYWRsIHNlY3VyZSBmcm9tIHVuYXV0aG9yaXplZCBhY2Nlc3M/CgpSZWdhcmRpbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGl0IGhhbmRsZXMgYWxsIGNhc2VzLiBBcmUgdGhlcmUgYW55IGNvcm5lciBjYXNlcyB3aGVyZSBidWZmZXJzIG1pZ2h0IGJlIGxlYWtlZCwgb3IgZG91YmxlLWZyZWVkPyBIb3cgYXJlIHRoZXNlIGJ1ZmZlcnMgbWFuYWdlZD8gSXMgYSByZWZjb3VudGluZyBzY2hlbWUgaW52b2x2ZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIHJlc291cmNlIGxpZmVjeWNsZSB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbi4KCkluIHNob3J0LCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGJ1aWxkaW5nIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBlYWNoIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UsIHRoZW4gdHJ5IHRvIHBpZWNlIHRvZ2V0aGVyIHRoZWlyIHJlbGF0aW9uc2hpcCBhbmQgbG9vayBmb3IgYW55IHBvdGVudGlhbCBpc3N1ZXMgaW4gdGVybXMgb2Ygc2VjdXJpdHksIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCBvdmVyYWxsIHJlbGlhYmlsaXR5IHdpdGhpbiB0aGUgVk1CdXMgYXJjaGl0ZWN0dXJlLiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBzdGFuZGFyZCBhbmFseXNpcywgZm9jdXNpbmcgb24gbG93LWxldmVsIGludGVyYWN0aW9ucyBhbmQgcG90ZW50aWFsIGV4cGxvaXRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtYnVzX2ZyZWVfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9jaGFubmVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9jaGFubmVsLmM9NjExPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTMtLyoqXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTQ6ICogdm1idXNfZnJlZV9idWZmZXIgLSByZWxlYXNlIGEgYnVmZmVyIGFsbG9jYXRlZCBieSB2bWJ1c19hbGxvY19idWZmZXIoKS5cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYyNS0gKi9cbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYyNjp2b2lkIHZtYnVzX2ZyZWVfYnVmZmVyKHZvaWQgKmFkZHIsIHN0cnVjdCBwYWdlICoqY2h1bmtzLCB1MzIgY2h1bmtfY250KVxuZHJpdmVycy9odi9jaGFubmVsLmMtNjI3LXtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NDgtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjQ5OkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2ZyZWVfYnVmZmVyKTtcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY1MC1cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYz02NzA9dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuLS1cbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2MC1cdGt2ZnJlZShwYWdlcyk7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo3NjE6XHR2bWJ1c19mcmVlX2J1ZmZlcihOVUxMLCBjaHVua3MsIGNodW5rX2NudCk7XG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjItXHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ3MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgR1BBREwgRXN0YWJsaXNobWVudCBQcm9jZXNzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCwgYW5kIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGNyaXRpY2FsIHJvbGUgdGhpcyBmdW5jdGlvbiBwbGF5cyBpbiBzZWN1cmUgY29tbXVuaWNhdGlvbiB3aXRoaW4gdGhlIFZNQnVzIGZyYW1ld29yay4gSSBuZWVkIHRvIGJyZWFrIGRvd24gcHJlY2lzZWx5ICpob3cqIGl0JiMzOTtzIHdvcmtpbmcgdG8gZXN0YWJsaXNoIGEgR2xvYmFsIFBhZ2UgQWRkcmVzcyBEZXNjcmlwdG9yIExpc3QgKEdQQURMKSwgZXNwZWNpYWxseSB3aXRoIHRoZSAmIzM0O2RlY3J5cHRlZCYjMzQ7IGVsZW1lbnQuIFRoaXMgY2xlYXJseSBzaWduYWxzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNlY3VyaXR5LXNlbnNpdGl2ZSBjaGFubmVsLgoKTXkgZmlyc3QgdGhvdWdodCBpcyBhcm91bmQgZGF0YSBpbnRlZ3JpdHk6IFdoYXQgZW5jcnlwdGlvbiBzY2hlbWUgaXMgZW1wbG95ZWQ/IElzIGl0IHN5bW1ldHJpYyBvciBhc3ltbWV0cmljPyBVbmRlcnN0YW5kaW5nIHRoZSBrZXkgZXhjaGFuZ2UgcHJvY2VzcyBpcyBwYXJhbW91bnQuIFdoZXJlIGlzIHRoZSBkZWNyeXB0aW9uIGtleSBkZXJpdmVkIGZyb20/IElzIGl0IHNvbWV0aGluZyBzdGF0aWMsIG9yIHBhcnQgb2YgYSBtb3JlIGR5bmFtaWMgYW5kIHNlY3VyZSBrZXkgYWdyZWVtZW50IHByb3RvY29sPyBJcyBpdCBhdXRoZW50aWNhdGVkIHNvbWVob3c/IEkgd2FudCB0byB0cmFjZSB0aGUgZmxvdyBvZiBjb250cm9sIGFuZCBkZXRlcm1pbmUgd2hlcmUgdGhlIGRlY3J5cHRpb24gaGFwcGVucy4gSXMgaXQgcGVyZm9ybWVkIGluIHRoZSBjYWxsZXIsIG9yIGlzIGl0IGRlbGVnYXRlZCBmdXJ0aGVyIGRvd24/CgpUaGVuLCB0aGUgR1BBREwgc3RydWN0dXJlIGl0c2VsZiBpcyBrZXkuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBsYXlvdXQgb2YgdGhlIG1lbW9yeSBtYXBwaW5ncyDigJMgd2hpY2ggcGh5c2ljYWwgcGFnZXMgYXJlIGJlaW5nIHJlZmVyZW5jZWQsIGFuZCBob3cuIElzIGl0IGEgY29udGlndW91cyBtYXBwaW5nLCBvciBpcyBpdCBmcmFnbWVudGVkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGFsaWdubWVudCBjb25zdHJhaW50cz8gVGhlICYjMzQ7Y2FsbGVyJiMzNDsgcGFydCBpcyBpbnRlcmVzdGluZyB0b28uIEl0IHRlbGxzIG1lIHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpcyB0aGUgaW5pdGlhdG9yLiBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBkcml2ZXIsIHRoZSBndWVzdCBPUywgb3Igc29tZXdoZXJlIGVsc2U/IFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hhdCBsZXZlbCBvZiBwcml2aWxlZ2UgbmVlZHMgdG8gYmUgaW52b2x2ZWQuCgpBbmQgb2YgY291cnNlLCBzZWN1cml0eSBpcyBldmVyeXRoaW5nIGhlcmUuIEkgbXVzdCBmb2N1cyBvbiB2dWxuZXJhYmlsaXRpZXMuIE15IG1pbmQgaXMgYWxyZWFkeSBwcm9iaW5nIGZvciBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cywgcmFjZSBjb25kaXRpb25zLCBvciBhbnkgb3Bwb3J0dW5pdGllcyBmb3IgZGF0YSB0YW1wZXJpbmcgZHVyaW5nIHRoaXMgcHJvY2Vzcy4gQ2FuIGEgbWFsaWNpb3VzIGFjdG9yIGdhaW4gYWNjZXNzIHRvIHRoZSByYXcgR1BBREwgaW5mb3JtYXRpb24gYW5kIHN1YnZlcnQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1hcHBpbmc/IFdoYXQgYXVkaXRpbmcgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2U/CgpVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBhdHRhY2sgc3VyZmFjZSBhbmQgYXNzZXNzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGlzIHNlY3VyZSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgd2l0aGluIHRoZSBWTUJ1cyBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIHZ1bG5lcmFiaWxpdHkgaGVyZSBjb3VsZCBoYXZlIHNlcmlvdXMgcmFtaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2h2L2NoYW5uZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2h2L2NoYW5uZWwuYz01OTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsKTtcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTMtLypcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjU5NDogKiB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCAtIEVzdGFibGlzaCBhIEdQQURMIGZvciBhIGJ1ZmZlclxuZHJpdmVycy9odi9jaGFubmVsLmMtNTk1LSAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MDMtICovXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MDQ6aW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjA1LVx0XHRcdFx0XHQgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTAtfVxuZHJpdmVycy9odi9jaGFubmVsLmM6NjExOkVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKTtcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgTmV0VlNDIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbmV0dnNjX3dvcmtxdWV1ZV9pbml0YCBhbmQgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IHdvcmtxdWV1ZXMgYXJlIG9mdGVuIHVzZWQgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcsIGxpa2VseSB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cyBvciBvZmZsb2FkIHRhc2tzLiBNeSBmaXJzdCBtb3ZlIGlzIGdvaW5nIHRvIGJlIHRvIHplcm8gaW4gb24gdGhvc2UgZnVuY3Rpb25zIHdpdGhpbiBgbmV0dnNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSB3b3JrcXVldWVzIGFyZSBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgYWRkaXRpb25zIGluIHRoZSBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlcyBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIG5ldHdvcmsgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIHRoZXkgc251Y2sgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKm5ldHZzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzE6c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzItXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTM3PWludCBuZXR2c2Nfc3dpdGNoX2RhdGFwYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05OC0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDAte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMjktXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTMwOnN0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMzEte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTAtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTUxOnN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTY1PXZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3MC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzE6c3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTkzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjAzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2VfcmVjdl9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTIwNC1cdFx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTItXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjUzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2Vfc2VuZF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI1NC1cdFx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDMtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA0OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDUtXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMjU6c3RhdGljIHZvaWQgbmV0dnNjX3RlYXJkb3duX3NlbmRfZ3BhZGwoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNi1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MzQ2PWludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MDpzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYxLVx0XHRcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NDgtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NjQ5OnN0YXRpYyBpbnQgbmV0dnNjX2Nvbm5lY3RfdnNwKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTAtXHRcdFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTcyMj12b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc4NDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2ZyZWVfc2VuZF9zbG90KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cdFx0XHRcdFx0IHUzMiBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03OTEtXHRcdFx0XHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfY29tcGxldGlvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NTEtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTYyLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTY0LXtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk3NjpzdGF0aWMgdm9pZCBuZXR2c2NfY29weV90b19zZW5kX2J1ZihzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NzctXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTEwMTM9dm9pZCBuZXR2c2NfZG1hX3VubWFwKHN0cnVjdCBodl9kZXZpY2UgKmh2X2Rldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA0OS0gKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUwOnN0YXRpYyBpbnQgbmV0dnNjX2RtYV9tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNTEtXHRcdFx0ICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDk5LSAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMDA6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19idWlsZF9tcGJfYXJyYXkoc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTAxLVx0XHRcdFx0dTMyIHBhZ2VfYnVmZmVyX2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTI0LVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMjU6c3RhdGljIGlubGluZSBpbnQgbmV0dnNjX3NlbmRfcGt0KFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTExMjYtXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjQtLyogTW92ZSBwYWNrZXQgb3V0IG9mIG11bHRpIHNlbmQgZGF0YSAobXNkKSwgYW5kIGNsZWFyIG1zZCAqL1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEyMjU6c3RhdGljIGlubGluZSB2b2lkIG1vdmVfcGt0X21zZChzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqKm1zZF9zZW5kLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjYtXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqKm1zZF9za2IsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTEzODQ9c3RhdGljIGludCBzZW5kX3JlY3ZfY29tcGxldGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE0MjMtLyogQ291bnQgaG93IG1hbnkgcmVjZWl2ZSBjb21wbGV0aW9ucyBhcmUgb3V0c3RhbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDI0OnN0YXRpYyB2b2lkIHJlY3ZfY29tcF9zbG90X2F2YWlsKGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDI1LVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtdWx0aV9yZWN2X2NvbXAgKm1yYyxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTQzOT1zdGF0aWMgdm9pZCBlbnFfcmVjZWl2ZV9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTQ2OC1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDY5OnN0YXRpYyBpbnQgbmV0dnNjX3JlY2VpdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTQ3MC1cdFx0XHQgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgxLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1ODI6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU4My1cdFx0XHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZzY2Rldixcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTYyNy1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjI4OnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3ZmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjktXHRcdFx0ICAgY29uc3Qgc3RydWN0IG52c3BfbWVzc2FnZSAqbnZtc2csXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NTEtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY1MjpzdGF0aWMgdm9pZCBuZXR2c2NfcmVjZWl2ZV9pbmJhbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY1My1cdFx0XHRcdCAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52c2NkZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NzgtXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY3OTpzdGF0aWMgaW50IG5ldHZzY19wcm9jZXNzX3Jhd19wa3Qoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2ODAtXHRcdFx0XHQgIHN0cnVjdCBuZXR2c2NfY2hhbm5lbCAqbnZjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzExLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTI6c3RhdGljIHN0cnVjdCBodl9kZXZpY2UgKm5ldHZzY19jaGFubmVsX3RvX2RldmljZShzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbClcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzEzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTUJ1cyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAsIGFuZCBzb21lIHdvcmtxdWV1ZSBtYW5hZ2VtZW50IHJvdXRpbmVzLCBgbmV0dnNjX3dvcmtxdWV1ZV9pbml0YCBhbmQgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWAuIEFoLCB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9ucyBhcmUganVzdCB3cmFwcGVycywgbm90aGluZyBjb21wbGV4IHRoZXJlLiBUaGUgcmVhbCBtZWF0IG9mIHRoaXMgcGF0Y2ggaXMgaW4gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgYW5kIGB2bWJ1c19mcmVlX2J1ZmZlcmAuCgpJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgaXMgYWN0dWFsbHkgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQmIzM5O3MgY2FsbGVkIHdpdGhpbiBgbmV0dnNjX2luaXRfYnVmYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gYSBuZXR2c2MgZGV2aWNlIGlzIGFkZGVkIOKAkyBzbywgeWVzLCBpdOKAmXMgcmVhY2hhYmxlLiBHb29kLCB0aGF0JiMzOTtzIGltcG9ydGFudCBmb3IgZnV6emluZy4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHkhIEl0IGFsbG9jYXRlcyBtZW1vcnksIG1hcmtzIGl0IGFzIGRlY3J5cHRlZCwgKmFuZCogbWFwcyBpdC4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmaW5kaW5nIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlcmVmb3JlLCBteSBwcmltYXJ5IGZvY3VzIGZvciBmdXp6aW5nIHdpbGwgYmUgb246CgoqICAgYHZtYnVzX2FsbG9jX2J1ZmZlcmAKKiAgIGB2bWJ1c19mcmVlX2J1ZmZlcmAKKiAgIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAKCkxldCYjMzk7cyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgY29ycmVjdCB0byBzdGFydCB3aXRoLiBMb29rcyBsaWtlIGBDT05GSUdfSFlQRVJWYCBhbmQgYENPTkZJR19IWVBFUlZfTkVUYCBhcmUgcmVxdWlyZWQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIGBkcml2ZXJzL25ldC9oeXBlcnYvYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIWVBFUlZfTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWc6Mjpjb25maWcgSFlQRVJWX05FVFxuZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19IWVBFUlZfTkVUKSAmIzQzOz0gaHZfbmV0dnNjLm9cbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0zLVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTEtXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEyOiNpZm5kZWYgX0hZUEVSVl9ORVRfSFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMzojZGVmaW5lIF9IWVBFUlZfTkVUX0hcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQtXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xODI1PXZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjYtXHRcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI3OiNlbmRpZiAvKiBfSFlQRVJWX05FVF9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjQ0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBIeXBlci1WIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGlzIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcmVxdWlyZWQgYW5kIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyIGluIG15IGV4YW1pbmF0aW9uIG9mIHRoZSBkcml2ZXIgY29kZSwgb3IgSSYjMzk7bGwgYmUgc3Bpbm5pbmcgbXkgd2hlZWxzLiBLbm93aW5nIHRoaXMgS2NvbmZpZyBjb25maWd1cmF0aW9uIGluc2lkZSBhbmQgb3V0IHdpbGwgcHJldmVudCBhIGxvdCBvZiB3YXN0ZWQgdGltZSBkb3duIHRoZSBsaW5lLiBJdCBpcyBhIGxvZ2ljYWwgZmlyc3Qgc3RlcCBmb3IgdGhpcyB0YXNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIEhZUEVSVl9ORVRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSFlQRVJWX1ZNQlVTXG4gICA1Olx0XHRzZWxlY3QgVUNTMl9TVFJJTkdcbiAgIDY6XHRcdHNlbGVjdCBOTFNcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSB0aGUgSHlwZXItViB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU2MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBoeXBlcnZpc29yIGRyaXZlcnMuCgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogRHJpbGxpbmcgRG93biBpbnRvIEh5cGVyLVYgTmV0d29ya2luZyoqCgpBbHJpZ2h0LCBzbyBgSFlQRVJWX05FVGAgcmVsaWVzIG9uIGBIWVBFUlZfVk1CVVNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgcHJvcGVybHkgY29uZmlndXJlZCwgYW5kIEkmIzM5O2xsIGZpbmQgaXRzIGRlZmluaXRpb24gaW4gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwganVtcCBzdHJhaWdodCB0byBgZHJpdmVycy9odi9LY29uZmlnYC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBjaGVjaywgZ2l2ZW4gdGhhdCBgSFlQRVJWX1ZNQlVTYCBpcyBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIEh5cGVyLVYgdmlydHVhbCBidXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXNuJiMzOTt0IGRpc2FibGVkIGJ5IGRlZmF1bHQgb3IgaGlkZGVuIGJlaGluZCBzb21lIG9ic2N1cmUgY29uZmlndXJhdGlvbiBvcHRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB0cm91Ymxlc2hvb3QgYW55IG5ldHdvcmtpbmcgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaHlwZXJ2aXNvciwgYW5kIEkmIzM5O2xsIGtub3cgd2hlcmUgdG8gYWRqdXN0IHRoZSBidWlsZCBjb25maWcgdG8gbWVldCBpdHMgcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFlQRVJWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnPTM9bWVudSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2h2L0tjb25maWctNC1cbmRyaXZlcnMvaHYvS2NvbmZpZzo1OmNvbmZpZyBIWVBFUlZcbmRyaXZlcnMvaHYvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy0xNi1cbmRyaXZlcnMvaHYvS2NvbmZpZzoxNzpjb25maWcgSFlQRVJWX1ZUTF9NT0RFXG5kcml2ZXJzL2h2L0tjb25maWctMTgtXHRib29sIFwmIzM0O0VuYWJsZSBMaW51eCB0byBib290IGluIFZUTCBjb250ZXh0XCYjMzQ7XG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTQyLVxuZHJpdmVycy9odi9LY29uZmlnOjQzOmNvbmZpZyBIWVBFUlZfVElNRVJcbmRyaXZlcnMvaHYvS2NvbmZpZy00NC1cdGRlZl9ib29sIEhZUEVSViBcdTAwMjZcdTAwMjYgWDg2XG5kcml2ZXJzL2h2L0tjb25maWctNDUtXG5kcml2ZXJzL2h2L0tjb25maWc6NDY6Y29uZmlnIEhZUEVSVl9VVElMU1xuZHJpdmVycy9odi9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgVXRpbGl0aWVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01Mi1cbmRyaXZlcnMvaHYvS2NvbmZpZzo1Mzpjb25maWcgSFlQRVJWX0JBTExPT05cbmRyaXZlcnMvaHYvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIEJhbGxvb24gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9odi9LY29uZmlnLTU5LVxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcbmRyaXZlcnMvaHYvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIyNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIEh5cGVyLVYgVk1CdXMgRGVwZW5kZW5jaWVzKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBIWVBFUlZfVk1CVVNgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGRyaXZlcnMgaW4gdGhlIEh5cGVyLVYgc2VjdGlvbi4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBpcyBgZHJpdmVycy9odi9LY29uZmlnYC4gSSYjMzk7bGwgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBvciBvcHRpb25zIGFyZSBsaW5rZWQgdG8gYEhZUEVSVl9WTUJVU2AuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBwZXJoYXBzIG90aGVyIEh5cGVyLVYgZmVhdHVyZXMgdGhhdCByZWx5IG9uIHRoZSBWTUJ1cywgb3IgbWF5YmUgZXZlbiBhcmNoaXRlY3R1cmFsIGNvbnN0cmFpbnRzIHJlbGF0ZWQgdG8gaG93IHRoZSBWTUJ1cyBpcyB1c2VkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSHlwZXItViBkcml2ZXIgZnJhbWV3b3JrLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGFuZCB3aGV0aGVyIEkgY2FuIGNoYW5nZSBhbnkgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTk6XHRcbiAgNjA6XHRjb25maWcgSFlQRVJWX1ZNQlVTXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiAgNjI6XHRcdGRlcGVuZHMgb24gSFlQRVJWXG4gIDYzOlx0XHRkZWZhdWx0IEhZUEVSVlxuICA2NDpcdFx0c2VsZWN0IFNZU0ZCIGlmIEVGSSBcdTAwMjZcdTAwMjYgIUhZUEVSVl9WVExfTU9ERVxuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZW5hYmxlIEh5cGVyLVYgVm1idXMgZHJpdmVyLlxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBNU0hWX1JPT1RcbiAgNjk6XHRcdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIHJvb3QgcGFydGl0aW9uIHN1cHBvcnRcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gSFlQRVJWIFx1MDAyNlx1MDAyNiAoWDg2XzY0IHx8IEFSTTY0KVxuICA3MTpcdFx0ZGVwZW5kcyBvbiAhSFlQRVJWX1ZUTF9NT0RFXG4gIDcyOlx0XHQjIFRoZSBoeXBlcnZpc29yIGludGVyZmFjZSBvcGVyYXRlcyBvbiA0ayBwYWdlcy4gRW5mb3JjaW5nIGl0IGhlcmVcbiAgNzM6XHRcdCMgc2ltcGxpZmllcyBtYW55IGFzc3VtcHRpb25zIGluIHRoZSByb290IHBhcnRpdGlvbiBjb2RlLlxuICA3NDpcdFx0IyBlLmcuIFdoZW4gd2l0aGRyYXdpbmcgbWVtb3J5LCB0aGUgaHlwZXJ2aXNvciBnaXZlcyBiYWNrIDRrIHBhZ2VzIGluXG4gIDc1Olx0XHQjIG5vIHBhcnRpY3VsYXIgb3JkZXIsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHJlYXNzZW1ibGUgbGFyZ2VyIHBhZ2VzXG4gIDc2Olx0XHRkZXBlbmRzIG9uIFBBR0VfU0laRV80S0JcbiAgNzc6XHRcdHNlbGVjdCBFVkVOVEZEXG4gIDc4Olx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3ODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgSHlwZXItViBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBgSFlQRVJWX1ZNQlVTYCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBgSFlQRVJWYCBjb3JlIGNvbXBvbmVudC4gTmF0dXJhbGx5LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgaW50byB0aGUgYEhZUEVSVmAgbW9kdWxlIGl0c2VsZi4gV2hhdCBkb2VzICppdCogZGVwZW5kIG9uPyBHb3R0YSBtYXAgb3V0IHRoZSBlbnRpcmUgdHJlZSB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIEh5cGVyLVYgc3RhY2sgaXMgaW50ZXJjb25uZWN0ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgSFlQRVJWXG4gICA2Olx0XHRib29sIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIGNvcmUgaHlwZXJ2aXNvciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIChYODYgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDIFx1MDAyNlx1MDAyNiBIWVBFUlZJU09SX0dVRVNUKSBcXFxuICAgODpcdFx0XHR8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgIDk6XHRcdHNlbGVjdCBQQVJBVklSVFxuICAxMDpcdFx0c2VsZWN0IFg4Nl9IVl9DQUxMQkFDS19WRUNUT1IgaWYgWDg2XG4gIDExOlx0XHRzZWxlY3QgT0ZfRUFSTFlfRkxBVFRSRUUgaWYgT0ZcbiAgMTI6XHRcdHNlbGVjdCBJUlFfTVNJX0xJQiBpZiBYODZcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHJ1biBMaW51eCBhcyBhIEh5cGVyLVYgY2xpZW50IG9wZXJhdGluZ1xuICAxNTpcdFx0ICBzeXN0ZW0uXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxuICAxODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoWDg2XzY0IFx1MDAyNlx1MDAyNiBIQVZFX1NUQVRJQ19DQUxMKSB8fCBBUk02NFxuICAyMDpcdFx0ZGVwZW5kcyBvbiBIWVBFUlZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyODUKCQkJCQkJCW91dHB1dDogMjE0CgkJCQkJCQl0aG91Z2h0czogNjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBIeXBlci1WIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciBgSFlQRVJWYDogaXQgaGluZ2VzIG9uIGVpdGhlciBhbiB4ODYgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIGxvY2FsIEFQSUMgYW5kIGEgZ3Vlc3QgaHlwZXJ2aXNvciwgb3IgQVJNNjQgKndpdGhvdXQqIGJpZy1lbmRpYW5uZXNzLiBHb3QgaXQuIFN5emthbGxlciYjMzk7cyByb2xlIGhlcmUgaXMgY3J1Y2lhbCwgYXMgaXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC4KClRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgVk1CdXMgZnVuY3Rpb25zIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYnVmZmVyIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgYW5kIEdQQURMIGVzdGFibGlzaG1lbnQ6IGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gVGhlc2UgYXJlIGZ1bmRhbWVudGFsIGZ1bmN0aW9ucyBpbiB0aGUgVk1CdXMgbm93IGJlaW5nIHV0aWxpemVkIGJ5IGBuZXR2c2NgLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBUaGUgY29uZmlndXJhdGlvbiBmbGFncyB3ZSBuZWVkIHRvIGZvY3VzIG9uIGZvciBlbmFibGluZyB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYXJlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC4KCkkgcXVpY2tseSBldmFsdWF0ZWQgc29tZSBvdGhlciBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgdGhleSYjMzk7cmUgcmVsZXZhbnQsIGJ1dCB0aGUgd3JhcHBlcnMgZm9yIGBuZXR2c2Nfd29ya3F1ZXVlX2luaXRgIGFuZCBgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95YCwgYW5kIHRoZSB0ZWFyZG93biBmdW5jdGlvbnMgbGlrZSBgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdWAsIGBfX2ZyZWVfbmV0dnNjX2RldmljZWAsIGFuZCBgZnJlZV9uZXR2c2NfZGV2aWNlYCwgYXBwZWFyIGxlc3MgY3JpdGljYWwgZm9yIGZ1enppbmcgcHVycG9zZXMuIFRoZXkgbWlnaHQgYmUgcmVhY2hhYmxlLCBidXQgdGhleSBhcmVuJiMzOTt0IHRoZSBoZWFydCBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuIFRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGhlYXZpbHkgY29uY2VudHJhdGVkIGluIHRoZSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgbWFuYWdlbWVudCBhcmVhcy4KCkxldCBtZSB2ZXJpZnkgdGhhdCBgdm1idXNfYWxsb2NfYnVmZmVyYCBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFFFTVUvc3l6a2FsbGVyIHNldHVwLiBZZXMsIHN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBzbyB0aGF0IHNob3VsZCB3b3JrLiBXYWl0LCBgdm1idXNfYWxsb2NfYnVmZmVyYCByZXNpZGVzIGluIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AsIG1ha2luZyBpdCBhIGdlbmVyaWMgVk1CdXMgZnVuY3Rpb24uIEdvb2QsIGFuZCBpdCYjMzk7cyBpbnZva2VkIGJ5IGBuZXR2c2NfaW5pdF9idWZgLiBEZWZpbml0ZWx5IHJlYWNoYWJsZSBpZiBgSFlQRVJWX05FVGAgaXMgY29uZmlndXJlZCBhbmQgcHJvYmVkLiAqV29ydGhGdXp6aW5nPXRydWUqLgoKSGVyZSYjMzk7cyB0aGUgZGlzdGlsbGVkIHN1bW1hcnk6CgoqKkZvY3VzIFN5bWJvbHM6KioKCiogICBgdm1idXNfYWxsb2NfYnVmZmVyYAoqICAgYHZtYnVzX2ZyZWVfYnVmZmVyYAoqICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYAoKKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KioKCiogICBgSFlQRVJWYAoqICAgYEhZUEVSVl9WTUJVU2AKKiAgIGBIWVBFUlZfTkVUYAoKKipSZWFzb25pbmc6KioKClRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgSHlwZXItViBuZXR3b3JraW5nIGhhbmRsZXMgYnVmZmVyIGFsbG9jYXRpb24sIG1lbW9yeSBkZWNyeXB0aW9uLCBhbmQgR1BBREwgZXN0YWJsaXNobWVudCB0aHJvdWdoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9ucyBgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYW5kIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAgYW5kIHN1YnNlcXVlbnQgdXNlIGJ5IHRoZSBgbmV0dnNjYCBuZXR3b3JrIGRyaXZlci4gVGhlc2UgVk1CdXMtcmVsYXRlZCBmdW5jdGlvbnMgYXJlICprZXkqIGFzIHRoZXkmIzM5O3JlIG5vdyBpbnZvbHZlZCBpbiBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMuIEdpdmVuIHRoYXQgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSB0aGUgb25lcyBzdXBwb3J0ZWQgYnkgU3l6a2FsbGVyLCBpdCBtYWtlcyB0aGVzZSB0YXJnZXRzIGhpZ2hseSBzdWl0YWJsZSBmb3IgZnV6emluZyBlZmZvcnRzLCBhbmQgc2hvdWxkIGJlIHRoZSBpbW1lZGlhdGUgZm9jdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIWVBFUlYmIzM0OywKICAgICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssCiAgICAmIzM0O0hZUEVSVl9ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2bWJ1c19hbGxvY19idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZnJlZV9idWZmZXImIzM0OywKICAgICYjMzQ7dm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgVk1CdXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgZnVuY3Rpb25zIChgdm1idXNfYWxsb2NfYnVmZmVyYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCkgYW5kIHVwZGF0ZXMgdGhlIEh5cGVyLVYgbmV0d29yayBkcml2ZXIgKGBuZXR2c2NgKSB0byB1c2UgdGhlbS4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMsIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdoZXJlIEh5cGVyLVYgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIChlLmcuLCB2aWEgc3l6a2FsbGVyKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgbmV3IG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBHUEFETCBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtYnVzX2FsbG9jX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19mcmVlX2J1ZmZlciYjMzQ7LAogICAgJiMzNDt2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIwOjQ0LjA0OTM3MzcxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMjk3NzM1OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZfTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1idXNfYWxsb2NfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICAgIFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NDQuMDQ5Mzg4Nzk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTgzMDU1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MjA6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9odi9jaGFubmVsLmMgYi9kcml2ZXJzL2h2L2NoYW5uZWwuY1xcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9odi9jaGFubmVsLmNcXG4rKysgYi9kcml2ZXJzL2h2L2NoYW5uZWwuY1xcbkBAIC0xMywxMSArMTMsMTMgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9sb2cyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2h5cGVydi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdWlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9tc2h5cGVydi5oXFx1MDAzZVxcbkBAIC00MCw2ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGh2X2dwYWRsX3NpemUoZW51bSBodl9ncGFkbF90eXBlIHR5cGUsIHUzMiBzaXplKVxcbiB7XFxuIFxcdHN3aXRjaCAodHlwZSkge1xcbiBcXHRjYXNlIEhWX0dQQURMX0JVRkZFUjpcXG4rXFx0Y2FzZSBIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEOlxcbiBcXHRcXHRyZXR1cm4gc2l6ZTtcXG4gXFx0Y2FzZSBIVl9HUEFETF9SSU5HOlxcbiBcXHRcXHQvKiBUaGUgc2l6ZSBvZiBhIHJpbmdidWZmZXIgbXVzdCBiZSBwYWdlLWFsaWduZWQgKi9cXG5AQCAtMTAwLDYgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGh2X2dwYWRsX2h2cGZuKGVudW0gaHZfZ3BhZGxfdHlwZSB0eXBlLCB2b2lkICprYnVmZmVyLFxcbiBcXG4gXFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdGNhc2UgSFZfR1BBRExfQlVGRkVSOlxcbitcXHRjYXNlIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQ6XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEhWX0dQQURMX1JJTkc6XFxuIFxcdFxcdGlmIChpID09IDApXFxuQEAgLTQ2MCw3ICs0NjQsOCBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbiBcXHR9XFxuIFxcbiBcXHRncGFkbC1cXHUwMDNlZGVjcnlwdGVkID0gISgoY2hhbm5lbC1cXHUwMDNlY29fZXh0ZXJuYWxfbWVtb3J5IFxcdTAwMjZcXHUwMDI2IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fFxcbi1cXHRcXHQoY2hhbm5lbC1cXHUwMDNlY29fcmluZ19idWZmZXIgXFx1MDAyNlxcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9SSU5HKSk7XFxuK1xcdFxcdChjaGFubmVsLVxcdTAwM2Vjb19yaW5nX2J1ZmZlciBcXHUwMDI2XFx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XFxuK1xcdFxcdCh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTtcXG4gXFx0aWYgKGdwYWRsLVxcdTAwM2VkZWNyeXB0ZWQpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogVGhlIFxcXCJkZWNyeXB0ZWRcXFwiIGZsYWcgYmVpbmcgdHJ1ZSBhc3N1bWVzIHRoYXQgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBzdWNjZWVkcy5cXG5AQCAtNTc1LDcgKzU4MCw3IEBAIHN0YXRpYyBpbnQgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuICAqIEBjaGFubmVsOiBhIGNoYW5uZWxcXG4gICogQGtidWZmZXI6IGZyb20ga21hbGxvYyBvciB2bWFsbG9jXFxuICAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcXG4tICogQGdwYWRsX2hhbmRsZTogc29tZSBmdW5reSB0aGluZ1xcbisgKiBAZ3BhZGw6IG91dHB1dCBncGFkbFxcbiAgKi9cXG4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcXG4gXFx0XFx0XFx0ICB1MzIgc2l6ZSwgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcXG5AQCAtNTg1LDYgKzU5MCwxNzkgQEAgaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19lc3RhYmxpc2hfZ3BhZGwpO1xcbiBcXG4rLypcXG4rICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXJcXG4rICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyLlxcbisgKlxcbisgKiBAY2hhbm5lbDogYSBjaGFubmVsXFxuKyAqIEBrYnVmZmVyOiBmcm9tIGttYWxsb2Mgb3Igdm1hbGxvYzsgbXVzdCBhbHJlYWR5IGJlIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyXFxuKyAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcXG4rICogQGdwYWRsOiBvdXRwdXQgZ3BhZGxcXG4rICpcXG4rICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmUtZW5jcnlwdGluZyB0aGUgYnVmZmVyIGJlZm9yZSBmcmVlaW5nIGl0LlxcbisgKi9cXG4raW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbitcXHRcXHRcXHRcXHRcXHQgICB2b2lkICprYnVmZmVyLCB1MzIgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHZtYnVzX2dwYWRsICpncGFkbClcXG4re1xcbitcXHRyZXR1cm4gX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoY2hhbm5lbCwgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIGtidWZmZXIsIHNpemUsIDBVLCBncGFkbCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbitcXG4rLyoqXFxuKyAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXFxuKyAqXFxuKyAqIEBhZGRyOiBidWZmZXIgYWRkcmVzcywgb3IgTlVMTCBpZiBub25lIHdhcyBhbGxvY2F0ZWQgKGUuZy4gY2xlYW51cCBmcm9tIGFcXG4rICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxcbisgKiBAY2h1bmtzOiBjaHVua3MgYXJyYXkgZnJvbSB2bWJ1c19hbGxvY19idWZmZXIoKSwgb3IgTlVMTFxcbisgKiBAY2h1bmtfY250OiBudW1iZXIgb2YgZW50cmllcyBpbiBAY2h1bmtzXFxuKyAqXFxuKyAqIFdoZW4gQGNodW5rcyBpcyBOVUxMIHRoZSBidWZmZXIgaXMgYSBwbGFpbiB2emFsbG9jKCkgYWxsb2NhdGlvbi5cXG4rICpcXG4rICogT3RoZXJ3aXNlIHRlYXIgZG93biB0aGUgdm1hcCwgYW5kIGZvciBlYWNoIGNodW5rIHJlLWVuY3J5cHQgYW5kIGZyZWVcXG4rICogdGhlIHVuZGVybHlpbmcgcGFnZXMuIEFueSBjaHVuayB0aGF0IGNhbm5vdCBiZSByZS1lbmNyeXB0ZWQgaXMgbGVha2VkLlxcbisgKi9cXG4rdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudClcXG4re1xcbitcXHR1MzIgaTtcXG4rXFxuK1xcdGlmICghY2h1bmtzKSB7XFxuK1xcdFxcdHZmcmVlKGFkZHIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHZ1bm1hcChhZGRyKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjaHVua19jbnQ7IGkrKykge1xcbitcXHRcXHR1bnNpZ25lZCBsb25nIHZhZGRyID1cXG4rXFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKGNodW5rc1tpXSk7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBvcmRlciA9IGZvbGlvX29yZGVyKHBhZ2VfZm9saW8oY2h1bmtzW2ldKSk7XFxuK1xcbitcXHRcXHRpZiAoc2V0X21lbW9yeV9lbmNyeXB0ZWQodmFkZHIsIDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdF9fZnJlZV9wYWdlcyhjaHVua3NbaV0sIG9yZGVyKTtcXG4rXFx0fVxcbitcXG4rXFx0a3ZmcmVlKGNodW5rcyk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZnJlZV9idWZmZXIpO1xcbitcXG4rLyoqXFxuKyAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXFxuKyAqXFxuKyAqIEBjaGFubmVsOiB0aGUgY2hhbm5lbCB0aGUgYnVmZmVyIHdpbGwgYmUgYXR0YWNoZWQgdG9cXG4rICogQHNpemU6IHJlcXVlc3RlZCBidWZmZXIgc2l6ZSBpbiBieXRlcyAod2lsbCBiZSByb3VuZGVkIHVwIHRvIFBBR0VfU0laRSlcXG4rICogQGNodW5rc19vdXQ6IG9uIHN1Y2Nlc3MsIHNldCB0byB0aGUgYXJyYXkgb2YgdW5kZXJseWluZyBjaHVua3MsIG9yIE5VTEwgd2hlblxcbisgKiAgICAgICAgICAgICAgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIHdpdGggdnphbGxvYygpXFxuKyAqIEBjaHVua19jbnRfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIG51bWJlciBvZiBjaHVua3NcXG4rICpcXG4rICogQnVmZmVycyBub3QgcmVxdWlyaW5nIGRlY3J5cHRpb24gYXJlIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKS5cXG4rICpcXG4rICogQnVmZmVycyByZXF1aXJpbmcgZGVjcnlwdGlvbiBhcmUgYWxsb2NhdGVkIGFzIGEgc2VyaWVzIG9mXFxuKyAqIHBoeXNpY2FsbHktY29udGlndW91cyBjaHVua3MsIHN0YXJ0aW5nIGF0IE1BWF9QQUdFX09SREVSIGFuZCBmYWxsaW5nIGJhY2sgdG9cXG4rICogc21hbGxlciBvcmRlcnMgb24gYWxsb2NhdGlvbiBmYWlsdXJlLiBFYWNoIGNodW5rIGlzIHRyYW5zaXRpb25lZCB0b1xcbisgKiBob3N0LXZpc2libGUgdmlhIHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgb24gaXRzIGRpcmVjdC1tYXAgYWRkcmVzcywgdGhlbiBhbGxcXG4rICogY2h1bmtzIGFyZSBjb21iaW5lZCBpbnRvIGEgdmlydHVhbGx5LWNvbnRpZ3VvdXMgcmFuZ2UgdmlhIHZtYXAoKS5cXG4rICpcXG4rICogUmV0dXJuOiB0aGUgYnVmZmVyJ3MgdmlydHVhbCBhZGRyZXNzLCBvciBOVUxMIG9uIGZhaWx1cmUuXFxuKyAqL1xcbit2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuK1xcdFxcdFxcdCB1MzIgc2l6ZSxcXG4rXFx0XFx0XFx0IHN0cnVjdCBwYWdlICoqKmNodW5rc19vdXQsXFxuK1xcdFxcdFxcdCB1MzIgKmNodW5rX2NudF9vdXQpXFxuK3tcXG4rXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IFBGTl9VUChzaXplKTtcXG4rXFx0dW5zaWduZWQgbG9uZyByZW1haW5pbmcgPSBucl9wYWdlcztcXG4rXFx0dW5zaWduZWQgbG9uZyBwYWdlX2lkeCA9IDA7XFxuK1xcdHN0cnVjdCBwYWdlICoqY2h1bmtzID0gTlVMTDtcXG4rXFx0c3RydWN0IHBhZ2UgKipwYWdlcyA9IE5VTEw7XFxuK1xcdGludCBvcmRlciA9IE1BWF9QQUdFX09SREVSO1xcbitcXHR1MzIgY2h1bmtfY250ID0gMDtcXG4rXFx0dm9pZCAqYWRkcjtcXG4rXFx0dTMyIGk7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHQqY2h1bmtzX291dCA9IE5VTEw7XFxuK1xcdCpjaHVua19jbnRfb3V0ID0gMDtcXG4rXFxuK1xcdGlmICghbnJfcGFnZXMpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0LyogSWYgdGhlIGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlY3J5cHRlZCwganVzdCB1c2UgdnphbGxvYygpICovXFxuK1xcdGlmICghaHZfaXNfaXNvbGF0aW9uX3N1cHBvcnRlZCgpIHx8IGNoYW5uZWwtXFx1MDAzZWNvX2V4dGVybmFsX21lbW9yeSlcXG4rXFx0XFx0cmV0dXJuIHZ6YWxsb2MobnJfcGFnZXMgXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVCk7XFxuK1xcbitcXHQvKiBXb3JzdCBjYXNlOiBldmVyeSBjaHVuayBpcyBhIHNpbmdsZSBwYWdlLiAqL1xcbitcXHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxcbitcXHRcXHRcXHRcXHRHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7XFxuK1xcdGlmICghY2h1bmtzKVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFxuK1xcdHBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkobnJfcGFnZXMsIHNpemVvZigqcGFnZXMpLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwYWdlcylcXG4rXFx0XFx0Z290byBlcnI7XFxuK1xcbitcXHR3aGlsZSAocmVtYWluaW5nKSB7XFxuK1xcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRnZnBfdCBnZnA7XFxuK1xcbitcXHRcXHRvcmRlciA9IG1pbihvcmRlciwgaWxvZzIocmVtYWluaW5nKSk7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBVc2UgX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTiB0byBhdm9pZCBPT00ta2lsbGluZyxcXG4rXFx0XFx0ICogYnV0IHRyeSBoYXJkZXIgYXQgb3JkZXIgMCBzaW5jZSB0aGF0IGlzIHRoZSBmaW5hbFxcbitcXHRcXHQgKiBmYWxsYmFjay5cXG4rXFx0XFx0ICogX19HRlBfQ09NUCBzdG9yZXMgb3JkZXIgaW5mb3JtYXRpb24gaW4gdGhlIHBhZ2UgZm9saW8uXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRnZnAgPSBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTztcXG4rXFx0XFx0aWYgKG9yZGVyKVxcbitcXHRcXHRcXHRnZnAgfD0gX19HRlBfQ09NUCB8IF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk47XFxuK1xcbitcXHRcXHRwYWdlID0gYWxsb2NfcGFnZXNfbm9kZShjcHVfdG9fbm9kZShjaGFubmVsLVxcdTAwM2V0YXJnZXRfY3B1KSxcXG4rXFx0XFx0XFx0XFx0XFx0Z2ZwLCBvcmRlcik7XFxuK1xcdFxcdGlmICghcGFnZSkge1xcbitcXHRcXHRcXHRpZiAoIW9yZGVyLS0pXFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0ID0gc2V0X21lbW9yeV9kZWNyeXB0ZWQoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAxVSBcXHUwMDNjXFx1MDAzYyBvcmRlcik7XFxuK1xcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBmYWlsZWQ7IHRoZSBwYWdlIHN0YXRlIGlzXFxuK1xcdFxcdFxcdCAqIHVua25vd24gc28gaXQgbXVzdCBiZSBsZWFrZWQgcmF0aGVyIHRoYW4gZnJlZWQuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRnb3RvIGVycjtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Y2h1bmtzW2NodW5rX2NudCsrXSA9IHBhZ2U7XFxuK1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyKTsgaSsrKVxcbitcXHRcXHRcXHRwYWdlc1twYWdlX2lkeCsrXSA9IHBhZ2UgKyBpO1xcbitcXG4rXFx0XFx0cmVtYWluaW5nIC09IDFVIFxcdTAwM2NcXHUwMDNjIG9yZGVyO1xcbitcXHR9XFxuK1xcbitcXHRhZGRyID0gdm1hcChwYWdlcywgbnJfcGFnZXMsIFZNX01BUCwgcGdwcm90X2RlY3J5cHRlZChQQUdFX0tFUk5FTCkpO1xcbitcXHRpZiAoIWFkZHIpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4rXFx0bWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQpO1xcbitcXG4rXFx0a3ZmcmVlKHBhZ2VzKTtcXG4rXFx0KmNodW5rc19vdXQgPSBjaHVua3M7XFxuK1xcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xcbitcXHRyZXR1cm4gYWRkcjtcXG4rXFxuK2VycjpcXG4rXFx0a3ZmcmVlKHBhZ2VzKTtcXG4rXFx0dm1idXNfZnJlZV9idWZmZXIoTlVMTCwgY2h1bmtzLCBjaHVua19jbnQpO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xcbitcXG4gLyoqXFxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcXG4gICoga2VlcHMgdHJhY2sgb2YgdGhlIG5leHQgYXZhaWxhYmxlIHNsb3QgaW4gdGhlIGFycmF5LiBJbml0aWFsbHksIGVhY2hcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaCBiL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmhcXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXFxuQEAgLTIyMCw2ICsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xcbiBcXG4gZXh0ZXJuIHUzMiBuZXR2c2NfcmluZ19ieXRlcztcXG4gXFxuK2ludCBuZXR2c2Nfd29ya3F1ZXVlX2luaXQodm9pZCk7XFxuK3ZvaWQgbmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KHZvaWQpO1xcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcXG4gaW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KTtcXG5AQCAtMTE1OCw2ICsxMTYwLDggQEAgc3RydWN0IG5ldHZzY19kZXZpY2Uge1xcbiBcXHQvKiBSZWNlaXZlIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdXMgYnV0IG1hbmFnZXMgYnkgTmV0VlNQICovXFxuIFxcdHZvaWQgKnJlY3ZfYnVmO1xcbiBcXHR1MzIgcmVjdl9idWZfc2l6ZTsgLyogYWxsb2NhdGVkIGJ5dGVzICovXFxuK1xcdHN0cnVjdCBwYWdlICoqcmVjdl9idWZfY2h1bmtzO1xcbitcXHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xcbiBcXHRzdHJ1Y3Qgdm1idXNfZ3BhZGwgcmVjdl9idWZfZ3BhZGxfaGFuZGxlO1xcbiBcXHR1MzIgcmVjdl9zZWN0aW9uX2NudDtcXG4gXFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xcbkBAIC0xMTY2LDYgKzExNzAsOCBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XFxuIFxcdC8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqL1xcbiBcXHR2b2lkICpzZW5kX2J1ZjtcXG4gXFx0dTMyIHNlbmRfYnVmX3NpemU7XFxuK1xcdHN0cnVjdCBwYWdlICoqc2VuZF9idWZfY2h1bmtzO1xcbitcXHR1MzIgc2VuZF9idWZfY2h1bmtfY250O1xcbiBcXHRzdHJ1Y3Qgdm1idXNfZ3BhZGwgc2VuZF9idWZfZ3BhZGxfaGFuZGxlO1xcbiBcXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcXG4gXFx0dTMyIHNlbmRfc2VjdGlvbl9zaXplO1xcbkBAIC0xMTkzLDcgKzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XFxuIFxcbiBcXHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTtcXG4gXFxuLVxcdHN0cnVjdCByY3VfaGVhZCByY3U7XFxuK1xcdHN0cnVjdCByY3Vfd29yayByd29yaztcXG4gfTtcXG4gXFxuIC8qIE5kaXNJbml0aWFsaXplIG1lc3NhZ2UgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXFxuaW5kZXggNTllOTUzNDFmOWIxZS4uYzU5ZjJhNDRiYWRmMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcXG5AQCAtMjgsNiArMjgsOCBAQFxcbiAjaW5jbHVkZSBcXFwiaHlwZXJ2X25ldC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibmV0dnNjX3RyYWNlLmhcXFwiXFxuIFxcbitzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKm5ldHZzY193cTtcXG4rXFxuIC8qXFxuICAqIFN3aXRjaCB0aGUgZGF0YSBwYXRoIGZyb20gdGhlIHN5bnRoZXRpYyBpbnRlcmZhY2UgdG8gdGhlIFZGXFxuICAqIGludGVyZmFjZS5cXG5AQCAtMTI1LDYgKzEyNyw0NyBAQCBzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4gXFx0cnRubF91bmxvY2soKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgX19mcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxcbit7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0a2ZyZWUobnZkZXYtXFx1MDAzZWV4dGVuc2lvbik7XFxuK1xcbitcXHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cXHUwMDNlcmVjdl9idWYsIG52ZGV2LVxcdTAwM2VyZWN2X2J1Zl9jaHVua3MsXFxuK1xcdFxcdFxcdCAgbnZkZXYtXFx1MDAzZXJlY3ZfYnVmX2NodW5rX2NudCk7XFxuK1xcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVxcdTAwM2VzZW5kX2J1ZiwgbnZkZXYtXFx1MDAzZXNlbmRfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0ICBudmRldi1cXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcXG4rXFx0Yml0bWFwX2ZyZWUobnZkZXYtXFx1MDAzZXNlbmRfc2VjdGlvbl9tYXApO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbitcXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNm52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLnhkcF9yeHEpO1xcbitcXHRcXHRrZnJlZShudmRldi1cXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XFxuK1xcdFxcdHZmcmVlKG52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XFxuK1xcdH1cXG4rXFxuK1xcdGtmcmVlKG52ZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4re1xcbitcXHRzdHJ1Y3QgcmN1X3dvcmsgKnJ3b3JrID0gdG9fcmN1X3dvcmsodyk7XFxuK1xcbitcXHRfX2ZyZWVfbmV0dnNjX2RldmljZShjb250YWluZXJfb2YocndvcmssIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByd29yaykpO1xcbit9XFxuK1xcbitpbnQgbmV0dnNjX3dvcmtxdWV1ZV9pbml0KHZvaWQpXFxuK3tcXG4rXFx0bmV0dnNjX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCJodl9uZXR2c2NcXFwiLCBXUV9VTkJPVU5ELCAwKTtcXG4rXFxuK1xcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcXG4rfVxcbitcXG4rdm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG4re1xcbitcXHRyY3VfYmFycmllcigpO1xcbitcXHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZTtcXG5AQCAtMTQzLDM2ICsxODYsMTggQEAgc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbm5lbF9pbml0X3dhaXQpO1xcbiBcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX29wZW4pO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXN1YmNoYW5fd29yaywgbmV0dnNjX3N1YmNoYW5fd29yayk7XFxuK1xcdElOSVRfUkNVX1dPUksoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJ3b3JrLCBmcmVlX25ldHZzY19kZXZpY2UpO1xcbiBcXG4gXFx0cmV0dXJuIG5ldF9kZXZpY2U7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLXtcXG4tXFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2XFxuLVxcdFxcdD0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBuZXR2c2NfZGV2aWNlLCByY3UpO1xcbi1cXHRpbnQgaTtcXG4tXFxuLVxcdGtmcmVlKG52ZGV2LVxcdTAwM2VleHRlbnNpb24pO1xcbi1cXG4tXFx0aWYgKCFudmRldi1cXHUwMDNlcmVjdl9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcXG4tXFx0XFx0dmZyZWUobnZkZXYtXFx1MDAzZXJlY3ZfYnVmKTtcXG4tXFx0aWYgKCFudmRldi1cXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcXG4tXFx0XFx0dmZyZWUobnZkZXYtXFx1MDAzZXNlbmRfYnVmKTtcXG4tXFx0Yml0bWFwX2ZyZWUobnZkZXYtXFx1MDAzZXNlbmRfc2VjdGlvbl9tYXApO1xcbi1cXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbi1cXHRcXHR4ZHBfcnhxX2luZm9fdW5yZWcoXFx1MDAyNm52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLnhkcF9yeHEpO1xcbi1cXHRcXHRrZnJlZShudmRldi1cXHUwMDNlY2hhbl90YWJsZVtpXS5yZWN2X2J1Zik7XFxuLVxcdFxcdHZmcmVlKG52ZGV2LVxcdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XFxuLVxcdH1cXG4tXFxuLVxcdGtmcmVlKG52ZGV2KTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlX3JjdShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXFxuIHtcXG4tXFx0Y2FsbF9yY3UoXFx1MDAyNm52ZGV2LVxcdTAwM2VyY3UsIGZyZWVfbmV0dnNjX2RldmljZSk7XFxuK1xcdC8qXFxuK1xcdCAqIERlZmVyIHRoZSBhY3R1YWwgZnJlZSB0byBwcm9jZXNzIGNvbnRleHQ6IHZ1bm1hcCgpIGFuZFxcbitcXHQgKiBzZXRfbWVtb3J5X2VuY3J5cHRlZCgpIGNhbm5vdCBydW4gZnJvbSBSQ1Ugc29mdGlycSBjb250ZXh0LlxcbitcXHQgKi9cXG4rXFx0cXVldWVfcmN1X3dvcmsobmV0dnNjX3dxLCBcXHUwMDI2bnZkZXYtXFx1MDAzZXJ3b3JrKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuQEAgLTM1MSw3ICszNzYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRidWZfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgYnVmX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBORVRWU0NfUkVDRUlWRV9CVUZGRVJfU0laRV9MRUdBQ1kpO1xcbiBcXG4tXFx0bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcXG4rXFx0bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYgPVxcbitcXHRcXHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2NodW5rX2NudCk7XFxuIFxcdGlmICghbmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWYpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIHJlY2VpdmUgYnVmZmVyIG9mIHNpemUgJXVcXFxcblxcXCIsXFxuQEAgLTM2Nyw5ICszOTUsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXFxuIFxcdCAqIHRoYW4gdGhlIGNoYW5uZWwgdG8gZXN0YWJsaXNoIHRoZSBncGFkbCBoYW5kbGUuXFxuIFxcdCAqL1xcbi1cXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2J1ZixcXG4tXFx0XFx0XFx0XFx0ICAgIGJ1Zl9zaXplLFxcbi1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7XFxuK1xcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkKGRldmljZS1cXHUwMDNlY2hhbm5lbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2J1ZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcmVjdl9idWZfZ3BhZGxfaGFuZGxlKTtcXG4gXFx0aWYgKHJldCAhPSAwKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIobmRldixcXG4gXFx0XFx0XFx0XFxcInVuYWJsZSB0byBlc3RhYmxpc2ggcmVjZWl2ZSBidWZmZXIncyBncGFkbFxcXFxuXFxcIik7XFxuQEAgLTQ1Nyw3ICs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbiBcXHRidWZfc2l6ZSA9IGRldmljZV9pbmZvLVxcdTAwM2VzZW5kX3NlY3Rpb25zICogZGV2aWNlX2luZm8tXFx1MDAzZXNlbmRfc2VjdGlvbl9zaXplO1xcbiBcXHRidWZfc2l6ZSA9IHJvdW5kX3VwKGJ1Zl9zaXplLCBQQUdFX1NJWkUpO1xcbiBcXG4tXFx0bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYgPSB2emFsbG9jKGJ1Zl9zaXplKTtcXG4rXFx0bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYgPVxcbitcXHRcXHR2bWJ1c19hbGxvY19idWZmZXIoZGV2aWNlLVxcdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmX2NodW5rcyxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmX2NodW5rX2NudCk7XFxuIFxcdGlmICghbmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWYpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LCBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIHNlbmQgYnVmZmVyIG9mIHNpemUgJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIGJ1Zl9zaXplKTtcXG5AQCAtNDcwLDkgKzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuIFxcdCAqIGNoYW5uZWwuICBOb3RlOiBUaGlzIGNhbGwgdXNlcyB0aGUgdm1idXMgY29ubmVjdGlvbiByYXRoZXJcXG4gXFx0ICogdGhhbiB0aGUgY2hhbm5lbCB0byBlc3RhYmxpc2ggdGhlIGdwYWRsIGhhbmRsZS5cXG4gXFx0ICovXFxuLVxcdHJldCA9IHZtYnVzX2VzdGFibGlzaF9ncGFkbChkZXZpY2UtXFx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmLFxcbi1cXHRcXHRcXHRcXHQgICAgYnVmX3NpemUsXFxuLVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlKTtcXG4rXFx0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVxcdTAwM2VjaGFubmVsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIG5ldF9kZXZpY2UtXFx1MDAzZXNlbmRfYnVmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGJ1Zl9zaXplLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xcbiBcXHRpZiAocmV0ICE9IDApIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihuZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwidW5hYmxlIHRvIGVzdGFibGlzaCBzZW5kIGJ1ZmZlcidzIGdwYWRsXFxcXG5cXFwiKTtcXG5AQCAtMTg2Myw3ICsxODk2LDExIEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbiBcXG4gY2xlYW51cDI6XFxuLVxcdGZyZWVfbmV0dnNjX2RldmljZShcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcmN1KTtcXG4rXFx0LypcXG4rXFx0ICogbmV0X2RldmljZSB3YXMgbmV2ZXIgcHVibGlzaGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9yIGFuXFxuK1xcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXFxuK1xcdCAqL1xcbitcXHRfX2ZyZWVfbmV0dnNjX2RldmljZShuZXRfZGV2aWNlKTtcXG4gXFxuIFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcXG5pbmRleCBlZTVhYjVjZWIyYmUyLi4xZDQzYzczZmQ3M2YxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXFxuQEAgLTI4NjcsMTIgKzI4NjcsMTcgQEAgc3RhdGljIHZvaWQgX19leGl0IG5ldHZzY19kcnZfZXhpdCh2b2lkKVxcbiB7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZuZXR2c2NfbmV0ZGV2X25vdGlmaWVyKTtcXG4gXFx0dm1idXNfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNm5ldHZzY19kcnYpO1xcbitcXHRuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3koKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdHJldCA9IG5ldHZzY193b3JrcXVldWVfaW5pdCgpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0aWYgKHJpbmdfc2l6ZSBcXHUwMDNjIFJJTkdfU0laRV9NSU4pIHtcXG4gXFx0XFx0cmluZ19zaXplID0gUklOR19TSVpFX01JTjtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiSW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxcXG5cXFwiLFxcbkBAIC0yODkwLDYgKzI4OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcXG4gXFxuIGVycl92bWJ1c19yZWc6XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZuZXR2c2NfbmV0ZGV2X25vdGlmaWVyKTtcXG4rXFx0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmggYi9pbmNsdWRlL2xpbnV4L2h5cGVydi5oXFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxcbkBAIC03MCw3ICs3MCw4IEBAXFxuICAqL1xcbiBlbnVtIGh2X2dwYWRsX3R5cGUge1xcbiBcXHRIVl9HUEFETF9CVUZGRVIsXFxuLVxcdEhWX0dQQURMX1JJTkdcXG4rXFx0SFZfR1BBRExfUklORyxcXG4rXFx0SFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRFxcbiB9O1xcbiBcXG4gLyogU2luZ2xlLXBhZ2UgYnVmZmVyICovXFxuQEAgLTEyMDUsOSArMTIwNiwyMSBAQCBleHRlcm4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgdTMyIHNpemUsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xcbiBcXG4rZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICB2b2lkICprYnVmZmVyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHUzMiBzaXplLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xcbitcXG4gZXh0ZXJuIGludCB2bWJ1c190ZWFyZG93bl9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcXG4gXFxuK2V4dGVybiB2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuK1xcdFxcdFxcdFxcdHUzMiBzaXplLFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxcbitcXHRcXHRcXHRcXHR1MzIgKmNodW5rX2NudF9vdXQpO1xcbitcXG4rZXh0ZXJuIHZvaWQgdm1idXNfZnJlZV9idWZmZXIodm9pZCAqYWRkciwgc3RydWN0IHBhZ2UgKipjaHVua3MsIHUzMiBjaHVua19jbnQpO1xcbitcXG4gdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTtcXG4gXFxuIGV4dGVybiBpbnQgdm1idXNfcmVjdnBhY2tldChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NDQuNTY4NTU2OTA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA3Nzg1NDE5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVl9ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWJ1c19hbGxvY19idWZmZXJcIixcbiAgICBcInZtYnVzX2ZyZWVfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IFZNQnVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBHUEFETCBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyAoYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGApIGFuZCB1cGRhdGVzIHRoZSBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIChgbmV0dnNjYCkgdG8gdXNlIHRoZW0uIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgbWVtb3J5IGRlY3J5cHRpb24gYW5kIG1hcHBpbmcgZm9yIFZNQnVzIGNoYW5uZWxzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBIeXBlci1WIFZNQnVzIGlzIGVtdWxhdGVkIG9yIG1vY2tlZCAoZS5nLiwgdmlhIHN5emthbGxlcikuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIG5ldyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgR1BBREwgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjZiNDQ1ODlmZmE0NWViYzJjZGU2Y2ViYWZjMGFiNzRjNDE2NDQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyMDo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbmluZGV4IDY4MjFmMjI1MjQ4YjEuLmY0MzcwNjE3ZGVhY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h2L2NoYW5uZWwuY1xuKysrIGIvZHJpdmVycy9odi9jaGFubmVsLmNcbkBAIC0xMywxMSArMTMsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbG9nMi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9oeXBlcnYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZXRfbWVtb3J5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vbXNoeXBlcnYuaFx1MDAzZVxuQEAgLTQwLDYgKzQyLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaHZfZ3BhZGxfc2l6ZShlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdTMyIHNpemUpXG4ge1xuIFx0c3dpdGNoICh0eXBlKSB7XG4gXHRjYXNlIEhWX0dQQURMX0JVRkZFUjpcbitcdGNhc2UgSFZfR1BBRExfQlVGRkVSX0RFQ1JZUFRFRDpcbiBcdFx0cmV0dXJuIHNpemU7XG4gXHRjYXNlIEhWX0dQQURMX1JJTkc6XG4gXHRcdC8qIFRoZSBzaXplIG9mIGEgcmluZ2J1ZmZlciBtdXN0IGJlIHBhZ2UtYWxpZ25lZCAqL1xuQEAgLTEwMCw2ICsxMDMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBodl9ncGFkbF9odnBmbihlbnVtIGh2X2dwYWRsX3R5cGUgdHlwZSwgdm9pZCAqa2J1ZmZlcixcbiBcbiBcdHN3aXRjaCAodHlwZSkge1xuIFx0Y2FzZSBIVl9HUEFETF9CVUZGRVI6XG4rXHRjYXNlIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQ6XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIVl9HUEFETF9SSU5HOlxuIFx0XHRpZiAoaSA9PSAwKVxuQEAgLTQ2MCw3ICs0NjQsOCBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0fVxuIFxuIFx0Z3BhZGwtXHUwMDNlZGVjcnlwdGVkID0gISgoY2hhbm5lbC1cdTAwM2Vjb19leHRlcm5hbF9tZW1vcnkgXHUwMDI2XHUwMDI2IHR5cGUgPT0gSFZfR1BBRExfQlVGRkVSKSB8fFxuLVx0XHQoY2hhbm5lbC1cdTAwM2Vjb19yaW5nX2J1ZmZlciBcdTAwMjZcdTAwMjYgdHlwZSA9PSBIVl9HUEFETF9SSU5HKSk7XG4rXHRcdChjaGFubmVsLVx1MDAzZWNvX3JpbmdfYnVmZmVyIFx1MDAyNlx1MDAyNiB0eXBlID09IEhWX0dQQURMX1JJTkcpIHx8XG4rXHRcdCh0eXBlID09IEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQpKTtcbiBcdGlmIChncGFkbC1cdTAwM2VkZWNyeXB0ZWQpIHtcbiBcdFx0LypcbiBcdFx0ICogVGhlIFwiZGVjcnlwdGVkXCIgZmxhZyBiZWluZyB0cnVlIGFzc3VtZXMgdGhhdCBzZXRfbWVtb3J5X2RlY3J5cHRlZCgpIHN1Y2NlZWRzLlxuQEAgLTU3NSw3ICs1ODAsNyBAQCBzdGF0aWMgaW50IF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuICAqIEBjaGFubmVsOiBhIGNoYW5uZWxcbiAgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2NcbiAgKiBAc2l6ZTogcGFnZS1zaXplIG11bHRpcGxlXG4tICogQGdwYWRsX2hhbmRsZTogc29tZSBmdW5reSB0aGluZ1xuKyAqIEBncGFkbDogb3V0cHV0IGdwYWRsXG4gICovXG4gaW50IHZtYnVzX2VzdGFibGlzaF9ncGFkbChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCwgdm9pZCAqa2J1ZmZlcixcbiBcdFx0XHQgIHUzMiBzaXplLCBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKVxuQEAgLTU4NSw2ICs1OTAsMTc5IEBAIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsIHZvaWQgKmtidWZmZXIsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XG4gXG4rLypcbisgKiB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZCAtIEVzdGFibGlzaCBhIEdQQURMIGZvciBhIGJ1ZmZlclxuKyAqIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlci5cbisgKlxuKyAqIEBjaGFubmVsOiBhIGNoYW5uZWxcbisgKiBAa2J1ZmZlcjogZnJvbSBrbWFsbG9jIG9yIHZtYWxsb2M7IG11c3QgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgYnkgdGhlIGNhbGxlclxuKyAqIEBzaXplOiBwYWdlLXNpemUgbXVsdGlwbGVcbisgKiBAZ3BhZGw6IG91dHB1dCBncGFkbFxuKyAqXG4rICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmUtZW5jcnlwdGluZyB0aGUgYnVmZmVyIGJlZm9yZSBmcmVlaW5nIGl0LlxuKyAqL1xuK2ludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZChzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcbitcdFx0XHRcdFx0ICAgdm9pZCAqa2J1ZmZlciwgdTMyIHNpemUsXG4rXHRcdFx0XHRcdCAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpXG4re1xuK1x0cmV0dXJuIF9fdm1idXNfZXN0YWJsaXNoX2dwYWRsKGNoYW5uZWwsIEhWX0dQQURMX0JVRkZFUl9ERUNSWVBURUQsXG4rXHRcdFx0XHQgICAgICAga2J1ZmZlciwgc2l6ZSwgMFUsIGdwYWRsKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xuK1xuKy8qKlxuKyAqIHZtYnVzX2ZyZWVfYnVmZmVyIC0gcmVsZWFzZSBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgdm1idXNfYWxsb2NfYnVmZmVyKCkuXG4rICpcbisgKiBAYWRkcjogYnVmZmVyIGFkZHJlc3MsIG9yIE5VTEwgaWYgbm9uZSB3YXMgYWxsb2NhdGVkIChlLmcuIGNsZWFudXAgZnJvbSBhXG4rICogICAgICAgIGZhaWxlZCBhbGxvY2F0aW9uKVxuKyAqIEBjaHVua3M6IGNodW5rcyBhcnJheSBmcm9tIHZtYnVzX2FsbG9jX2J1ZmZlcigpLCBvciBOVUxMXG4rICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xuKyAqXG4rICogV2hlbiBAY2h1bmtzIGlzIE5VTEwgdGhlIGJ1ZmZlciBpcyBhIHBsYWluIHZ6YWxsb2MoKSBhbGxvY2F0aW9uLlxuKyAqXG4rICogT3RoZXJ3aXNlIHRlYXIgZG93biB0aGUgdm1hcCwgYW5kIGZvciBlYWNoIGNodW5rIHJlLWVuY3J5cHQgYW5kIGZyZWVcbisgKiB0aGUgdW5kZXJseWluZyBwYWdlcy4gQW55IGNodW5rIHRoYXQgY2Fubm90IGJlIHJlLWVuY3J5cHRlZCBpcyBsZWFrZWQuXG4rICovXG4rdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudClcbit7XG4rXHR1MzIgaTtcbitcbitcdGlmICghY2h1bmtzKSB7XG4rXHRcdHZmcmVlKGFkZHIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHR2dW5tYXAoYWRkcik7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjaHVua19jbnQ7IGkrKykge1xuK1x0XHR1bnNpZ25lZCBsb25nIHZhZGRyID1cbitcdFx0XHQodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MoY2h1bmtzW2ldKTtcbitcdFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIocGFnZV9mb2xpbyhjaHVua3NbaV0pKTtcbitcbitcdFx0aWYgKHNldF9tZW1vcnlfZW5jcnlwdGVkKHZhZGRyLCAxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRfX2ZyZWVfcGFnZXMoY2h1bmtzW2ldLCBvcmRlcik7XG4rXHR9XG4rXG4rXHRrdmZyZWUoY2h1bmtzKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZnJlZV9idWZmZXIpO1xuK1xuKy8qKlxuKyAqIHZtYnVzX2FsbG9jX2J1ZmZlciAtIGFsbG9jYXRlIGEgaG9zdC12aXNpYmxlLCB2aXJ0dWFsbHktY29udGlndW91cyBidWZmZXIuXG4rICpcbisgKiBAY2hhbm5lbDogdGhlIGNoYW5uZWwgdGhlIGJ1ZmZlciB3aWxsIGJlIGF0dGFjaGVkIHRvXG4rICogQHNpemU6IHJlcXVlc3RlZCBidWZmZXIgc2l6ZSBpbiBieXRlcyAod2lsbCBiZSByb3VuZGVkIHVwIHRvIFBBR0VfU0laRSlcbisgKiBAY2h1bmtzX291dDogb24gc3VjY2Vzcywgc2V0IHRvIHRoZSBhcnJheSBvZiB1bmRlcmx5aW5nIGNodW5rcywgb3IgTlVMTCB3aGVuXG4rICogICAgICAgICAgICAgIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCB3aXRoIHZ6YWxsb2MoKVxuKyAqIEBjaHVua19jbnRfb3V0OiBvbiBzdWNjZXNzLCBzZXQgdG8gdGhlIG51bWJlciBvZiBjaHVua3NcbisgKlxuKyAqIEJ1ZmZlcnMgbm90IHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgd2l0aCB2emFsbG9jKCkuXG4rICpcbisgKiBCdWZmZXJzIHJlcXVpcmluZyBkZWNyeXB0aW9uIGFyZSBhbGxvY2F0ZWQgYXMgYSBzZXJpZXMgb2ZcbisgKiBwaHlzaWNhbGx5LWNvbnRpZ3VvdXMgY2h1bmtzLCBzdGFydGluZyBhdCBNQVhfUEFHRV9PUkRFUiBhbmQgZmFsbGluZyBiYWNrIHRvXG4rICogc21hbGxlciBvcmRlcnMgb24gYWxsb2NhdGlvbiBmYWlsdXJlLiBFYWNoIGNodW5rIGlzIHRyYW5zaXRpb25lZCB0b1xuKyAqIGhvc3QtdmlzaWJsZSB2aWEgc2V0X21lbW9yeV9kZWNyeXB0ZWQoKSBvbiBpdHMgZGlyZWN0LW1hcCBhZGRyZXNzLCB0aGVuIGFsbFxuKyAqIGNodW5rcyBhcmUgY29tYmluZWQgaW50byBhIHZpcnR1YWxseS1jb250aWd1b3VzIHJhbmdlIHZpYSB2bWFwKCkuXG4rICpcbisgKiBSZXR1cm46IHRoZSBidWZmZXIncyB2aXJ0dWFsIGFkZHJlc3MsIG9yIE5VTEwgb24gZmFpbHVyZS5cbisgKi9cbit2b2lkICp2bWJ1c19hbGxvY19idWZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4rXHRcdFx0IHUzMiBzaXplLFxuK1x0XHRcdCBzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuK1x0XHRcdCB1MzIgKmNodW5rX2NudF9vdXQpXG4re1xuK1x0dW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IFBGTl9VUChzaXplKTtcbitcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nID0gbnJfcGFnZXM7XG4rXHR1bnNpZ25lZCBsb25nIHBhZ2VfaWR4ID0gMDtcbitcdHN0cnVjdCBwYWdlICoqY2h1bmtzID0gTlVMTDtcbitcdHN0cnVjdCBwYWdlICoqcGFnZXMgPSBOVUxMO1xuK1x0aW50IG9yZGVyID0gTUFYX1BBR0VfT1JERVI7XG4rXHR1MzIgY2h1bmtfY250ID0gMDtcbitcdHZvaWQgKmFkZHI7XG4rXHR1MzIgaTtcbitcdGludCByZXQ7XG4rXG4rXHQqY2h1bmtzX291dCA9IE5VTEw7XG4rXHQqY2h1bmtfY250X291dCA9IDA7XG4rXG4rXHRpZiAoIW5yX3BhZ2VzKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdC8qIElmIHRoZSBidWZmZXIgZG9lcyBub3QgbmVlZCB0byBiZSBkZWNyeXB0ZWQsIGp1c3QgdXNlIHZ6YWxsb2MoKSAqL1xuK1x0aWYgKCFodl9pc19pc29sYXRpb25fc3VwcG9ydGVkKCkgfHwgY2hhbm5lbC1cdTAwM2Vjb19leHRlcm5hbF9tZW1vcnkpXG4rXHRcdHJldHVybiB2emFsbG9jKG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbitcbitcdC8qIFdvcnN0IGNhc2U6IGV2ZXJ5IGNodW5rIGlzIGEgc2luZ2xlIHBhZ2UuICovXG4rXHRjaHVua3MgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpjaHVua3MpLFxuK1x0XHRcdFx0R0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pO1xuK1x0aWYgKCFjaHVua3MpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0cGFnZXMgPSBrdm1hbGxvY19hcnJheShucl9wYWdlcywgc2l6ZW9mKCpwYWdlcyksIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwYWdlcylcbitcdFx0Z290byBlcnI7XG4rXG4rXHR3aGlsZSAocmVtYWluaW5nKSB7XG4rXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRnZnBfdCBnZnA7XG4rXG4rXHRcdG9yZGVyID0gbWluKG9yZGVyLCBpbG9nMihyZW1haW5pbmcpKTtcbitcbitcdFx0LypcbitcdFx0ICogVXNlIF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk4gdG8gYXZvaWQgT09NLWtpbGxpbmcsXG4rXHRcdCAqIGJ1dCB0cnkgaGFyZGVyIGF0IG9yZGVyIDAgc2luY2UgdGhhdCBpcyB0aGUgZmluYWxcbitcdFx0ICogZmFsbGJhY2suXG4rXHRcdCAqIF9fR0ZQX0NPTVAgc3RvcmVzIG9yZGVyIGluZm9ybWF0aW9uIGluIHRoZSBwYWdlIGZvbGlvLlxuK1x0XHQgKi9cbitcdFx0Z2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk87XG4rXHRcdGlmIChvcmRlcilcbitcdFx0XHRnZnAgfD0gX19HRlBfQ09NUCB8IF9fR0ZQX05PUkVUUlkgfCBfX0dGUF9OT1dBUk47XG4rXG4rXHRcdHBhZ2UgPSBhbGxvY19wYWdlc19ub2RlKGNwdV90b19ub2RlKGNoYW5uZWwtXHUwMDNldGFyZ2V0X2NwdSksXG4rXHRcdFx0XHRcdGdmcCwgb3JkZXIpO1xuK1x0XHRpZiAoIXBhZ2UpIHtcbitcdFx0XHRpZiAoIW9yZGVyLS0pXG4rXHRcdFx0XHRnb3RvIGVycjtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRyZXQgPSBzZXRfbWVtb3J5X2RlY3J5cHRlZCgodW5zaWduZWQgbG9uZylwYWdlX2FkZHJlc3MocGFnZSksXG4rXHRcdFx0XHRcdCAgIDFVIFx1MDAzY1x1MDAzYyBvcmRlcik7XG4rXHRcdGlmIChyZXQpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIHNldF9tZW1vcnlfZGVjcnlwdGVkKCkgZmFpbGVkOyB0aGUgcGFnZSBzdGF0ZSBpc1xuK1x0XHRcdCAqIHVua25vd24gc28gaXQgbXVzdCBiZSBsZWFrZWQgcmF0aGVyIHRoYW4gZnJlZWQuXG4rXHRcdFx0ICovXG4rXHRcdFx0Z290byBlcnI7XG4rXHRcdH1cbitcbitcdFx0Y2h1bmtzW2NodW5rX2NudCsrXSA9IHBhZ2U7XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjICgxVSBcdTAwM2NcdTAwM2Mgb3JkZXIpOyBpKyspXG4rXHRcdFx0cGFnZXNbcGFnZV9pZHgrK10gPSBwYWdlICsgaTtcbitcbitcdFx0cmVtYWluaW5nIC09IDFVIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdH1cbitcbitcdGFkZHIgPSB2bWFwKHBhZ2VzLCBucl9wYWdlcywgVk1fTUFQLCBwZ3Byb3RfZGVjcnlwdGVkKFBBR0VfS0VSTkVMKSk7XG4rXHRpZiAoIWFkZHIpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0bWVtc2V0KGFkZHIsIDAsIG5yX3BhZ2VzIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKTtcbitcbitcdGt2ZnJlZShwYWdlcyk7XG4rXHQqY2h1bmtzX291dCA9IGNodW5rcztcbitcdCpjaHVua19jbnRfb3V0ID0gY2h1bmtfY250O1xuK1x0cmV0dXJuIGFkZHI7XG4rXG4rZXJyOlxuK1x0a3ZmcmVlKHBhZ2VzKTtcbitcdHZtYnVzX2ZyZWVfYnVmZmVyKE5VTEwsIGNodW5rcywgY2h1bmtfY250KTtcbitcdHJldHVybiBOVUxMO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xuK1xuIC8qKlxuICAqIHJlcXVlc3RfYXJyX2luaXQgLSBBbGxvY2F0ZXMgbWVtb3J5IGZvciB0aGUgcmVxdWVzdG9yIGFycmF5LiBFYWNoIHNsb3RcbiAgKiBrZWVwcyB0cmFjayBvZiB0aGUgbmV4dCBhdmFpbGFibGUgc2xvdCBpbiB0aGUgYXJyYXkuIEluaXRpYWxseSwgZWFjaFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmggYi9kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oXG5pbmRleCA3Mzk3YzY5M2Y5ODRhLi40ODQxMzY3ZmRhYjJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuKysrIGIvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaFxuQEAgLTIyMCw2ICsyMjAsOCBAQCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xuIFxuIGV4dGVybiB1MzIgbmV0dnNjX3JpbmdfYnl0ZXM7XG4gXG4raW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcbit2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcbiBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcbiBpbnQgbmV0dnNjX2FsbG9jX3JlY3ZfY29tcF9yaW5nKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLCB1MzIgcV9pZHgpO1xuQEAgLTExNTgsNiArMTE2MCw4IEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbiBcdC8qIFJlY2VpdmUgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyBidXQgbWFuYWdlcyBieSBOZXRWU1AgKi9cbiBcdHZvaWQgKnJlY3ZfYnVmO1xuIFx0dTMyIHJlY3ZfYnVmX3NpemU7IC8qIGFsbG9jYXRlZCBieXRlcyAqL1xuK1x0c3RydWN0IHBhZ2UgKipyZWN2X2J1Zl9jaHVua3M7XG4rXHR1MzIgcmVjdl9idWZfY2h1bmtfY250O1xuIFx0c3RydWN0IHZtYnVzX2dwYWRsIHJlY3ZfYnVmX2dwYWRsX2hhbmRsZTtcbiBcdHUzMiByZWN2X3NlY3Rpb25fY250O1xuIFx0dTMyIHJlY3Zfc2VjdGlvbl9zaXplO1xuQEAgLTExNjYsNiArMTE3MCw4IEBAIHN0cnVjdCBuZXR2c2NfZGV2aWNlIHtcbiBcdC8qIFNlbmQgYnVmZmVyIGFsbG9jYXRlZCBieSB1cyAqL1xuIFx0dm9pZCAqc2VuZF9idWY7XG4gXHR1MzIgc2VuZF9idWZfc2l6ZTtcbitcdHN0cnVjdCBwYWdlICoqc2VuZF9idWZfY2h1bmtzO1xuK1x0dTMyIHNlbmRfYnVmX2NodW5rX2NudDtcbiBcdHN0cnVjdCB2bWJ1c19ncGFkbCBzZW5kX2J1Zl9ncGFkbF9oYW5kbGU7XG4gXHR1MzIgc2VuZF9zZWN0aW9uX2NudDtcbiBcdHUzMiBzZW5kX3NlY3Rpb25fc2l6ZTtcbkBAIC0xMTkzLDcgKzExOTksNyBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSB7XG4gXG4gXHRzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgY2hhbl90YWJsZVtWUlNTX0NIQU5ORUxfTUFYXTtcbiBcbi1cdHN0cnVjdCByY3VfaGVhZCByY3U7XG4rXHRzdHJ1Y3QgcmN1X3dvcmsgcndvcms7XG4gfTtcbiBcbiAvKiBOZGlzSW5pdGlhbGl6ZSBtZXNzYWdlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jIGIvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXG5pbmRleCA1OWU5NTM0MWY5YjFlLi5jNTlmMmE0NGJhZGYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNcbkBAIC0yOCw2ICsyOCw4IEBAXG4gI2luY2x1ZGUgXCJoeXBlcnZfbmV0LmhcIlxuICNpbmNsdWRlIFwibmV0dnNjX3RyYWNlLmhcIlxuIFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbmV0dnNjX3dxO1xuK1xuIC8qXG4gICogU3dpdGNoIHRoZSBkYXRhIHBhdGggZnJvbSB0aGUgc3ludGhldGljIGludGVyZmFjZSB0byB0aGUgVkZcbiAgKiBpbnRlcmZhY2UuXG5AQCAtMTI1LDYgKzEyNyw0NyBAQCBzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbiBcdHJ0bmxfdW5sb2NrKCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcbit7XG4rXHRpbnQgaTtcbitcbitcdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4rXG4rXHR2bWJ1c19mcmVlX2J1ZmZlcihudmRldi1cdTAwM2VyZWN2X2J1ZiwgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtzLFxuK1x0XHRcdCAgbnZkZXYtXHUwMDNlcmVjdl9idWZfY2h1bmtfY250KTtcbitcdHZtYnVzX2ZyZWVfYnVmZmVyKG52ZGV2LVx1MDAzZXNlbmRfYnVmLCBudmRldi1cdTAwM2VzZW5kX2J1Zl9jaHVua3MsXG4rXHRcdFx0ICBudmRldi1cdTAwM2VzZW5kX2J1Zl9jaHVua19jbnQpO1xuK1x0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpKyspIHtcbitcdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNm52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ueGRwX3J4cSk7XG4rXHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuK1x0XHR2ZnJlZShudmRldi1cdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XG4rXHR9XG4rXG4rXHRrZnJlZShudmRldik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4re1xuK1x0c3RydWN0IHJjdV93b3JrICpyd29yayA9IHRvX3JjdV93b3JrKHcpO1xuK1xuK1x0X19mcmVlX25ldHZzY19kZXZpY2UoY29udGFpbmVyX29mKHJ3b3JrLCBzdHJ1Y3QgbmV0dnNjX2RldmljZSwgcndvcmspKTtcbit9XG4rXG4raW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKVxuK3tcbitcdG5ldHZzY193cSA9IGFsbG9jX3dvcmtxdWV1ZShcImh2X25ldHZzY1wiLCBXUV9VTkJPVU5ELCAwKTtcbitcbitcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcbit9XG4rXG4rdm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcbit7XG4rXHRyY3VfYmFycmllcigpO1xuK1x0ZGVzdHJveV93b3JrcXVldWUobmV0dnNjX3dxKTtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG4ge1xuIFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2U7XG5AQCAtMTQzLDM2ICsxODYsMTggQEAgc3RhdGljIHN0cnVjdCBuZXR2c2NfZGV2aWNlICphbGxvY19uZXRfZGV2aWNlKHZvaWQpXG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFubmVsX2luaXRfd2FpdCk7XG4gXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc3ViY2hhbl9vcGVuKTtcbiBcdElOSVRfV09SSyhcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXN1YmNoYW5fd29yaywgbmV0dnNjX3N1YmNoYW5fd29yayk7XG4rXHRJTklUX1JDVV9XT1JLKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XG4gXG4gXHRyZXR1cm4gbmV0X2RldmljZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi17XG4tXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXZcbi1cdFx0PSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJjdSk7XG4tXHRpbnQgaTtcbi1cbi1cdGtmcmVlKG52ZGV2LVx1MDAzZWV4dGVuc2lvbik7XG4tXG4tXHRpZiAoIW52ZGV2LVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZS5kZWNyeXB0ZWQpXG4tXHRcdHZmcmVlKG52ZGV2LVx1MDAzZXJlY3ZfYnVmKTtcbi1cdGlmICghbnZkZXYtXHUwMDNlc2VuZF9idWZfZ3BhZGxfaGFuZGxlLmRlY3J5cHRlZClcbi1cdFx0dmZyZWUobnZkZXYtXHUwMDNlc2VuZF9idWYpO1xuLVx0Yml0bWFwX2ZyZWUobnZkZXYtXHUwMDNlc2VuZF9zZWN0aW9uX21hcCk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBWUlNTX0NIQU5ORUxfTUFYOyBpKyspIHtcbi1cdFx0eGRwX3J4cV9pbmZvX3VucmVnKFx1MDAyNm52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ueGRwX3J4cSk7XG4tXHRcdGtmcmVlKG52ZGV2LVx1MDAzZWNoYW5fdGFibGVbaV0ucmVjdl9idWYpO1xuLVx0XHR2ZnJlZShudmRldi1cdTAwM2VjaGFuX3RhYmxlW2ldLm1yYy5zbG90cyk7XG4tXHR9XG4tXG4tXHRrZnJlZShudmRldik7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIGZyZWVfbmV0dnNjX2RldmljZV9yY3Uoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KVxuIHtcbi1cdGNhbGxfcmN1KFx1MDAyNm52ZGV2LVx1MDAzZXJjdSwgZnJlZV9uZXR2c2NfZGV2aWNlKTtcbitcdC8qXG4rXHQgKiBEZWZlciB0aGUgYWN0dWFsIGZyZWUgdG8gcHJvY2VzcyBjb250ZXh0OiB2dW5tYXAoKSBhbmRcbitcdCAqIHNldF9tZW1vcnlfZW5jcnlwdGVkKCkgY2Fubm90IHJ1biBmcm9tIFJDVSBzb2Z0aXJxIGNvbnRleHQuXG4rXHQgKi9cbitcdHF1ZXVlX3JjdV93b3JrKG5ldHZzY193cSwgXHUwMDI2bnZkZXYtXHUwMDNlcndvcmspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbkBAIC0zNTEsNyArMzc2LDEwIEBAIHN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcbiBcdFx0YnVmX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJ1Zl9zaXplLFxuIFx0XHRcdFx0IE5FVFZTQ19SRUNFSVZFX0JVRkZFUl9TSVpFX0xFR0FDWSk7XG4gXG4tXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID0gdnphbGxvYyhidWZfc2l6ZSk7XG4rXHRuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmID1cbitcdFx0dm1idXNfYWxsb2NfYnVmZmVyKGRldmljZS1cdTAwM2VjaGFubmVsLCBidWZfc2l6ZSxcbitcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWZfY2h1bmtzLFxuK1x0XHRcdFx0ICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9jaHVua19jbnQpO1xuIFx0aWYgKCFuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmKSB7XG4gXHRcdG5ldGRldl9lcnIobmRldixcbiBcdFx0XHQgICBcInVuYWJsZSB0byBhbGxvY2F0ZSByZWNlaXZlIGJ1ZmZlciBvZiBzaXplICV1XFxuXCIsXG5AQCAtMzY3LDkgKzM5NSwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlcmVjdl9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VyZWN2X2J1Zl9ncGFkbF9oYW5kbGUpO1xuK1x0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVx1MDAzZWNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmLFxuK1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4rXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXJlY3ZfYnVmX2dwYWRsX2hhbmRsZSk7XG4gXHRpZiAocmV0ICE9IDApIHtcbiBcdFx0bmV0ZGV2X2VycihuZGV2LFxuIFx0XHRcdFwidW5hYmxlIHRvIGVzdGFibGlzaCByZWNlaXZlIGJ1ZmZlcidzIGdwYWRsXFxuXCIpO1xuQEAgLTQ1Nyw3ICs0ODYsMTAgQEAgc3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0YnVmX3NpemUgPSBkZXZpY2VfaW5mby1cdTAwM2VzZW5kX3NlY3Rpb25zICogZGV2aWNlX2luZm8tXHUwMDNlc2VuZF9zZWN0aW9uX3NpemU7XG4gXHRidWZfc2l6ZSA9IHJvdW5kX3VwKGJ1Zl9zaXplLCBQQUdFX1NJWkUpO1xuIFxuLVx0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9IHZ6YWxsb2MoYnVmX3NpemUpO1xuK1x0bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1ZiA9XG4rXHRcdHZtYnVzX2FsbG9jX2J1ZmZlcihkZXZpY2UtXHUwMDNlY2hhbm5lbCwgYnVmX3NpemUsXG4rXHRcdFx0XHQgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmX2NodW5rcyxcbitcdFx0XHRcdCAgIFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWZfY2h1bmtfY250KTtcbiBcdGlmICghbmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zikge1xuIFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwidW5hYmxlIHRvIGFsbG9jYXRlIHNlbmQgYnVmZmVyIG9mIHNpemUgJXVcXG5cIixcbiBcdFx0XHQgICBidWZfc2l6ZSk7XG5AQCAtNDcwLDkgKzUwMiwxMCBAQCBzdGF0aWMgaW50IG5ldHZzY19pbml0X2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4gXHQgKiBjaGFubmVsLiAgTm90ZTogVGhpcyBjYWxsIHVzZXMgdGhlIHZtYnVzIGNvbm5lY3Rpb24gcmF0aGVyXG4gXHQgKiB0aGFuIHRoZSBjaGFubmVsIHRvIGVzdGFibGlzaCB0aGUgZ3BhZGwgaGFuZGxlLlxuIFx0ICovXG4tXHRyZXQgPSB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoZGV2aWNlLVx1MDAzZWNoYW5uZWwsIG5ldF9kZXZpY2UtXHUwMDNlc2VuZF9idWYsXG4tXHRcdFx0XHQgICAgYnVmX3NpemUsXG4tXHRcdFx0XHQgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VzZW5kX2J1Zl9ncGFkbF9oYW5kbGUpO1xuK1x0cmV0ID0gdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoZGV2aWNlLVx1MDAzZWNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmLFxuK1x0XHRcdFx0XHRcdCAgICAgYnVmX3NpemUsXG4rXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZXNlbmRfYnVmX2dwYWRsX2hhbmRsZSk7XG4gXHRpZiAocmV0ICE9IDApIHtcbiBcdFx0bmV0ZGV2X2VycihuZGV2LFxuIFx0XHRcdCAgIFwidW5hYmxlIHRvIGVzdGFibGlzaCBzZW5kIGJ1ZmZlcidzIGdwYWRsXFxuXCIpO1xuQEAgLTE4NjMsNyArMTg5NiwxMSBAQCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuIFxuIGNsZWFudXAyOlxuLVx0ZnJlZV9uZXR2c2NfZGV2aWNlKFx1MDAyNm5ldF9kZXZpY2UtXHUwMDNlcmN1KTtcbitcdC8qXG4rXHQgKiBuZXRfZGV2aWNlIHdhcyBuZXZlciBwdWJsaXNoZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgYW5cbitcdCAqIFJDVSBncmFjZSBwZXJpb2QgLS0gY2FsbCB0aGUgZnJlZSByb3V0aW5lIHN5bmNocm9ub3VzbHkuXG4rXHQgKi9cbitcdF9fZnJlZV9uZXR2c2NfZGV2aWNlKG5ldF9kZXZpY2UpO1xuIFxuIFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYyBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmNcbmluZGV4IGVlNWFiNWNlYjJiZTIuLjFkNDNjNzNmZDczZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXG4rKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjX2Rydi5jXG5AQCAtMjg2NywxMiArMjg2NywxNyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmV0dnNjX2Rydl9leGl0KHZvaWQpXG4ge1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXHUwMDI2bmV0dnNjX25ldGRldl9ub3RpZmllcik7XG4gXHR2bWJ1c19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZuZXR2c2NfZHJ2KTtcbitcdG5ldHZzY193b3JrcXVldWVfZGVzdHJveSgpO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9faW5pdCBuZXR2c2NfZHJ2X2luaXQodm9pZClcbiB7XG4gXHRpbnQgcmV0O1xuIFxuK1x0cmV0ID0gbmV0dnNjX3dvcmtxdWV1ZV9pbml0KCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuIFx0aWYgKHJpbmdfc2l6ZSBcdTAwM2MgUklOR19TSVpFX01JTikge1xuIFx0XHRyaW5nX3NpemUgPSBSSU5HX1NJWkVfTUlOO1xuIFx0XHRwcl9pbmZvKFwiSW5jcmVhc2VkIHJpbmdfc2l6ZSB0byAldSAobWluIGFsbG93ZWQpXFxuXCIsXG5AQCAtMjg5MCw2ICsyODk1LDcgQEAgc3RhdGljIGludCBfX2luaXQgbmV0dnNjX2Rydl9pbml0KHZvaWQpXG4gXG4gZXJyX3ZtYnVzX3JlZzpcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNm5ldHZzY19uZXRkZXZfbm90aWZpZXIpO1xuK1x0bmV0dnNjX3dvcmtxdWV1ZV9kZXN0cm95KCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaFxuaW5kZXggOTY0ZjFiZTgxNTBjNS4uZjg0M2VlMGVmYTIyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbisrKyBiL2luY2x1ZGUvbGludXgvaHlwZXJ2LmhcbkBAIC03MCw3ICs3MCw4IEBAXG4gICovXG4gZW51bSBodl9ncGFkbF90eXBlIHtcbiBcdEhWX0dQQURMX0JVRkZFUixcbi1cdEhWX0dQQURMX1JJTkdcbitcdEhWX0dQQURMX1JJTkcsXG4rXHRIVl9HUEFETF9CVUZGRVJfREVDUllQVEVEXG4gfTtcbiBcbiAvKiBTaW5nbGUtcGFnZSBidWZmZXIgKi9cbkBAIC0xMjA1LDkgKzEyMDYsMjEgQEAgZXh0ZXJuIGludCB2bWJ1c19lc3RhYmxpc2hfZ3BhZGwoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4gXHRcdFx0XHQgICAgICB1MzIgc2l6ZSxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCB2bWJ1c19ncGFkbCAqZ3BhZGwpO1xuIFxuK2V4dGVybiBpbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4rXHRcdFx0XHRcdFx0ICB2b2lkICprYnVmZmVyLFxuK1x0XHRcdFx0XHRcdCAgdTMyIHNpemUsXG4rXHRcdFx0XHRcdFx0ICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbitcbiBleHRlcm4gaW50IHZtYnVzX3RlYXJkb3duX2dwYWRsKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgdm1idXNfZ3BhZGwgKmdwYWRsKTtcbiBcbitleHRlcm4gdm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxuK1x0XHRcdFx0dTMyIHNpemUsXG4rXHRcdFx0XHRzdHJ1Y3QgcGFnZSAqKipjaHVua3Nfb3V0LFxuK1x0XHRcdFx0dTMyICpjaHVua19jbnRfb3V0KTtcbitcbitleHRlcm4gdm9pZCB2bWJ1c19mcmVlX2J1ZmZlcih2b2lkICphZGRyLCBzdHJ1Y3QgcGFnZSAqKmNodW5rcywgdTMyIGNodW5rX2NudCk7XG4rXG4gdm9pZCB2bWJ1c19yZXNldF9jaGFubmVsX2NiKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsKTtcbiBcbiBleHRlcm4gaW50IHZtYnVzX3JlY3ZwYWNrZXQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMDo0NC41Njg1NTgzNTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM1NzczODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBIeXBlci1WIGNoYW5uZWwgYW5kIG5ldHZzYyBkcml2ZXJzLiBJdCdzIGludHJvZHVjaW5nIHNvbWUgbmV3IGZ1bmN0aW9uczogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCdzIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldHZzY19pbml0X2J1ZmAgaW5zdGVhZCBvZiB0aGUgb2xkIG1ldGhvZC4gVGhhdCdzIGEgZ29vZCBzaWduLCBwb3RlbnRpYWxseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhZGRyZXNzaW5nIHNvbWUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSB3b3JrcXVldWUgZm9yIGBuZXR2c2NgIHRvIGRlZmVyIGRldmljZSBmcmVlaW5nIGJlY2F1c2Ugb2YgdGhlIHJlc3RyaWN0aW9ucyBhcm91bmQgYHZ1bm1hcCgpYCBhbmQgYHNldF9tZW1vcnlfZW5jcnlwdGVkKClgIHdpdGhpbiB0aGUgUkNVIHNvZnRpcnEgY29udGV4dC4gU21hcnQuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRlc3RpbmcgdGhpcy4gSHlwZXItViBkcml2ZXJzIGFyZSwgb2YgY291cnNlLCB1c3VhbGx5IHJlbGV2YW50IHdoZW4gcnVubmluZyAqb24qIEh5cGVyLVYuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGVzZSBjaGFuZ2VzIGFyZSAqcmVhY2hhYmxlKiBpbiBtb3JlIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gSXQncyBwb3NzaWJsZSB0byBlbXVsYXRlIHNvbWUgSHlwZXItViBmZWF0dXJlcyBpbiBRRU1VLCBsaWtlIFZNQnVzLCBidXQgZG9lcyB0aGF0IGV4dGVuZGVkIHRvIG5ldHZzYz8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgYENPTkZJR19IWVBFUlZgIGFuZCBgQ09ORklHX0hZUEVSVl9ORVRgIGFyZSB0ZXN0YWJsZSBvciBlbmFibGVkIGluIG15IHRhcmdldCBlbnZpcm9ubWVudC5cblxuU3l6a2FsbGVyIGlzIHRoZSBmaXJzdCB0b29sIHRoYXQgY29tZXMgdG8gbWluZCBmb3IgZnV6emluZyB0aGlzLiBJIGtub3cgaXQgaGFzIHNvbWUgdm1idXMgc3VwcG9ydCwgYnV0IEkgbmVlZCB0byBkaXZlIGRlZXBlci4gQWgsIGhlcmUgd2UgZ28sIHN5emthbGxlciBoYXMgYHN5cy9saW51eC9zb2NrZXRfaHlwZXJ2LnR4dGAgYW5kIGBzeXMvbGludXgvdm1idXMudHh0YC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyBgbmV0dnNjYCBhY3R1YWxseSBjb3ZlcmVkPyBMZXQgbWUgY2hlY2sgcXVpY2tseSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBmb3IgbmV0dnNjLiBUaGF0J2xsIGJlIHRoZSBjbGluY2hlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIwOjUwLjYwNDMzNjk2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcwODcwMjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldHZzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyMDI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dD04MTk9bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9tYXJ2ZWxsL29jdGVvbnR4MiBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyXFxuRG9jdW1lbnRhdGlvbi8ucmVuYW1lcy50eHQ6ODIwOm5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvbWljcm9zb2Z0L25ldHZzYyBuZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2NcXG5Eb2N1bWVudGF0aW9uLy5yZW5hbWVzLnR4dC04MjEtbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9uZXRyb25vbWUvbmZwIG5ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbmV0cm9ub21lL25mcFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3Q9Njg2PWxpa2UgdGhpczo6XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Vpby1ob3d0by5yc3QtNjg3LVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91aW8taG93dG8ucnN0OjY4ODogICAgICAgICAgZWNobyAtbiBlZDk2MzY5NC1lODQ3LTRiMmEtODVhZi1iYzljZmMxMWQ2ZjMgXFx1MDAzZSAvc3lzL2J1cy92bWJ1cy9kcml2ZXJzL2h2X25ldHZzYy91bmJpbmRcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdWlvLWhvd3RvLnJzdC02ODktICAgICAgICAgIGVjaG8gLW4gZWQ5NjM2OTQtZTg0Ny00YjJhLTg1YWYtYmM5Y2ZjMTFkNmYzIFxcdTAwM2UgL3N5cy9idXMvdm1idXMvZHJpdmVycy91aW9faHZfZ2VuZXJpYy9iaW5kXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0PTg9Q29udGVudHM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTQ4LSAgIG1ldGEvZmJuaWNcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0OjQ5OiAgIG1pY3Jvc29mdC9uZXR2c2NcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaW5kZXgucnN0LTUwLSAgIG11Y3NlL3JucGdiZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTE2PUNoZWNrc3VtIG9mZmxvYWRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTctLS0tLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDoxODogIFRoZSBuZXR2c2MgZHJpdmVyIHN1cHBvcnRzIGNoZWNrc3VtIG9mZmxvYWQgYXMgbG9uZyBhcyB0aGVcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTktICBIeXBlci1WIGhvc3QgdmVyc2lvbiBkb2VzLiBXaW5kb3dzIFNlcnZlciAyMDE2IGFuZCBBenVyZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTY3PVNSLUlPViBzdXBwb3J0XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzEtICBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgZGV2aWNlIGlzIHBhc3NlZCB0byB0aGUgZ3Vlc3QgYXMgYSBQQ0lcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6NzI6ICBkZXZpY2UuIEluIHRoaXMgY2FzZSwgYm90aCBhIHN5bnRoZXRpYyAobmV0dnNjKSBhbmQgVkYgZGV2aWNlIGFyZVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdC03My0gIHZpc2libGUgaW4gdGhlIGd1ZXN0IE9TIGFuZCBib3RoIE5JQydzIGhhdmUgdGhlIHNhbWUgTUFDIGFkZHJlc3MuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc0LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdDo3NTogIFRoZSBWRiBpcyBlbnNsYXZlZCBieSBuZXR2c2MgZGV2aWNlLiAgVGhlIG5ldHZzYyBkcml2ZXIgd2lsbCB0cmFuc3BhcmVudGx5XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc2LSAgc3dpdGNoIHRoZSBkYXRhIHBhdGggdG8gdGhlIFZGIHdoZW4gaXQgaXMgYXZhaWxhYmxlIGFuZCB1cC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtNzctICBOZXR3b3JrIHN0YXRlIChhZGRyZXNzZXMsIGZpcmV3YWxsLCBldGMpIHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0Ojc4OiAgbmV0dnNjIGRldmljZTsgdGhlIHNsYXZlIGRldmljZSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGluXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTc5LSAgbW9zdCBjYXNlcy4gIFRoZSBleGNlcHRpb25zIGFyZSBpZiBzb21lIHNwZWNpYWwgcXVldWUgZGlzY2lwbGluZSBvclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0PTEwMD1YRFAgc3VwcG9ydFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTA3OiAgaHZfbmV0dnNjIHN1cHBvcnRzIFhEUCBpbiBuYXRpdmUgbW9kZSwgYW5kIHRyYW5zcGFyZW50bHkgc2V0cyB0aGUgWERQXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwOC0gIHByb2dyYW0gb24gdGhlIGFzc29jaWF0ZWQgVkYgTklDIGFzIHdlbGwuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21pY3Jvc29mdC9uZXR2c2MucnN0LTEwOS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3Q6MTEwOiAgU2V0dGluZyAvIHVuc2V0dGluZyBYRFAgcHJvZ3JhbSBvbiBzeW50aGV0aWMgTklDIChuZXR2c2MpIHByb3BhZ2F0ZXMgdG9cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWljcm9zb2Z0L25ldHZzYy5yc3QtMTExLSAgVkYgTklDIGF1dG9tYXRpY2FsbHkuIFNldHRpbmcgLyB1bnNldHRpbmcgWERQIHByb2dyYW0gb24gVkYgTklDIGRpcmVjdGx5XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0PTIxMj1Ud28gVk1CdXMgZGV2aWNlcyBkZXBlbmQgb24gdGhlIEh5cGVyLVYgaG9zdCB0byBkbyBETUEgZGF0YSB0cmFuc2ZlcnM6XFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTM6c3RvcnZzYyBmb3IgZGlzayBJL08gYW5kIG5ldHZzYyBmb3IgbmV0d29yayBJL08uIHN0b3J2c2MgdXNlcyB0aGUgbm9ybWFsXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdC0yMTQtTGludXgga2VybmVsIERNQSBBUElzLCBhbmQgc28gYm91bmNlIGJ1ZmZlcmluZyB0aHJvdWdoIGRlY3J5cHRlZCBzd2lvdGxiXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTU6bWVtb3J5IGlzIGRvbmUgaW1wbGljaXRseS4gbmV0dnNjIGhhcyB0d28gbW9kZXMgZm9yIGRhdGEgdHJhbnNmZXJzLiBUaGUgZmlyc3RcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxNi1tb2RlIGdvZXMgdGhyb3VnaCBzZW5kIGFuZCByZWNlaXZlIGJ1ZmZlciBzcGFjZSB0aGF0IGlzIGV4cGxpY2l0bHkgYWxsb2NhdGVkXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi9jb2NvLnJzdDoyMTc6YnkgdGhlIG5ldHZzYyBkcml2ZXIsIGFuZCBpcyB1c2VkIGZvciBtb3N0IHNtYWxsZXIgcGFja2V0cy4gVGhlc2Ugc2VuZCBhbmRcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIxOC1yZWNlaXZlIGJ1ZmZlcnMgYXJlIG1hcmtlZCBkZWNyeXB0ZWQgYnkgX192bWJ1c19lc3RhYmxpc2hfZ3BhZGwoKS4gQmVjYXVzZVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvY29jby5yc3Q6MjE5OnRoZSBuZXR2c2MgZHJpdmVyIGV4cGxpY2l0bHkgY29waWVzIHBhY2tldHMgdG8vZnJvbSB0aGVzZSBidWZmZXJzLCB0aGVcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvaHlwZXJ2L2NvY28ucnN0LTIyMC1lcXVpdmFsZW50IG9mIGJvdW5jZSBidWZmZXJpbmcgYmV0d2VlbiBlbmNyeXB0ZWQgYW5kIGRlY3J5cHRlZCBtZW1vcnkgaXNcXG4tLVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0PTQ3PXRoZSBkZXZpY2UgaW4gdGhlIGd1ZXN0IFZNLiAgRm9yIGV4YW1wbGUsIHRoZSBMaW51eCBkcml2ZXIgZm9yIHRoZVxcbkRvY3VtZW50YXRpb24vdmlydC9oeXBlcnYvdm1idXMucnN0OjQ4OnN5bnRoZXRpYyBOSUMgaXMgcmVmZXJyZWQgdG8gYXMgXFxcIm5ldHZzY1xcXCIgYW5kIHRoZSBMaW51eCBkcml2ZXIgZm9yXFxuRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydi92bWJ1cy5yc3QtNDktdGhlIHN5bnRoZXRpYyBTQ1NJIGNvbnRyb2xsZXIgaXMgXFxcInN0b3J2c2NcXFwiLiAgVGhlc2UgZHJpdmVycyBjb250YWluXFxuLS1cXG5NQUlOVEFJTkVSUz0xMTk3OD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvbWljcm9zb2Z0LHZtYnVzLnlhbWxcXG5NQUlOVEFJTkVSUzoxMTk3OTpGOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdFxcbk1BSU5UQUlORVJTLTExOTgwLUY6XFx0RG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9MTA3Nj12b2lkIHZtYnVzX3Jlc2V0X2NoYW5uZWxfY2Ioc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwpXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy0xMDg2LVxcdCAqXFxuZHJpdmVycy9odi9jaGFubmVsLmM6MTA4NzpcXHQgKiB2bWJ1c19jaGFuX3NjaGVkKCkgbWlnaHQgY2FsbCB0aGUgbmV0dnNjIGRyaXZlciBjYWxsYmFjayBmdW5jdGlvblxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTEwODgtXFx0ICogdGhhdCBlbmRzIHVwIHNjaGVkdWxpbmcgTkFQSSB3b3JrIHRoYXQgYWNjZXNzZXMgdGhlIHJpbmcgYnVmZmVyLlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA5MC1cXHQgKiBhbmQgdGhhdCB0aGUgY2hhbm5lbCByaW5nIGJ1ZmZlciBpcyBubyBsb25nZXIgYmVpbmcgYWNjZXNzZWQsIGNmLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjEwOTE6XFx0ICogdGhlIGNhbGxzIHRvIG5hcGlfZGlzYWJsZSgpIGluIG5ldHZzY19kZXZpY2VfcmVtb3ZlKCkuXFxuZHJpdmVycy9odi9jaGFubmVsLmMtMTA5Mi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM9NTk5PXN0YXRpYyB2b2lkIHZtYnVzX3Byb2Nlc3Nfb2ZmZXIoc3RydWN0IHZtYnVzX2NoYW5uZWwgKm5ld2NoYW5uZWwpXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTY5OC1cXHQgKiB3b3JrcXVldWVzIHRvIGF2b2lkIHBvc3NpYmxlIGRlYWRsb2NrLCBlLmcuIGluIHN5bmMtcHJvYmluZyBtb2RlLFxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM6Njk5OlxcdCAqIE5JQzEncyBuZXR2c2Nfc3ViY2hhbl93b3JrKCkgY2FuIHJhY2Ugd2l0aCBOSUMyJ3MgbmV0dnNjX3Byb2JlKCkgLVxcdTAwM2VcXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jLTcwMC1cXHQgKiBydG5sX2xvY2soKSwgYW5kIGNhdXNlcyBkZWFkbG9jazogdGhlIGZvcm1lciBnZXRzIHRoZSBydG5sX2xvY2tcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmM9MTMxMD1FWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19odnNvY2tfZGV2aWNlX3VucmVnaXN0ZXIpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsX21nbXQuYy0xMzMwLSAqIE5JQyBjaGFubmVsIGlzIG9wZW5lZCAob25jZSBpdCBrbm93cyB0aGUgZ3Vlc3QgY2FuIHN1cHBvcnQgaXQsIHZpYSB0aGVcXG5kcml2ZXJzL2h2L2NoYW5uZWxfbWdtdC5jOjEzMzE6ICogc3Jpb3YgYml0IGluIHRoZSBuZXR2c2MgcHJvdG9jb2wpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbF9tZ210LmMtMTMzMi0gKi9cXG4tLVxcbmRyaXZlcnMvaHYvdm1idXNfZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IGtvYmpfdHlwZSB2bWJ1c19jaGFuX2t0eXBlID0ge1xcbi0tXFxuZHJpdmVycy9odi92bWJ1c19kcnYuYy0yMDU1LSAqIGlzIHJ1bm5pbmcuXFxuZHJpdmVycy9odi92bWJ1c19kcnYuYzoyMDU2OiAqIEZvciBleGFtcGxlLCBIVl9OSUMgZGV2aWNlIGlzIHVzZWQgZWl0aGVyIGJ5IHVpb19odl9nZW5lcmljIG9yIGh2X25ldHZzYyBhdCBhbnkgZ2l2ZW4gcG9pbnQgb2ZcXG5kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jLTIwNTctICogdGltZSwgYW5kIFxcXCJyaW5nXFxcIiBzeXNmcyBpcyBuZWVkZWQgb25seSB3aGVuIHVpb19odl9nZW5lcmljIGlzIGJvdW5kIHRvIHRoYXQgZGV2aWNlLiBUbyBhdm9pZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTM4NTI9c3RydWN0IG5ldF9kZXZpY2UgKm1hbmFfZ2V0X3ByaW1hcnlfbmV0ZGV2KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM4NjM6XFx0LyogSWYgbWFuYSBpcyB1c2VkIGluIG5ldHZzYywgdGhlIHVwcGVyIG5ldGRldmljZSBzaG91bGQgYmUgcmV0dXJuZWQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4NjQtXFx0bmRldiA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldF9yY3UoYWMtXFx1MDAzZXBvcnRzW3BvcnRfaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19IWVBFUlZfTkVUKSArPSBodl9uZXR2c2Mub1xcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9NYWtlZmlsZTo0Omh2X25ldHZzYy15IDo9IG5ldHZzY19kcnYubyBuZXR2c2MubyBybmRpc19maWx0ZXIubyBuZXR2c2NfdHJhY2UubyBuZXR2c2NfYnBmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MTM3PXN0cnVjdCBuZGlzX3BrdF84MDIxcV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTQ5LS8qXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxNTA6ICogUmVwcmVzZW50IG5ldHZzYyBwYWNrZXQgd2hpY2ggY29udGFpbnMgMSBSTkRJUyBhbmQgMSBldGhlcm5ldCBmcmFtZVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTUxLSAqIHdpdGhpbiB0aGUgUk5ESVNcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTU1LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTU2OnN0cnVjdCBodl9uZXR2c2NfcGFja2V0IHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE1Ny1cXHQvKiBCb29ra2VlcGluZyBzdHVmZiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxNzQ6c3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xNzUtXFx0dW5zaWduZWQgY2hhciBtYWNfYWRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MjE2PXN0cnVjdCBuZGlzX29mZmxvYWRfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE3OnN0cnVjdCBuZXR2c2NfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjE4OnN0cnVjdCBuZXR2c2NfY2hhbm5lbDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTIxOS1zdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjIwLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjIxOmV4dGVybiB1MzIgbmV0dnNjX3JpbmdfYnl0ZXM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjM6aW50IG5ldHZzY193b3JrcXVldWVfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyNDp2b2lkIG5ldHZzY193b3JrcXVldWVfZGVzdHJveSh2b2lkKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIyNTpzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI2OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmluZm8pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI3OmludCBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3Jpbmcoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsIHUzMiBxX2lkeCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyMjg6dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjI5OmludCBuZXR2c2Nfc2VuZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjMwOlxcdFxcdHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzEtXFx0XFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJuZGlzX21zZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjM0LVxcdFxcdGJvb2wgeGRwX3R4KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzNTp2b2lkIG5ldHZzY19saW5rc3RhdHVzX2NhbGxiYWNrKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzYtXFx0XFx0XFx0XFx0c3RydWN0IHJuZGlzX21lc3NhZ2UgKnJlc3AsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yMzctXFx0XFx0XFx0XFx0dm9pZCAqZGF0YSwgdTMyIGRhdGFfYnVmbGVuKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzODppbnQgbmV0dnNjX3JlY3ZfY2FsbGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKm5ldCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjIzOTpcXHRcXHRcXHQgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjQwOlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDE6dm9pZCBuZXR2c2NfY2hhbm5lbF9jYih2b2lkICpjb250ZXh0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0MjppbnQgbmV0dnNjX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI0My1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0NDp2b2lkIG5ldHZzY194ZHBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDU6dTMyIG5ldHZzY19ydW5feGRwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI0Ni1cXHRcXHQgICBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDc6dW5zaWduZWQgaW50IG5ldHZzY194ZHBfZnJhZ2xlbih1bnNpZ25lZCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI0ODpzdHJ1Y3QgYnBmX3Byb2cgKm5ldHZzY194ZHBfZ2V0KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNDk6aW50IG5ldHZzY194ZHBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI1MC1cXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTE6XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI1MjppbnQgbmV0dnNjX3ZmX3NldHhkcChzdHJ1Y3QgbmV0X2RldmljZSAqdmZfbmV0ZGV2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjUzOmludCBuZXR2c2NfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU0OmludCBuZXR2c2NfbmRveGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBuLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjU1LVxcdFxcdCAgICAgICBzdHJ1Y3QgeGRwX2ZyYW1lICoqZnJhbWVzLCB1MzIgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNTc9aW50IHJuZGlzX3NldF9zdWJjaGFubmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjU4OlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNTk6XFx0XFx0XFx0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmRldl9pbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MDppbnQgcm5kaXNfZmlsdGVyX29wZW4oc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MTppbnQgcm5kaXNfZmlsdGVyX2Nsb3NlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNjI6c3RydWN0IG5ldHZzY19kZXZpY2UgKnJuZGlzX2ZpbHRlcl9kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2MzpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICppbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NDp2b2lkIHJuZGlzX2ZpbHRlcl91cGRhdGUoc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI2NS12b2lkIHJuZGlzX2ZpbHRlcl9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI2NjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjY3LWludCBybmRpc19maWx0ZXJfc2V0X3Jzc19wYXJhbShzdHJ1Y3Qgcm5kaXNfZGV2aWNlICpyZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNjk9aW50IHJuZGlzX2ZpbHRlcl9zZXRfb2ZmbG9hZF9wYXJhbXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoyNzA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3MS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5kaXNfb2ZmbG9hZF9wYXJhbXMgKnJlcV9vZmZsb2Fkcyk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0yNzI9aW50IHJuZGlzX2ZpbHRlcl9yZWNlaXZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MjczOlxcdFxcdFxcdCBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI3NDpcXHRcXHRcXHQgc3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4sXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNzUtXFx0XFx0XFx0IHZvaWQgKmRhdGEsIHUzMiBidWZsZW4pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMjc2LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6Mjc3OmludCBybmRpc19maWx0ZXJfc2V0X2RldmljZV9tYWMoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0yNzgtXFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqbWFjKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI3OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjI4MDppbnQgbmV0dnNjX3N3aXRjaF9kYXRhcGF0aChzdHJ1Y3QgbmV0X2RldmljZSAqbnZfZGV2LCBib29sIHZmKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9ODQ2PXN0cnVjdCBudnNwX21lc3NhZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05MTEtICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5MTI6c3RhdGljIGlubGluZSB1MzIgbmV0dnNjX3Jxc3Rvcl9zaXplKHVuc2lnbmVkIGxvbmcgcmluZ2J5dGVzKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9OTI5PXN0cnVjdCBtdWx0aV9zZW5kX2RhdGEge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTMwLVxcdHN0cnVjdCBza19idWZmICpza2I7IC8qIHNrYiBjb250YWluaW5nIHRoZSBwa3QgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjkzMTpcXHRzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGt0OyAvKiBuZXR2c2MgcGt0IHBlbmRpbmcgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTkzMi1cXHR1MzIgY291bnQ7IC8qIGNvdW50ZXIgb2YgYmF0Y2hlZCBwYWNrZXRzICovXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oPTk0OD1zdHJ1Y3QgbnZzY19yc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDo5NjQ6c3RydWN0IG5ldHZzY19zdGF0c190eCB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05NjUtXFx0dTY0IHBhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk3MC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk3MTpzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk3Mi1cXHR1NjQgcGFja2V0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtOTgxLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6OTgyOnN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05ODMtXFx0dW5zaWduZWQgbG9uZyB0eF9zY2F0dGVyZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTk5NS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjk5NjpzdHJ1Y3QgbmV0dnNjX2V0aHRvb2xfcGNwdV9zdGF0cyB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC05OTctXFx0dTY0ICAgICByeF9wYWNrZXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDA2LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAwNzpzdHJ1Y3QgbmV0dnNjX3ZmX3BjcHVfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAwOC1cXHR1NjQgICAgIHJ4X3BhY2tldHM7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMTUtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDE2OnN0cnVjdCBuZXR2c2NfcmVjb25maWcge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAxNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMjgtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDI5Oi8qIFRoZSBjb250ZXh0IG9mIHRoZSBuZXR2c2MgZGV2aWNlICAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAzMC1zdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTAzMi1cXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTAzMzpcXHQvKiBuZXR2c2NfZGV2aWNlICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDM0OlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlIF9fcmN1ICpudmRldjtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwMzU6XFx0LyogbGlzdCBvZiBuZXR2c2MgbmV0X2RldmljZXMgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwMzYtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDU5LVxcdHUzMiBsNF9oYXNoOyAvKiBMNCBoYXNoIHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDYwOlxcdHN0cnVjdCBuZXR2c2NfZXRodG9vbF9zdGF0cyBldGhfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYxLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDYzLVxcdHN0cnVjdCBuZXRfZGV2aWNlIF9fcmN1ICp2Zl9uZXRkZXY7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMDY0OlxcdHN0cnVjdCBuZXR2c2NfdmZfcGNwdV9zdGF0cyBfX3BlcmNwdSAqdmZfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDY1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgdmZfdGFrZW92ZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwNzctXFx0LyogVXNlZCB0byB0ZW1wb3JhcmlseSBzYXZlIHRoZSBjb25maWcgaW5mbyBhY3Jvc3MgaGliZXJuYXRpb24gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwNzg6XFx0c3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqc2F2ZWRfbmV0dnNjX2Rldl9pbmZvO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA3OS19O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTA4MC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjEwODE6dm9pZCBuZXR2c2NfdmZuc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdyk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMDg1LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTA4NjpzdGF0aWMgaW5saW5lIHUzMiBuZXR2c2NfZ2V0X2hhc2goc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTEwODctXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0ICpuZGMpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExMzItLyogUGVyIGNoYW5uZWwgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTEzMzpzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTEzNC1cXHRzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExMzU6XFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2U7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTM2LVxcdHZvaWQgKnJlY3ZfYnVmOyAvKiBidWZmZXIgdG8gY29weSBwYWNrZXRzIG91dCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTQ3LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0ODpcXHRzdHJ1Y3QgbmV0dnNjX3N0YXRzX3R4IHR4X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE0OTpcXHRzdHJ1Y3QgbmV0dnNjX3N0YXRzX3J4IHJ4X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MC19O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExNTI6LyogUGVyIG5ldHZzYyBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oOjExNTM6c3RydWN0IG5ldHZzY19kZXZpY2Uge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTE1NC1cXHR1MzIgbnZzcF92ZXJzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xMTg4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTE4OTpcXHR1MzIgbmV0dnNjX2dzb19tYXhfc2l6ZTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExOTktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMjAwOlxcdHN0cnVjdCBuZXR2c2NfY2hhbm5lbCBjaGFuX3RhYmxlW1ZSU1NfQ0hBTk5FTF9NQVhdO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTIwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg9MTc3Nz1zdHJ1Y3Qgcm5kaXNfbWVzc2FnZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE4MjQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI1OnZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxODI2OlxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgtMTgyNy0jZW5kaWYgLyogX0hZUEVSVl9ORVRfSCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI4LSNpbmNsdWRlIFxcXCJoeXBlcnZfbmV0LmhcXFwiXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI5OiNpbmNsdWRlIFxcXCJuZXR2c2NfdHJhY2UuaFxcXCJcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMxOnN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbmV0dnNjX3dxO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNi0gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Mzc6aW50IG5ldHZzY19zd2l0Y2hfZGF0YXBhdGgoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgdmYpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00MC1cXHRzdHJ1Y3QgaHZfZGV2aWNlICpkZXYgPSBuZXRfZGV2aWNlX2N0eC1cXHUwMDNlZGV2aWNlX2N0eDtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NDE6XFx0c3RydWN0IG5ldHZzY19kZXZpY2UgKm52X2RldiA9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXFx1MDAzZW52ZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDItXFx0c3RydWN0IG52c3BfbWVzc2FnZSAqaW5pdF9wa3QgPSBcXHUwMDI2bnZfZGV2LVxcdTAwM2VjaGFubmVsX2luaXRfcGt0O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAwLXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAxOlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldiA9XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMjpcXHRcXHRjb250YWluZXJfb2Yodywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHN1YmNoYW5fd29yayk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMy1cXHRzdHJ1Y3Qgcm5kaXNfZGV2aWNlICpyZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyOS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTMwOnN0YXRpYyB2b2lkIF9fZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE1MTpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2Uoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1NC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTU1OlxcdF9fZnJlZV9uZXR2c2NfZGV2aWNlKGNvbnRhaW5lcl9vZihyd29yaywgc3RydWN0IG5ldHZzY19kZXZpY2UsIHJ3b3JrKSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ni19XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTU4OmludCBuZXR2c2Nfd29ya3F1ZXVlX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTU5LXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYwOlxcdG5ldHZzY193cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiaHZfbmV0dnNjXFxcIiwgV1FfVU5CT1VORCwgMCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTYyOlxcdHJldHVybiBuZXR2c2Nfd3EgPyAwIDogLUVOT01FTTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTYzLX1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjU6dm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY2LXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY3LVxcdHJjdV9iYXJyaWVyKCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2ODpcXHRkZXN0cm95X3dvcmtxdWV1ZShuZXR2c2Nfd3EpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjktfVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTczOlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3NTpcXHRuZXRfZGV2aWNlID0ga3phbGxvY19vYmooc3RydWN0IG5ldHZzY19kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzYtXFx0aWYgKCFuZXRfZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4Ny1cXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX29wZW4pO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VzdWJjaGFuX3dvcmssIG5ldHZzY19zdWJjaGFuX3dvcmspO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODk6XFx0SU5JVF9SQ1VfV09SSyhcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlcndvcmssIGZyZWVfbmV0dnNjX2RldmljZSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTktXFx0ICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMDpcXHRxdWV1ZV9yY3Vfd29yayhuZXR2c2Nfd3EsIFxcdTAwMjZudmRldi1cXHUwMDNlcndvcmspO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDEtfVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjA0OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjUyLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoyNTM6c3RhdGljIHZvaWQgbmV0dnNjX3Jldm9rZV9zZW5kX2J1ZihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjI1NDpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMwMy1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA0OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzA1OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzA2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMjQtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNTpzdGF0aWMgdm9pZCBuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjMyNjpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDY6aW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zNDcte1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNDg6XFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVtxX2lkeF07XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM0OS1cXHRpbnQgbm9kZSA9IGNwdV90b19ub2RlKG52Y2hhbi1cXHUwMDNlY2hhbm5lbC1cXHUwMDNldGFyZ2V0X2NwdSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzU5LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNjA6c3RhdGljIGludCBuZXR2c2NfaW5pdF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozNjE6XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjM2MjpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmV0dnNjX2RldmljZV9pbmZvICpkZXZpY2VfaW5mbylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy00NjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFZSU1NfQ0hBTk5FTF9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo0Njc6XFx0XFx0c3RydWN0IG5ldHZzY19jaGFubmVsICpudmNoYW4gPSBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVtpXTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNDY4LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTQ4MC1cXHRuZXRfZGV2aWNlLVxcdTAwM2VyZWN2X2NvbXBsZXRpb25fY250ID0gbmV0X2RldmljZS1cXHUwMDNlcmVjdl9zZWN0aW9uX2NudCArIDE7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjQ4MTpcXHRyZXQgPSBuZXR2c2NfYWxsb2NfcmVjdl9jb21wX3JpbmcobmV0X2RldmljZSwgMCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTQ4Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU3Ni1jbGVhbnVwOlxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzc6XFx0bmV0dnNjX3Jldm9rZV9yZWN2X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzg6XFx0bmV0dnNjX3Jldm9rZV9zZW5kX2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1Nzk6XFx0bmV0dnNjX3RlYXJkb3duX3JlY3ZfZ3BhZGwoZGV2aWNlLCBuZXRfZGV2aWNlLCBuZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NTgwOlxcdG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz01ODc9c3RhdGljIGludCBuZWdvdGlhdGVfbnZzcF92ZXIoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo1ODg6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTU4OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnZzcF9tZXNzYWdlICppbml0X3BhY2tldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NDgtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY0OTpzdGF0aWMgaW50IG5ldHZzY19jb25uZWN0X3ZzcChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjY1MDpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NjUxOlxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBuZXR2c2NfZGV2aWNlX2luZm8gKmRldmljZV9pbmZvKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxMi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzEzOlxcdHJldCA9IG5ldHZzY19pbml0X2J1ZihkZXZpY2UsIG5ldF9kZXZpY2UsIGRldmljZV9pbmZvKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOS0vKlxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MjA6ICogbmV0dnNjX2RldmljZV9yZW1vdmUgLSBDYWxsYmFjayB3aGVuIHRoZSByb290IGJ1cyBkZXZpY2UgaXMgcmVtb3ZlZFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjEtICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcyMjp2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSlcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MjUtXFx0c3RydWN0IG5ldF9kZXZpY2VfY29udGV4dCAqbmV0X2RldmljZV9jdHggPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzI2OlxcdHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyNy1cXHRcXHQ9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtXFx1MDAzZW52ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzMtXFx0ICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczNDpcXHRuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczNS1cXHRpZiAodm1idXNfcHJvdG9fdmVyc2lvbiBcXHUwMDNjIFZFUlNJT05fV0lOMTApXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczNjpcXHRcXHRuZXR2c2NfdGVhcmRvd25fcmVjdl9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MzctXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjczODpcXHRuZXR2c2NfcmV2b2tlX3NlbmRfYnVmKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTczOS1cXHRpZiAodm1idXNfcHJvdG9fdmVyc2lvbiBcXHUwMDNjIFZFUlNJT05fV0lOMTApXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc0MDpcXHRcXHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NDEtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzcyLVxcdGlmICh2bWJ1c19wcm90b192ZXJzaW9uIFxcdTAwM2U9IFZFUlNJT05fV0lOMTApIHtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzczOlxcdFxcdG5ldHZzY190ZWFyZG93bl9yZWN2X2dwYWRsKGRldmljZSwgbmV0X2RldmljZSwgbmRldik7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc3NDpcXHRcXHRuZXR2c2NfdGVhcmRvd25fc2VuZF9ncGFkbChkZXZpY2UsIG5ldF9kZXZpY2UsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03NzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3Ny1cXHQvKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMgKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Nzc4OlxcdGZyZWVfbmV0dnNjX2RldmljZV9yY3UobmV0X2RldmljZSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc3OS19XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3ODQ6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19mcmVlX3NlbmRfc2xvdChzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg1LVxcdFxcdFxcdFxcdFxcdCB1MzIgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzg5LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3OTA6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdHhfY29tcGxldGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjc5MTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc5Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODExLVxcdGlmIChsaWtlbHkoc2tiKSkge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTI6XFx0XFx0c3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTM6XFx0XFx0XFx0PSAoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKilza2ItXFx1MDAzZWNiO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTQtXFx0XFx0dTMyIHNlbmRfaW5kZXggPSBwYWNrZXQtXFx1MDAzZXNlbmRfYnVmX2luZGV4O1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTU6XFx0XFx0c3RydWN0IG5ldHZzY19zdGF0c190eCAqdHhfc3RhdHM7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgxNi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODE3LVxcdFxcdGlmIChzZW5kX2luZGV4ICE9IE5FVFZTQ19JTlZBTElEX0lOREVYKVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4MTg6XFx0XFx0XFx0bmV0dnNjX2ZyZWVfc2VuZF9zbG90KG5ldF9kZXZpY2UsIHNlbmRfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04MTktXFx0XFx0cV9pZHggPSBwYWNrZXQtXFx1MDAzZXFfaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyNy1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6ODI4OlxcdFxcdG5ldHZzY19kbWFfdW5tYXAobmRldl9jdHgtXFx1MDAzZWRldmljZV9jdHgsIHBhY2tldCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTgyOS1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgYnVkZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NDktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg1MDpzdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF9jb21wbGV0aW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo4NTE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg1Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqaW5jb21pbmdfY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDUtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk0NjpcXHRcXHRuZXR2c2Nfc2VuZF90eF9jb21wbGV0ZShuZGV2LCBuZXRfZGV2aWNlLCBpbmNvbWluZ19jaGFubmVsLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NDctXFx0XFx0XFx0XFx0XFx0ZGVzYywgYnVkZ2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3OC1cXHRcXHRcXHRcXHQgICAgdTMyIHBlbmRfc2l6ZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6OTc5OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05ODAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBybmRpc19tZXNzYWdlICpybmRpc19tc2csXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAxMi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAxMzp2b2lkIG5ldHZzY19kbWFfdW5tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDE0OlxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzEtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwMzI6LyogbmV0dnNjX2RtYV9tYXAgLSBNYXAgc3dpb3RsYiBib3VuY2UgYnVmZmVyIHdpdGggZGF0YSBwYWdlIG9mXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzMtICogcGFja2V0IHNlbnQgYnkgdm1idXNfc2VuZHBhY2tldF9wYWdlYnVmZmVyKCkgaW4gdGhlIElzb2xhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwMzUtICpcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTAzNjogKiBJbiBpc29sYXRpb24gVk0sIG5ldHZzYyBzZW5kIGJ1ZmZlciBoYXMgYmVlbiBtYXJrZWQgdmlzaWJsZSB0b1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDM3LSAqIGhvc3QgYW5kIHNvIHRoZSBkYXRhIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gdXNlXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAzOS0gKiBtYXkgbm90IGJlIGNvcGllZCB0byBzZW5kIGJ1ZmZlciBhbmQgc28gdGhlc2UgcGFnZXMgbmVlZCB0byBiZVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDQwOiAqIG1hcHBlZCB3aXRoIHN3aW90bGIgYm91bmNlIGJ1ZmZlci4gbmV0dnNjX2RtYV9tYXAoKSBpcyB0byBkb1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDQxLSAqIHRoYXQuIFRoZSBwZm5zIGluIHRoZSBzdHJ1Y3QgaHZfcGFnZV9idWZmZXIgbmVlZCB0byBiZSBjb252ZXJ0ZWRcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMDQ5LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUwOnN0YXRpYyBpbnQgbmV0dnNjX2RtYV9tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMDUxOlxcdFxcdFxcdCAgc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKnBhY2tldCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA1Mi1cXHRcXHRcXHQgIHN0cnVjdCBodl9wYWdlX2J1ZmZlciAqcGIpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTA5OS0gKi9cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTEwMDpzdGF0aWMgaW5saW5lIHZvaWQgbmV0dnNjX2J1aWxkX21wYl9hcnJheShzdHJ1Y3QgaHZfcGFnZV9idWZmZXIgKnBiLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTAxLVxcdFxcdFxcdFxcdHUzMiBwYWdlX2J1ZmZlcl9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMTI0LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMTI1OnN0YXRpYyBpbmxpbmUgaW50IG5ldHZzY19zZW5kX3BrdChcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjA6NTMuNDc1MjE0NjY3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwNjI5MTU4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgTmV0dnNjIGluIGEgRnV6emluZyBDb250ZXh0KipcblxuT2theSwgc28gdGhlIG91dHB1dCBjb25maXJtcyBgbmV0dnNjYCBpcyBpbmRlZWQgdGhlIEh5cGVyLVYgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBHb29kLiBJIHNlZSBpdCdzIGxpbmtlZCB0byBgQ09ORklHX0hZUEVSVl9ORVRgLCB3aGljaCBpcyBleHBlY3RlZC4gTm93LCBTeXprYWxsZXIgYWxyZWFkeSBoYXMgZGVzY3JpcHRpb25zIGZvciBWTUJ1cyBhbmQgYHNvY2tldF9oeXBlcnZgLCBidXQgd2hhdCBhYm91dCBgbmV0dnNjYD8gSXQncyBhIHN0YW5kYXJkIG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgcmVnaXN0ZXJzIGEgYG5ldGRldmAuIFRoYXQncyBzaWduaWZpY2FudC4gQW55IHN0YW5kYXJkIG5ldHdvcmsgZnV6emluZyDigJMgc2VuZGluZyBwYWNrZXRzLCBgaW9jdGxgcywgYGV0aHRvb2xgLCBYRFAg4oCTIHdpbGwgcG90ZW50aWFsbHkgaGl0IGl0IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZGV2aWNlIHByZXNlbnQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGNhbiBlbXVsYXRlIFZNQnVzIGFuZCBzb21lIFZNQnVzIGRldmljZXMuIFdhaXQsIGRvZXMgUUVNVSBzcGVjaWZpY2FsbHkgZW11bGF0ZSBgbmV0dnNjYCBvdXQgb2YgdGhlIGJveD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gQWN0dWFsbHksIGxvb2tzIGxpa2UgUUVNVSBkb2Vzbid0IGVtdWxhdGUgYG5ldHZzY2AgZGlyZWN0bHkuIEl0IGVtdWxhdGVzIGB2bWJ1c2AsIGJ1dCB0eXBpY2FsbHkgb25seSBhIGZldyBkZXZpY2VzLiBPciBtYXliZSBpdCAqZG9lcyo/XG5cbkhhbmcgb24sIFN5emthbGxlciBoYXMgYHN5cy9saW51eC92bWJ1cy50eHRgIHdoaWNoIG1lYW5zIHdlIGNhbiBjcmVhdGUgc3ludGhldGljIFZNQnVzIGRldmljZXMhIFRoYXQncyBpdCEgU3l6a2FsbGVyIGNhbiBpbmplY3QgVk1CdXMgZGV2aWNlcyBhbmQgbWVzc2FnZXMgdXNpbmcgYC9kZXYvdm1idXMvaHZfdWlvYCBvciBzaW1pbGFyIG1ldGhvZHMsIG9yIGV2ZW4gbW9jayB0aGUgVk1CdXMgaG9zdCBlbnRpcmVseS4gRG9lcyBzeXprYWxsZXIgdXNlIGBzeXpfdm1idXNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcGF0Y2ggbWVudGlvbnMgYSBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIC0gc28gc3l6Ym90IGZvdW5kIGEgd2F5IHRvIHRyaWdnZXIgc29tZXRoaW5nIG9yIGl0J3MganVzdCBhIHBhdGNoIGJlaW5nIHRlc3RlZC5cblxuTm93LCB0aGF0IHByb21wdDogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gSWYgU3l6a2FsbGVyIGNhbiByZWFjaCBpdCwgdGhlbiBpdCAqaXMqIHJlYWNoYWJsZSwgcmlnaHQ/IFNvIGNhbiB3ZSByZWFjaCBgbmV0dnNjYCB0aGVuPyBMZXQncyB0cmFjZSBpdCBhbmQgc2VlIGlmIHdlIGNhbiByZWFjaCBgdm1idXNfYWxsb2NfYnVmZmVyYC5cblxuYG5ldHZzY19pbml0X2J1ZmAgY2FsbHMgYHZtYnVzX2FsbG9jX2J1ZmZlcmAuIGBuZXR2c2NfaW5pdF9idWZgIGlzIHRoZW4gY2FsbGVkIGZyb20gYG5ldHZzY19jb25uZWN0X3ZzcGAsIHdoaWNoIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgbmV0dnNjX2RldmljZV9hZGRgLCB3aGljaCBpcyBmaW5hbGx5IGNhbGxlZCBmcm9tIGBuZXR2c2NfcHJvYmVgLiBgbmV0dnNjX3Byb2JlYCBpcyB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgVk1CdXMgZGV2aWNlLiBJZiBhIFZNQnVzIGRldmljZSB3aXRoIHRoZSBgbmV0dnNjYCBHVUlEIGlzIG9mZmVyZWQsIGBuZXR2c2NfcHJvYmVgIHdpbGwgcnVuLiBUaGF0J3MgdGhlIGNoYWluLiBTbywgY2FuIHdlIG9mZmVyIFZNQnVzIGRldmljZXMgaW4gUUVNVT8gWWVzLCBTeXprYWxsZXIgaGFzIGEgd2F5IHRvIG1vY2sgVk1CdXMgZGV2aWNlcywgb3IgbWF5YmUgUUVNVSBwcm92aWRlcyBvbmU/XG5cblRoZSBwcm9tcHQgc3RhdGVzOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIEJ1dCBgbmV0dnNjYCBpcyBhIHN5bnRoZXRpYyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyLiBJdCBydW5zIG9uIHRvcCBvZiBWTUJ1cy4gVk1CdXMgaXMgc29mdHdhcmUtZW11bGF0ZWQgaW4gUUVNVS9LVk0gKHRvIHNvbWUgZXh0ZW50KSBvciBTeXprYWxsZXIgY2FuIG1vY2sgaXQuIFRoZXJlZm9yZSBpdCBpcyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBsZXQgbWUgbG9vayBhdCB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoOlxuXG4qICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYFxuKiAgIGB2bWJ1c19mcmVlX2J1ZmZlcmBcbiogICBgdm1idXNfYWxsb2NfYnVmZmVyYFxuKiAgIGBuZXR2c2Nfd29ya3F1ZXVlX2luaXRgXG4qICAgYG5ldHZzY193b3JrcXVldWVfZGVzdHJveWBcblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AgYW5kIGBkcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmNgLiBUaGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZTogYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCwgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgYW5kIGB2bWJ1c19hbGxvY19idWZmZXJgLiBMZXQncyBjaGVjayBgdm1idXNfYWxsb2NfYnVmZmVyYCBhbmQgYHZtYnVzX2ZyZWVfYnVmZmVyYC4gSSBzZWUgdGhleSBhcmUgZXhwb3J0ZWQgc3ltYm9scyBpbiBgZHJpdmVycy9odi9jaGFubmVsLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM5NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTowNC41MzgxMzM4OTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzEzMDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtYnVzX2FsbG9jX2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuYz02MTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYxNDogKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjE3LSAqICAgICAgICBmYWlsZWQgYWxsb2NhdGlvbilcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTg6ICogQGNodW5rczogY2h1bmtzIGFycmF5IGZyb20gdm1idXNfYWxsb2NfYnVmZmVyKCksIG9yIE5VTExcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02MTktICogQGNodW5rX2NudDogbnVtYmVyIG9mIGVudHJpZXMgaW4gQGNodW5rc1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9NjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2ZyZWVfYnVmZmVyKTtcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY1MS0vKipcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NTI6ICogdm1idXNfYWxsb2NfYnVmZmVyIC0gYWxsb2NhdGUgYSBob3N0LXZpc2libGUsIHZpcnR1YWxseS1jb250aWd1b3VzIGJ1ZmZlci5cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NTMtICpcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY2OS0gKi9cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2NzA6dm9pZCAqdm1idXNfYWxsb2NfYnVmZmVyKHN0cnVjdCB2bWJ1c19jaGFubmVsICpjaGFubmVsLFxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTY3MS1cXHRcXHRcXHQgdTMyIHNpemUsXFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy03NjMtfVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjc2NDpFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19hbGxvY19idWZmZXIpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MDQuNjU1NDUyMDE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NTg0Mzk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB2bWJ1c19mcmVlX2J1ZmZlcmAgYW5kIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgdHdvIGZ1bmN0aW9uczogYHZtYnVzX2ZyZWVfYnVmZmVyYCBhbmQgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwLiBJcyBgdm1idXNfZnJlZV9idWZmZXJgIGNhbGxlZCAqYWZ0ZXIqIGEgZ3BhZGwgaXMgZXN0YWJsaXNoZWQsIGxpa2VseSB0byBjbGVhbiB1cCBhZnRlciBpdD8gT3IgYXJlIHRoZXNlIHR3byBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcms/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlaXIgdXNhZ2UgdG8gc2VlIGlmIGFueSBvYnZpb3VzIHBhdHRlcm5zIGVtZXJnZS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3Agd2hhdCBjb250ZXh0IGVhY2ggZnVuY3Rpb24gb3BlcmF0ZXMgd2l0aGluLiBXaGF0J3MgdGhlIHR5cGljYWwgd29ya2Zsb3c/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyBtYW5hZ2VkLCBhbmQgd2hhdCBhcmUgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBpbiB0aGVpciByZXNwZWN0aXZlIGltcGxlbWVudGF0aW9ucz8gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgcmFjZSBjb25kaXRpb25zLCBtZW1vcnkgbGVha3MsIG9yIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGBfZGVjcnlwdGVkYCBvbmUsIGJlY2F1c2UgZGVjcnlwdGlvbiBmdW5jdGlvbnMgYWx3YXlzIGludHJvZHVjZSBtb3JlIGNvbXBsZXhpdHkgYW5kIHJpc2suXG5cbkkgYW50aWNpcGF0ZSB0aGUgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYCBmdW5jdGlvbiBjb3VsZCBiZSBrZXkgaW4gdGhlIHNlY3VyaXR5IHBvc3R1cmUgb2YgdGhlIFZNQnVzLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBlbmNyeXB0aW9uIGtleSBleGNoYW5nZSBhbmQgZGVjcnlwdGlvbiBwcm9jZXNzIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkgYW5kIHNlY3VyZWx5LiBBbnkgZmxhdyBjb3VsZCBsZWFkIHRvIGEgY29tcHJvbWlzZS4gVW5kZXJzdGFuZGluZyBob3cgdGhlIGNhbGxlciBjb250ZXh0IGlzIGVzdGFibGlzaGVkIHdpbGwgYmUgY3J1Y2lhbC4gRG9lcyB0aGUgY2FsbGVyIGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2U/IElzIHRoZSBncGFkbCBzZWN1cmUgZnJvbSB1bmF1dGhvcml6ZWQgYWNjZXNzP1xuXG5SZWdhcmRpbmcgYHZtYnVzX2ZyZWVfYnVmZmVyYCwgSSdsbCBuZWVkIHRvIGNvbmZpcm0gaXQgaGFuZGxlcyBhbGwgY2FzZXMuIEFyZSB0aGVyZSBhbnkgY29ybmVyIGNhc2VzIHdoZXJlIGJ1ZmZlcnMgbWlnaHQgYmUgbGVha2VkLCBvciBkb3VibGUtZnJlZWQ/IEhvdyBhcmUgdGhlc2UgYnVmZmVycyBtYW5hZ2VkPyBJcyBhIHJlZmNvdW50aW5nIHNjaGVtZSBpbnZvbHZlZD8gVW5kZXJzdGFuZGluZyB0aGUgcmVzb3VyY2UgbGlmZWN5Y2xlIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBzaG9ydCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGJ1aWxkaW5nIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBlYWNoIGZ1bmN0aW9uJ3MgcHVycG9zZSwgdGhlbiB0cnkgdG8gcGllY2UgdG9nZXRoZXIgdGhlaXIgcmVsYXRpb25zaGlwIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGlzc3VlcyBpbiB0ZXJtcyBvZiBzZWN1cml0eSwgcmVzb3VyY2UgbWFuYWdlbWVudCwgYW5kIG92ZXJhbGwgcmVsaWFiaWxpdHkgd2l0aGluIHRoZSBWTUJ1cyBhcmNoaXRlY3R1cmUuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIGFuYWx5c2lzLCBmb2N1c2luZyBvbiBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIGFuZCBwb3RlbnRpYWwgZXhwbG9pdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MDkuMjUxMzA1MjcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjA5Mjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L2NoYW5uZWwuYz02MTE9RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEzLS8qKlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYxNDogKiB2bWJ1c19mcmVlX2J1ZmZlciAtIHJlbGVhc2UgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IHZtYnVzX2FsbG9jX2J1ZmZlcigpLlxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxNS0gKlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjI1LSAqL1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYyNjp2b2lkIHZtYnVzX2ZyZWVfYnVmZmVyKHZvaWQgKmFkZHIsIHN0cnVjdCBwYWdlICoqY2h1bmtzLCB1MzIgY2h1bmtfY250KVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYyNy17XFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy02NDgtfVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjY0OTpFWFBPUlRfU1lNQk9MX0dQTCh2bWJ1c19mcmVlX2J1ZmZlcik7XFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjUwLVxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmM9NjcwPXZvaWQgKnZtYnVzX2FsbG9jX2J1ZmZlcihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTc2MC1cXHRrdmZyZWUocGFnZXMpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjc2MTpcXHR2bWJ1c19mcmVlX2J1ZmZlcihOVUxMLCBjaHVua3MsIGNodW5rX2NudCk7XFxuZHJpdmVycy9odi9jaGFubmVsLmMtNzYyLVxcdHJldHVybiBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTowOS4zNTc0MDI1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDA2MTk5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgR1BBREwgRXN0YWJsaXNobWVudCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGAsIGFuZCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBjcml0aWNhbCByb2xlIHRoaXMgZnVuY3Rpb24gcGxheXMgaW4gc2VjdXJlIGNvbW11bmljYXRpb24gd2l0aGluIHRoZSBWTUJ1cyBmcmFtZXdvcmsuIEkgbmVlZCB0byBicmVhayBkb3duIHByZWNpc2VseSAqaG93KiBpdCdzIHdvcmtpbmcgdG8gZXN0YWJsaXNoIGEgR2xvYmFsIFBhZ2UgQWRkcmVzcyBEZXNjcmlwdG9yIExpc3QgKEdQQURMKSwgZXNwZWNpYWxseSB3aXRoIHRoZSBcImRlY3J5cHRlZFwiIGVsZW1lbnQuIFRoaXMgY2xlYXJseSBzaWduYWxzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgc2VjdXJpdHktc2Vuc2l0aXZlIGNoYW5uZWwuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYXJvdW5kIGRhdGEgaW50ZWdyaXR5OiBXaGF0IGVuY3J5cHRpb24gc2NoZW1lIGlzIGVtcGxveWVkPyBJcyBpdCBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYz8gVW5kZXJzdGFuZGluZyB0aGUga2V5IGV4Y2hhbmdlIHByb2Nlc3MgaXMgcGFyYW1vdW50LiBXaGVyZSBpcyB0aGUgZGVjcnlwdGlvbiBrZXkgZGVyaXZlZCBmcm9tPyBJcyBpdCBzb21ldGhpbmcgc3RhdGljLCBvciBwYXJ0IG9mIGEgbW9yZSBkeW5hbWljIGFuZCBzZWN1cmUga2V5IGFncmVlbWVudCBwcm90b2NvbD8gSXMgaXQgYXV0aGVudGljYXRlZCBzb21laG93PyBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgY29udHJvbCBhbmQgZGV0ZXJtaW5lIHdoZXJlIHRoZSBkZWNyeXB0aW9uIGhhcHBlbnMuIElzIGl0IHBlcmZvcm1lZCBpbiB0aGUgY2FsbGVyLCBvciBpcyBpdCBkZWxlZ2F0ZWQgZnVydGhlciBkb3duP1xuXG5UaGVuLCB0aGUgR1BBREwgc3RydWN0dXJlIGl0c2VsZiBpcyBrZXkuIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBsYXlvdXQgb2YgdGhlIG1lbW9yeSBtYXBwaW5ncyDigJMgd2hpY2ggcGh5c2ljYWwgcGFnZXMgYXJlIGJlaW5nIHJlZmVyZW5jZWQsIGFuZCBob3cuIElzIGl0IGEgY29udGlndW91cyBtYXBwaW5nLCBvciBpcyBpdCBmcmFnbWVudGVkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGFsaWdubWVudCBjb25zdHJhaW50cz8gVGhlIFwiY2FsbGVyXCIgcGFydCBpcyBpbnRlcmVzdGluZyB0b28uIEl0IHRlbGxzIG1lIHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpcyB0aGUgaW5pdGlhdG9yLiBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBkcml2ZXIsIHRoZSBndWVzdCBPUywgb3Igc29tZXdoZXJlIGVsc2U/IFRoYXQgd2lsbCBkZXRlcm1pbmUgd2hhdCBsZXZlbCBvZiBwcml2aWxlZ2UgbmVlZHMgdG8gYmUgaW52b2x2ZWQuXG5cbkFuZCBvZiBjb3Vyc2UsIHNlY3VyaXR5IGlzIGV2ZXJ5dGhpbmcgaGVyZS4gSSBtdXN0IGZvY3VzIG9uIHZ1bG5lcmFiaWxpdGllcy4gTXkgbWluZCBpcyBhbHJlYWR5IHByb2JpbmcgZm9yIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueSBvcHBvcnR1bml0aWVzIGZvciBkYXRhIHRhbXBlcmluZyBkdXJpbmcgdGhpcyBwcm9jZXNzLiBDYW4gYSBtYWxpY2lvdXMgYWN0b3IgZ2FpbiBhY2Nlc3MgdG8gdGhlIHJhdyBHUEFETCBpbmZvcm1hdGlvbiBhbmQgc3VidmVydCB0aGUgdW5kZXJseWluZyBtZW1vcnkgbWFwcGluZz8gV2hhdCBhdWRpdGluZyBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZT9cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYXR0YWNrIHN1cmZhY2UgYW5kIGFzc2VzcyB0aGUgcmVsaWFiaWxpdHkgb2YgdGhpcyBzZWN1cmUgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdpdGhpbiB0aGUgVk1CdXMgYXJjaGl0ZWN0dXJlLiBJdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIHZ1bG5lcmFiaWxpdHkgaGVyZSBjb3VsZCBoYXZlIHNlcmlvdXMgcmFtaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NzAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxNC40OTgwMjc4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2NDIzMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9odi9jaGFubmVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9odi9jaGFubmVsLmM9NTkxPUVYUE9SVF9TWU1CT0xfR1BMKHZtYnVzX2VzdGFibGlzaF9ncGFkbCk7XFxuLS1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTMtLypcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo1OTQ6ICogdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQgLSBFc3RhYmxpc2ggYSBHUEFETCBmb3IgYSBidWZmZXJcXG5kcml2ZXJzL2h2L2NoYW5uZWwuYy01OTUtICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlY3J5cHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjAzLSAqL1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jOjYwNDppbnQgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwsXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjA1LVxcdFxcdFxcdFxcdFxcdCAgIHZvaWQgKmtidWZmZXIsIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9odi9jaGFubmVsLmMtNjEwLX1cXG5kcml2ZXJzL2h2L2NoYW5uZWwuYzo2MTE6RVhQT1JUX1NZTUJPTF9HUEwodm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWQpO1xcbmRyaXZlcnMvaHYvY2hhbm5lbC5jLTYxMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MTQuNTY5Njc4OTAyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzkzMjY0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBOZXRWU0MgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IHdvcmtxdWV1ZXMgYXJlIG9mdGVuIHVzZWQgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcsIGxpa2VseSB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cyBvciBvZmZsb2FkIHRhc2tzLiBNeSBmaXJzdCBtb3ZlIGlzIGdvaW5nIHRvIGJlIHRvIHplcm8gaW4gb24gdGhvc2UgZnVuY3Rpb25zIHdpdGhpbiBgbmV0dnNjLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSB3b3JrcXVldWVzIGFyZSBiZWluZyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgYWRkaXRpb25zIGluIHRoZSBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlcyBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIG5ldHdvcmsgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCdzIHNlZSB3aGF0IGVsc2UgdGhleSBzbnVjayBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxNy45NDkwMDg4MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDcyNDM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljLipuZXR2c2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzE6c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpuZXR2c2Nfd3E7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTM3PWludCBuZXR2c2Nfc3dpdGNoX2RhdGFwYXRoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk4LSAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5OTpzdGF0aWMgdm9pZCBuZXR2c2Nfc3ViY2hhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xMjktXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEzMDpzdGF0aWMgdm9pZCBfX2ZyZWVfbmV0dnNjX2RldmljZShzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZkZXYpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUwLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTE6c3RhdGljIHZvaWQgZnJlZV9uZXR2c2NfZGV2aWNlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0xNjU9dm9pZCBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3kodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzAtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE3MTpzdGF0aWMgc3RydWN0IG5ldHZzY19kZXZpY2UgKmFsbG9jX25ldF9kZXZpY2Uodm9pZClcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xOTMtXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE5NDpzdGF0aWMgdm9pZCBmcmVlX25ldHZzY19kZXZpY2VfcmN1KHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldilcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yMDItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjIwMzpzdGF0aWMgdm9pZCBuZXR2c2NfcmV2b2tlX3JlY3ZfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMjA0LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTI1Mi1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MjUzOnN0YXRpYyB2b2lkIG5ldHZzY19yZXZva2Vfc2VuZF9idWYoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0yNTQtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzozMDQ6c3RhdGljIHZvaWQgbmV0dnNjX3RlYXJkb3duX3JlY3ZfZ3BhZGwoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0zMDUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTMyNC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzI1OnN0YXRpYyB2b2lkIG5ldHZzY190ZWFyZG93bl9zZW5kX2dwYWRsKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzI2LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0zNDY9aW50IG5ldHZzY19hbGxvY19yZWN2X2NvbXBfcmluZyhzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSwgdTMyIHFfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTM1OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MzYwOnN0YXRpYyBpbnQgbmV0dnNjX2luaXRfYnVmKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMzYxLVxcdFxcdFxcdCAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTU4Nz1zdGF0aWMgaW50IG5lZ290aWF0ZV9udnNwX3ZlcihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo2NDk6c3RhdGljIGludCBuZXR2c2NfY29ubmVjdF92c3Aoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy02NTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NzIyPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4My1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6Nzg0OnN0YXRpYyBpbmxpbmUgdm9pZCBuZXR2c2NfZnJlZV9zZW5kX3Nsb3Qoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4NS1cXHRcXHRcXHRcXHRcXHQgdTMyIGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTc4OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzkwOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3R4X2NvbXBsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03OTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg0OS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6ODUwOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX2NvbXBsZXRpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg1MS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy05NjItXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjk2MzpzdGF0aWMgdTMyIG5ldHZzY19nZXRfbmV4dF9zZW5kX3NlY3Rpb24oc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtOTc1LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo5NzY6c3RhdGljIHZvaWQgbmV0dnNjX2NvcHlfdG9fc2VuZF9idWYoc3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldF9kZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTk3Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNlY3Rpb25faW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTAxMz12b2lkIG5ldHZzY19kbWFfdW5tYXAoc3RydWN0IGh2X2RldmljZSAqaHZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNDktICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjEwNTA6c3RhdGljIGludCBuZXR2c2NfZG1hX21hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwNTEtXFx0XFx0XFx0ICBzdHJ1Y3QgaHZfbmV0dnNjX3BhY2tldCAqcGFja2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEwOTktICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjExMDA6c3RhdGljIGlubGluZSB2b2lkIG5ldHZzY19idWlsZF9tcGJfYXJyYXkoc3RydWN0IGh2X3BhZ2VfYnVmZmVyICpwYixcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEwMS1cXHRcXHRcXHRcXHR1MzIgcGFnZV9idWZmZXJfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTEyNTpzdGF0aWMgaW5saW5lIGludCBuZXR2c2Nfc2VuZF9wa3QoXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTExMjYtXFx0c3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTEyMjQtLyogTW92ZSBwYWNrZXQgb3V0IG9mIG11bHRpIHNlbmQgZGF0YSAobXNkKSwgYW5kIGNsZWFyIG1zZCAqL1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxMjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZlX3BrdF9tc2Qoc3RydWN0IGh2X25ldHZzY19wYWNrZXQgKiptc2Rfc2VuZCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTIyNi1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqKm1zZF9za2IsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTM4ND1zdGF0aWMgaW50IHNlbmRfcmVjdl9jb21wbGV0aW9ucyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDIzLS8qIENvdW50IGhvdyBtYW55IHJlY2VpdmUgY29tcGxldGlvbnMgYXJlIG91dHN0YW5kaW5nICovXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE0MjQ6c3RhdGljIHZvaWQgcmVjdl9jb21wX3Nsb3RfYXZhaWwoY29uc3Qgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDI1LVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbXVsdGlfcmVjdl9jb21wICptcmMsXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTQzOT1zdGF0aWMgdm9pZCBlbnFfcmVjZWl2ZV9jb21wbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNDY4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNDY5OnN0YXRpYyBpbnQgbmV0dnNjX3JlY2VpdmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE0NzAtXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0X2RldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgxLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNTgyOnN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNTgzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudnNjZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjctXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE2Mjg6c3RhdGljIHZvaWQgbmV0dnNjX3NlbmRfdmYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2MjktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG52c3BfbWVzc2FnZSAqbnZtc2csXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTY1MS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTY1MjpzdGF0aWMgdm9pZCBuZXR2c2NfcmVjZWl2ZV9pbmJhbmQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2NTMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2RldmljZSAqbnZzY2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNjc4LVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNjc5OnN0YXRpYyBpbnQgbmV0dnNjX3Byb2Nlc3NfcmF3X3BrdChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE2ODAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0dnNjX2NoYW5uZWwgKm52Y2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xNzExLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxNzEyOnN0YXRpYyBzdHJ1Y3QgaHZfZGV2aWNlICpuZXR2c2NfY2hhbm5lbF90b19kZXZpY2Uoc3RydWN0IHZtYnVzX2NoYW5uZWwgKmNoYW5uZWwpXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE3MTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToxOC4wNjM3NDE0NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzk1MjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZNQnVzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmV3IG5ldyBmdW5jdGlvbnM6IGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLCBhbmQgc29tZSB3b3JrcXVldWUgbWFuYWdlbWVudCByb3V0aW5lcywgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLiBBaCwgdGhlIHdvcmtxdWV1ZSBmdW5jdGlvbnMgYXJlIGp1c3Qgd3JhcHBlcnMsIG5vdGhpbmcgY29tcGxleCB0aGVyZS4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIHBhdGNoIGlzIGluIHRoZSBidWZmZXIgYWxsb2NhdGlvbiBhbmQgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGB2bWJ1c19hbGxvY19idWZmZXJgIGFuZCBgdm1idXNfZnJlZV9idWZmZXJgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYHZtYnVzX2FsbG9jX2J1ZmZlcmAgaXMgYWN0dWFsbHkgdXNlZC4gQSBxdWljayBzY2FuIHJldmVhbHMgaXQncyBjYWxsZWQgd2l0aGluIGBuZXR2c2NfaW5pdF9idWZgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBhIG5ldHZzYyBkZXZpY2UgaXMgYWRkZWQg4oCTIHNvLCB5ZXMsIGl04oCZcyByZWFjaGFibGUuIEdvb2QsIHRoYXQncyBpbXBvcnRhbnQgZm9yIGZ1enppbmcuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHkhIEl0IGFsbG9jYXRlcyBtZW1vcnksIG1hcmtzIGl0IGFzIGRlY3J5cHRlZCwgKmFuZCogbWFwcyBpdC4gVGhhdCdzIGEgY2xhc3NpYyB0YXJnZXQgZm9yIGZpbmRpbmcgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGVyZWZvcmUsIG15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbjpcblxuKiAgIGB2bWJ1c19hbGxvY19idWZmZXJgXG4qICAgYHZtYnVzX2ZyZWVfYnVmZmVyYFxuKiAgIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGBcblxuTGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvcnJlY3QgdG8gc3RhcnQgd2l0aC4gTG9va3MgbGlrZSBgQ09ORklHX0hZUEVSVmAgYW5kIGBDT05GSUdfSFlQRVJWX05FVGAgYXJlIHJlcXVpcmVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIGBkcml2ZXJzL25ldC9oeXBlcnYvYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIwMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyMy4yNjc2OTc1NjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMjA1MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhZUEVSVl9ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaHlwZXJ2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnOjI6Y29uZmlnIEhZUEVSVl9ORVRcXG5kcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICs9IGh2X25ldHZzYy5vXFxuZHJpdmVycy9uZXQvaHlwZXJ2L01ha2VmaWxlLTMtXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTExLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTI6I2lmbmRlZiBfSFlQRVJWX05FVF9IXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaDoxMzojZGVmaW5lIF9IWVBFUlZfTkVUX0hcXG5kcml2ZXJzL25ldC9oeXBlcnYvaHlwZXJ2X25ldC5oLTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaD0xODI1PXZvaWQgbmV0dnNjX2RtYV91bm1hcChzdHJ1Y3QgaHZfZGV2aWNlICpodl9kZXYsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaC0xODI2LVxcdFxcdCAgICAgIHN0cnVjdCBodl9uZXR2c2NfcGFja2V0ICpwYWNrZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0Lmg6MTgyNzojZW5kaWYgLyogX0hZUEVSVl9ORVRfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyMy4zNTA5MDg1NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4OTY0OTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEh5cGVyLVYgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYGRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHdoYXQncyByZXF1aXJlZCBhbmQgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2hvaWNlcyBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIgaW4gbXkgZXhhbWluYXRpb24gb2YgdGhlIGRyaXZlciBjb2RlLCBvciBJJ2xsIGJlIHNwaW5uaW5nIG15IHdoZWVscy4gS25vd2luZyB0aGlzIEtjb25maWcgY29uZmlndXJhdGlvbiBpbnNpZGUgYW5kIG91dCB3aWxsIHByZXZlbnQgYSBsb3Qgb2Ygd2FzdGVkIHRpbWUgZG93biB0aGUgbGluZS4gSXQgaXMgYSBsb2dpY2FsIGZpcnN0IHN0ZXAgZm9yIHRoaXMgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMToyNi40NDA1NjE2MjlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSFlQRVJWX05FVFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIHZpcnR1YWwgbmV0d29yayBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhZUEVSVl9WTUJVU1xcbiAgIDU6XFx0XFx0c2VsZWN0IFVDUzJfU1RSSU5HXFxuICAgNjpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBlbmFibGUgdGhlIEh5cGVyLVYgdmlydHVhbCBuZXR3b3JrIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MjYuNDQwNjkwMDQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODk3MjM2MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIHdlbGwtdmVyc2VkIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBoeXBlcnZpc29yIGRyaXZlcnMuXG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBEcmlsbGluZyBEb3duIGludG8gSHlwZXItViBOZXR3b3JraW5nKipcblxuQWxyaWdodCwgc28gYEhZUEVSVl9ORVRgIHJlbGllcyBvbiBgSFlQRVJWX1ZNQlVTYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgcHJvcGVybHkgY29uZmlndXJlZCwgYW5kIEknbGwgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGp1bXAgc3RyYWlnaHQgdG8gYGRyaXZlcnMvaHYvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2ssIGdpdmVuIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXMgY2xlYXJseSByZWxhdGVkIHRvIHRoZSBIeXBlci1WIHZpcnR1YWwgYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGF0IHBsYXkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYEhZUEVSVl9WTUJVU2AgaXNuJ3QgZGlzYWJsZWQgYnkgZGVmYXVsdCBvciBoaWRkZW4gYmVoaW5kIHNvbWUgb2JzY3VyZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHRyb3VibGVzaG9vdCBhbnkgbmV0d29ya2luZyBwcm9ibGVtcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBoeXBlcnZpc29yLCBhbmQgSSdsbCBrbm93IHdoZXJlIHRvIGFkanVzdCB0aGUgYnVpbGQgY29uZmlnIHRvIG1lZXQgaXRzIHJlcXVpcmVtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NjMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjMwLjMzMDQyMDIxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc4MDMzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhZUEVSVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2h2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L0tjb25maWc9Mz1tZW51IFxcXCJNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvaHYvS2NvbmZpZy00LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo1OmNvbmZpZyBIWVBFUlZcXG5kcml2ZXJzL2h2L0tjb25maWctNi1cXHRib29sIFxcXCJNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL2h2L0tjb25maWc6MTc6Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxcbmRyaXZlcnMvaHYvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFxcXCJcXG4tLVxcbmRyaXZlcnMvaHYvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL2h2L0tjb25maWc6NDM6Y29uZmlnIEhZUEVSVl9USU1FUlxcbmRyaXZlcnMvaHYvS2NvbmZpZy00NC1cXHRkZWZfYm9vbCBIWVBFUlYgXFx1MDAyNlxcdTAwMjYgWDg2XFxuZHJpdmVycy9odi9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo0Njpjb25maWcgSFlQRVJWX1VUSUxTXFxuZHJpdmVycy9odi9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViBVdGlsaXRpZXMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTUyLVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo1Mzpjb25maWcgSFlQRVJWX0JBTExPT05cXG5kcml2ZXJzL2h2L0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIEJhbGxvb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTU5LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXFxuZHJpdmVycy9odi9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjMwLjQwODIzMDA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0NTIxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIEh5cGVyLVYgVk1CdXMgRGVwZW5kZW5jaWVzKipcblxuT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYEhZUEVSVl9WTUJVU2AuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXJzIGluIHRoZSBIeXBlci1WIHNlY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4gaXMgYGRyaXZlcnMvaHYvS2NvbmZpZ2AuIEknbGwgd2FudCB0byBzZWUgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBvciBvcHRpb25zIGFyZSBsaW5rZWQgdG8gYEhZUEVSVl9WTUJVU2AuIEknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMsIHBlcmhhcHMgb3RoZXIgSHlwZXItViBmZWF0dXJlcyB0aGF0IHJlbHkgb24gdGhlIFZNQnVzLCBvciBtYXliZSBldmVuIGFyY2hpdGVjdHVyYWwgY29uc3RyYWludHMgcmVsYXRlZCB0byBob3cgdGhlIFZNQnVzIGlzIHVzZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIGl0cyByb2xlIHdpdGhpbiB0aGUgYnJvYWRlciBIeXBlci1WIGRyaXZlciBmcmFtZXdvcmsuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBpdCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgYW5kIHdoZXRoZXIgSSBjYW4gY2hhbmdlIGFueSBhc3NvY2lhdGVkIHBhcmFtZXRlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MzMuNDkyNjg1NTkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2h2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgSFlQRVJWX1ZNQlVTXFxuICA2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgVk1CdXMgZHJpdmVyXFxcIlxcbiAgNjI6XFx0XFx0ZGVwZW5kcyBvbiBIWVBFUlZcXG4gIDYzOlxcdFxcdGRlZmF1bHQgSFlQRVJWXFxuICA2NDpcXHRcXHRzZWxlY3QgU1lTRkIgaWYgRUZJIFxcdTAwMjZcXHUwMDI2ICFIWVBFUlZfVlRMX01PREVcXG4gIDY1OlxcdFxcdGhlbHBcXG4gIDY2OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGVuYWJsZSBIeXBlci1WIFZtYnVzIGRyaXZlci5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIE1TSFZfUk9PVFxcbiAgNjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIHJvb3QgcGFydGl0aW9uIHN1cHBvcnRcXFwiXFxuICA3MDpcXHRcXHRkZXBlbmRzIG9uIEhZUEVSViBcXHUwMDI2XFx1MDAyNiAoWDg2XzY0IHx8IEFSTTY0KVxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiAhSFlQRVJWX1ZUTF9NT0RFXFxuICA3MjpcXHRcXHQjIFRoZSBoeXBlcnZpc29yIGludGVyZmFjZSBvcGVyYXRlcyBvbiA0ayBwYWdlcy4gRW5mb3JjaW5nIGl0IGhlcmVcXG4gIDczOlxcdFxcdCMgc2ltcGxpZmllcyBtYW55IGFzc3VtcHRpb25zIGluIHRoZSByb290IHBhcnRpdGlvbiBjb2RlLlxcbiAgNzQ6XFx0XFx0IyBlLmcuIFdoZW4gd2l0aGRyYXdpbmcgbWVtb3J5LCB0aGUgaHlwZXJ2aXNvciBnaXZlcyBiYWNrIDRrIHBhZ2VzIGluXFxuICA3NTpcXHRcXHQjIG5vIHBhcnRpY3VsYXIgb3JkZXIsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHJlYXNzZW1ibGUgbGFyZ2VyIHBhZ2VzXFxuICA3NjpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfU0laRV80S0JcXG4gIDc3OlxcdFxcdHNlbGVjdCBFVkVOVEZEXFxuICA3ODpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjE6MzMuNDkyNzk1ODExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY1NjcyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBIeXBlci1WIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBgSFlQRVJWX1ZNQlVTYCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBgSFlQRVJWYCBjb3JlIGNvbXBvbmVudC4gTmF0dXJhbGx5LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gVGltZSB0byBkaWcgaW50byB0aGUgYEhZUEVSVmAgbW9kdWxlIGl0c2VsZi4gV2hhdCBkb2VzICppdCogZGVwZW5kIG9uPyBHb3R0YSBtYXAgb3V0IHRoZSBlbnRpcmUgdHJlZSB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIEh5cGVyLVYgc3RhY2sgaXMgaW50ZXJjb25uZWN0ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW50ZXJlc3RpbmcuLi4gbGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzg5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyMTozNi41MjkzNjY5MzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9odi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51IFxcXCJNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgSFlQRVJWXFxuICAgNjpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgSHlwZXItViBjb3JlIGh5cGVydmlzb3Igc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gKFg4NiBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBIWVBFUlZJU09SX0dVRVNUKSBcXFxcXFxuICAgODpcXHRcXHRcXHR8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbiAgIDk6XFx0XFx0c2VsZWN0IFBBUkFWSVJUXFxuICAxMDpcXHRcXHRzZWxlY3QgWDg2X0hWX0NBTExCQUNLX1ZFQ1RPUiBpZiBYODZcXG4gIDExOlxcdFxcdHNlbGVjdCBPRl9FQVJMWV9GTEFUVFJFRSBpZiBPRlxcbiAgMTI6XFx0XFx0c2VsZWN0IElSUV9NU0lfTElCIGlmIFg4NlxcbiAgMTM6XFx0XFx0aGVscFxcbiAgMTQ6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcnVuIExpbnV4IGFzIGEgSHlwZXItViBjbGllbnQgb3BlcmF0aW5nXFxuICAxNTpcXHRcXHQgIHN5c3RlbS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIExpbnV4IHRvIGJvb3QgaW4gVlRMIGNvbnRleHRcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIChYODZfNjQgXFx1MDAyNlxcdTAwMjYgSEFWRV9TVEFUSUNfQ0FMTCkgfHwgQVJNNjRcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSFlQRVJWXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjM2LjUyOTQ2MDM4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ3MTEwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBIeXBlci1WIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBmb3IgYEhZUEVSVmA6IGl0IGhpbmdlcyBvbiBlaXRoZXIgYW4geDg2IGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBsb2NhbCBBUElDIGFuZCBhIGd1ZXN0IGh5cGVydmlzb3IsIG9yIEFSTTY0ICp3aXRob3V0KiBiaWctZW5kaWFubmVzcy4gR290IGl0LiBTeXprYWxsZXIncyByb2xlIGhlcmUgaXMgY3J1Y2lhbCwgYXMgaXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGBIWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZfTkVUYC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBWTUJ1cyBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBidWZmZXIgYWxsb2NhdGlvbiwgZGVhbGxvY2F0aW9uLCBhbmQgR1BBREwgZXN0YWJsaXNobWVudDogYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwgZnVuY3Rpb25zIGluIHRoZSBWTUJ1cyBub3cgYmVpbmcgdXRpbGl6ZWQgYnkgYG5ldHZzY2AsIGFuZCB0aGF0J3MgdGhlIGtleS4gVGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3Mgd2UgbmVlZCB0byBmb2N1cyBvbiBmb3IgZW5hYmxpbmcgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFyZSBgSFlQRVJWYCwgYEhZUEVSVl9WTUJVU2AsIGFuZCBgSFlQRVJWX05FVGAuXG5cbkkgcXVpY2tseSBldmFsdWF0ZWQgc29tZSBvdGhlciBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgdGhleSdyZSByZWxldmFudCwgYnV0IHRoZSB3cmFwcGVycyBmb3IgYG5ldHZzY193b3JrcXVldWVfaW5pdGAgYW5kIGBuZXR2c2Nfd29ya3F1ZXVlX2Rlc3Ryb3lgLCBhbmQgdGhlIHRlYXJkb3duIGZ1bmN0aW9ucyBsaWtlIGBmcmVlX25ldHZzY19kZXZpY2VfcmN1YCwgYF9fZnJlZV9uZXR2c2NfZGV2aWNlYCwgYW5kIGBmcmVlX25ldHZzY19kZXZpY2VgLCBhcHBlYXIgbGVzcyBjcml0aWNhbCBmb3IgZnV6emluZyBwdXJwb3Nlcy4gVGhleSBtaWdodCBiZSByZWFjaGFibGUsIGJ1dCB0aGV5IGFyZW4ndCB0aGUgaGVhcnQgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFwcGVhciB0byBiZSBoZWF2aWx5IGNvbmNlbnRyYXRlZCBpbiB0aGUgYnVmZmVyIGFsbG9jYXRpb24gYW5kIEdQQURMIG1hbmFnZW1lbnQgYXJlYXMuXG5cbkxldCBtZSB2ZXJpZnkgdGhhdCBgdm1idXNfYWxsb2NfYnVmZmVyYCBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFFFTVUvc3l6a2FsbGVyIHNldHVwLiBZZXMsIHN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gbW9jayBWTUJ1cyBkZXZpY2VzLCBzbyB0aGF0IHNob3VsZCB3b3JrLiBXYWl0LCBgdm1idXNfYWxsb2NfYnVmZmVyYCByZXNpZGVzIGluIGBkcml2ZXJzL2h2L2NoYW5uZWwuY2AsIG1ha2luZyBpdCBhIGdlbmVyaWMgVk1CdXMgZnVuY3Rpb24uIEdvb2QsIGFuZCBpdCdzIGludm9rZWQgYnkgYG5ldHZzY19pbml0X2J1ZmAuIERlZmluaXRlbHkgcmVhY2hhYmxlIGlmIGBIWVBFUlZfTkVUYCBpcyBjb25maWd1cmVkIGFuZCBwcm9iZWQuICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbkhlcmUncyB0aGUgZGlzdGlsbGVkIHN1bW1hcnk6XG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYHZtYnVzX2FsbG9jX2J1ZmZlcmBcbiogICBgdm1idXNfZnJlZV9idWZmZXJgXG4qICAgYHZtYnVzX2VzdGFibGlzaF9ncGFkbF9jYWxsZXJfZGVjcnlwdGVkYFxuXG4qKkVuYWJsZSBDb25maWd1cmF0aW9uczoqKlxuXG4qICAgYEhZUEVSVmBcbiogICBgSFlQRVJWX1ZNQlVTYFxuKiAgIGBIWVBFUlZfTkVUYFxuXG4qKlJlYXNvbmluZzoqKlxuXG5UaGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IEh5cGVyLVYgbmV0d29ya2luZyBoYW5kbGVzIGJ1ZmZlciBhbGxvY2F0aW9uLCBtZW1vcnkgZGVjcnlwdGlvbiwgYW5kIEdQQURMIGVzdGFibGlzaG1lbnQgdGhyb3VnaCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMgYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGFuZCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgIGFuZCBzdWJzZXF1ZW50IHVzZSBieSB0aGUgYG5ldHZzY2AgbmV0d29yayBkcml2ZXIuIFRoZXNlIFZNQnVzLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZSAqa2V5KiBhcyB0aGV5J3JlIG5vdyBpbnZvbHZlZCBpbiBtZW1vcnkgZGVjcnlwdGlvbiBhbmQgbWFwcGluZyBmb3IgVk1CdXMgY2hhbm5lbHMuIEdpdmVuIHRoYXQgVk1CdXMgaXMgZW11bGF0ZWQgb3IgbW9ja2VkIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSB0aGUgb25lcyBzdXBwb3J0ZWQgYnkgU3l6a2FsbGVyLCBpdCBtYWtlcyB0aGVzZSB0YXJnZXRzIGhpZ2hseSBzdWl0YWJsZSBmb3IgZnV6emluZyBlZmZvcnRzLCBhbmQgc2hvdWxkIGJlIHRoZSBpbW1lZGlhdGUgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjg1LCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjIxOjQ1LjE3NjU3Njc4NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDUxNzgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVl9ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWJ1c19hbGxvY19idWZmZXJcIixcbiAgICBcInZtYnVzX2ZyZWVfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IFZNQnVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBHUEFETCBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyAoYHZtYnVzX2FsbG9jX2J1ZmZlcmAsIGB2bWJ1c19mcmVlX2J1ZmZlcmAsIGB2bWJ1c19lc3RhYmxpc2hfZ3BhZGxfY2FsbGVyX2RlY3J5cHRlZGApIGFuZCB1cGRhdGVzIHRoZSBIeXBlci1WIG5ldHdvcmsgZHJpdmVyIChgbmV0dnNjYCkgdG8gdXNlIHRoZW0uIFRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgbWVtb3J5IGRlY3J5cHRpb24gYW5kIG1hcHBpbmcgZm9yIFZNQnVzIGNoYW5uZWxzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBIeXBlci1WIFZNQnVzIGlzIGVtdWxhdGVkIG9yIG1vY2tlZCAoZS5nLiwgdmlhIHN5emthbGxlcikuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIG5ldyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgR1BBREwgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZfTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1idXNfYWxsb2NfYnVmZmVyXCIsXG4gICAgXCJ2bWJ1c19mcmVlX2J1ZmZlclwiLFxuICAgIFwidm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBWTUJ1cyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgR1BBREwgZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgKGB2bWJ1c19hbGxvY19idWZmZXJgLCBgdm1idXNfZnJlZV9idWZmZXJgLCBgdm1idXNfZXN0YWJsaXNoX2dwYWRsX2NhbGxlcl9kZWNyeXB0ZWRgKSBhbmQgdXBkYXRlcyB0aGUgSHlwZXItViBuZXR3b3JrIGRyaXZlciAoYG5ldHZzY2ApIHRvIHVzZSB0aGVtLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIG1lbW9yeSBkZWNyeXB0aW9uIGFuZCBtYXBwaW5nIGZvciBWTUJ1cyBjaGFubmVscywgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgSHlwZXItViBWTUJ1cyBpcyBlbXVsYXRlZCBvciBtb2NrZWQgKGUuZy4sIHZpYSBzeXprYWxsZXIpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSBuZXcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEdQQURMIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow9sdrz[1] Phase: Succeeded StartedAt: 2026-08-07 01:21:57 +0000 UTC FinishedAt: 2026-08-07 01:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 01:21:58 +0000 UTC FinishedAt: 2026-08-07 01:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2] Phase: Succeeded StartedAt: 2026-08-07 01:21:58 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 01:21:58 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 01:21:58 +0000 UTC FinishedAt: 2026-08-07 01:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 01:21:58 +0000 UTC FinishedAt: 2026-08-07 01:22:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow9sdrz/series-workflow9sdrz-convert-artifact-4046358507/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 01:22:09 +0000 UTC FinishedAt: 2026-08-07 01:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 01:22:10 +0000 UTC FinishedAt: 2026-08-07 01:41:09 +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:*a4229a7d-b8bc-4bf0-acd8-197871a08199,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-workflow9sdrz/series-workflow9sdrz-convert-artifact-4046358507/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": "457661a5-2704-4d1f-ac67-d846bee7ffd7", "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-workflow9sdrz/series-workflow9sdrz-build-action-3092315113/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:22:10 +0000 UTC FinishedAt: 2026-08-07 01:40:58 +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:*a4229a7d-b8bc-4bf0-acd8-197871a08199,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-workflow9sdrz/series-workflow9sdrz-convert-artifact-4046358507/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": "457661a5-2704-4d1f-ac67-d846bee7ffd7", "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-workflow9sdrz/series-workflow9sdrz-build-action-3092315113/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 01:41:09 +0000 UTC FinishedAt: 2026-08-07 01:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 01:41:09 +0000 UTC FinishedAt: 2026-08-07 01:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 01:41:09 +0000 UTC FinishedAt: 2026-08-07 01:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 01:41:09 +0000 UTC FinishedAt: 2026-08-07 01:41:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow9sdrz/series-workflow9sdrz-convert-artifact-2625450690/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 01:41:21 +0000 UTC FinishedAt: 2026-08-07 01:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 01:41:21 +0000 UTC FinishedAt: 2026-08-07 01:43:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*457661a5-2704-4d1f-ac67-d846bee7ffd7,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-workflow9sdrz/series-workflow9sdrz-build-action-3092315113/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-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 01:43:25 +0000 UTC FinishedAt: 2026-08-07 01:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 01:43:25 +0000 UTC FinishedAt: 2026-08-07 01:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 01:43:25 +0000 UTC FinishedAt: 2026-08-07 02:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 01:43:25 +0000 UTC FinishedAt: 2026-08-07 02:02:41 +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:*a4229a7d-b8bc-4bf0-acd8-197871a08199,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-workflow9sdrz/series-workflow9sdrz-convert-artifact-2625450690/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": "d0afeb1c-0644-4bbe-b0fc-1e207951436d", "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-workflow9sdrz/series-workflow9sdrz-build-action-3481003286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:43:25 +0000 UTC FinishedAt: 2026-08-07 02:02:31 +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:*a4229a7d-b8bc-4bf0-acd8-197871a08199,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-workflow9sdrz/series-workflow9sdrz-convert-artifact-2625450690/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": "d0afeb1c-0644-4bbe-b0fc-1e207951436d", "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-workflow9sdrz/series-workflow9sdrz-build-action-3481003286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 02:02:41 +0000 UTC FinishedAt: 2026-08-07 02:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 02:02:41 +0000 UTC FinishedAt: 2026-08-07 02:02:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 02:02:41 +0000 UTC FinishedAt: 2026-08-07 02:04:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 02:02:41 +0000 UTC FinishedAt: 2026-08-07 02:04:41 +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:*d0afeb1c-0644-4bbe-b0fc-1e207951436d,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-workflow9sdrz/series-workflow9sdrz-build-action-3481003286/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-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +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":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"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:*457661a5-2704-4d1f-ac67-d846bee7ffd7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0afeb1c-0644-4bbe-b0fc-1e207951436d,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-workflow9sdrz/series-workflow9sdrz-build-action-3092315113/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-workflow9sdrz/series-workflow9sdrz-build-action-3481003286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 02:05:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 02:04:55 +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":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"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-workflow9sdrz/series-workflow9sdrz-convert-artifact-1058885111/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 02:04:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 02:04:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 02:04:50 +0000 UTC FinishedAt: 2026-08-07 02:04:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 02:05:01 +0000 UTC FinishedAt: 2026-08-07 03:03:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sdrz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vmbus_alloc_buffer","vmbus_free_buffer","vmbus_establish_gpadl_caller_decrypted"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a4ffc59238be84dd1c26bf1c001543e832674fc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["HYPERV","HYPERV_VMBUS","HYPERV_NET"],"series_id":"d8ec3d92-da9c-4426-a4b3-e8731888d2b9","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 02:05:01 +0000 UTC FinishedAt: 2026-08-07 03:03:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*457661a5-2704-4d1f-ac67-d846bee7ffd7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d0afeb1c-0644-4bbe-b0fc-1e207951436d,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-workflow9sdrz/series-workflow9sdrz-build-action-3092315113/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-workflow9sdrz/series-workflow9sdrz-build-action-3481003286/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-workflow9sdrz/series-workflow9sdrz-convert-artifact-1058885111/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,}