Name: series-workflowz88fk Phase: Succeeded StartedAt: 2026-06-24 16:50:07 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[0] Phase: Succeeded StartedAt: 2026-06-24 16:50:07 +0000 UTC FinishedAt: 2026-06-24 17:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 16:50:07 +0000 UTC FinishedAt: 2026-06-24 17:03:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS", "AF_RXRPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS", "AF_RXRPC" ], "series_id": "a62521d6-5a0e-4c07-a448-8a09995221eb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_notify_socket_oob", "rxrpc_post_challenge", "rxrpc_respond_to_oob", "afs_rx_notify_oob", "afs_process_oob_queue", "afs_close_socket", "rxrpc_close_tx_phase", "rxrpc_end_tx_phase", "rxrpc_receiving_reply" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7LAogICAgJiMzNDtBRl9SWFJQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX25vdGlmeV9zb2NrZXRfb29iJiMzNDssCiAgICAmIzM0O3J4cnBjX3Bvc3RfY2hhbGxlbmdlJiMzNDssCiAgICAmIzM0O3J4cnBjX3Jlc3BvbmRfdG9fb29iJiMzNDssCiAgICAmIzM0O2Fmc19yeF9ub3RpZnlfb29iJiMzNDssCiAgICAmIzM0O2Fmc19wcm9jZXNzX29vYl9xdWV1ZSYjMzQ7LAogICAgJiMzNDthZnNfY2xvc2Vfc29ja2V0JiMzNDssCiAgICAmIzM0O3J4cnBjX2Nsb3NlX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX2VuZF90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZWNlaXZpbmdfcmVwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ4cnBjIGFuZCBhZnMgc3Vic3lzdGVtcywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHJ4cnBjIGNhbGwgc3RhdGUgbWFjaGluZSAoYWRkaW5nIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIGFuZCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgc3RhdGVzKS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBuZXR3b3JrIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U1NTU1NmQyMTc4MzUxOTVmMmNiOWRkYjBhYzk1NDNkMWNkZjRjNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcbmluZGV4IGVkY2JkMjQ5ZDIwMjRhLi4xMDMxNjhjNzBkZDRkZiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvY21fc2VjdXJpdHkuY1xuQEAgLTEwMSw3ICYjNDM7MTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHNrX2J1ZmYgKm9vYjtcbiBcdGVudW0gcnhycGNfb29iX3R5cGUgdHlwZTtcbiBcbi1cdHdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuJiM0MztcdHdoaWxlIChSRUFEX09OQ0UobmV0LVx1MDAzZWxpdmUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICAob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuIFx0XHRzd2l0Y2ggKHR5cGUpIHtcbiBcdFx0Y2FzZSBSWFJQQ19PT0JfQ0hBTExFTkdFOlxuIFx0XHRcdGFmc19yZXNwb25kX3RvX2NoYWxsZW5nZShvb2IpO1xuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9yeHJwYy5jIGIvZnMvYWZzL3J4cnBjLmNcbmluZGV4IGQ1Y2ZkMjRlODE1YmRkLi5kODI5MTY2NTdhM2RkZiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9yeHJwYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvcnhycGMuY1xuQEAgLTEyOCw4ICYjNDM7MTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcbiYjNDM7XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4mIzQzO1x0LyogRnV0dXJlIHdvcmsgaXRlbXMgc2hvdWxkIG5vdyBzZWUgLVx1MDAzZWxpdmUgaXMgZmFsc2UuICovXG4mIzQzO1xuIFx0a2VybmVsX2xpc3RlbihuZXQtXHUwMDNlc29ja2V0LCAwKTtcbiYjNDM7XG4mIzQzO1x0LyogTWFrZSBzdXJlIHdvcmsgaXRlbXMgYXJlIG5vIGxvbmdlciBydW5uaW5nLiAqL1xuIFx0Zmx1c2hfd29ya3F1ZXVlKGFmc19hc3luY19jYWxscyk7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlY2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7XG4gXG4gXHRpZiAobmV0LVx1MDAzZXNwYXJlX2luY29taW5nX2NhbGwpIHtcbiBcdFx0YWZzX3B1dF9jYWxsKG5ldC1cdTAwM2VzcGFyZV9pbmNvbWluZ19jYWxsKTtcbkBAIC0xNDMsNiAmIzQzOzE0OSw3IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFxuIFx0a2VybmVsX3NvY2tfc2h1dGRvd24obmV0LVx1MDAzZXNvY2tldCwgU0hVVF9SRFdSKTtcbiBcdGZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpO1xuJiM0MztcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXJ4X29vYl93b3JrKTtcbiBcdG5ldC1cdTAwM2Vzb2NrZXQtXHUwMDNlc2stXHUwMDNlc2tfdXNlcl9kYXRhID0gTlVMTDtcbiBcdHNvY2tfcmVsZWFzZShuZXQtXHUwMDNlc29ja2V0KTtcbiBcdGtleV9wdXQobmV0LVx1MDAzZWZzX2NtX3Rva2VuX2tleSk7XG5AQCAtOTg0LDUgJiM0Mzs5OTEsNiBAQCBzdGF0aWMgdm9pZCBhZnNfcnhfbm90aWZ5X29vYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvb2IpXG4ge1xuIFx0c3RydWN0IGFmc19uZXQgKm5ldCA9IHNrLVx1MDAzZXNrX3VzZXJfZGF0YTtcbiBcbi1cdHNjaGVkdWxlX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXJ4X29vYl93b3JrKTtcbiYjNDM7XHRpZiAoUkVBRF9PTkNFKG5ldC1cdTAwM2VsaXZlKSlcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoYWZzX3dxLCBcdTAwMjZuZXQtXHUwMDNlcnhfb29iX3dvcmspO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5pbmRleCA1ODAyZjZmNzg3MjNiYy4uY2U5NDZiMGEwM2UyYjMgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbkBAIC02NjksNyAmIzQzOzY2OSw5IEBAIGVudW0gcnhycGNfY2FsbF9ldmVudCB7XG4gZW51bSByeHJwY19jYWxsX3N0YXRlIHtcbiBcdFJYUlBDX0NBTExfVU5JTklUSUFMSVNFRCxcbiBcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk4sXHQvKiAtIGNsaWVudCB3YWl0aW5nIGZvciBjb25uZWN0aW9uIHRvIGJlY29tZSBhdmFpbGFibGUgKi9cbiYjNDM7XHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcdC8qIC0gY2xpZW50IGlzIGNvbm5lY3RlZCwgYnV0IGhhc24mIzM5O3Qgc2VudCBhbnl0aGluZyB5ZXQgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCxcdC8qIC0gY2xpZW50IHNlbmRpbmcgcmVxdWVzdCBwaGFzZSAqL1xuJiM0MztcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyxcdC8qIC0gY2xpZW50IGF3YWl0aW5nIEFDS3Mgb2YgcmVxdWVzdCAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFksXHQvKiAtIGNsaWVudCBhd2FpdGluZyByZXBseSAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSxcdC8qIC0gY2xpZW50IHJlY2VpdmluZyByZXBseSBwaGFzZSAqL1xuIFx0UlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0MsXHQvKiAtIHNlcnZpY2UgcHJlYWxsb2NhdGlvbiAqL1xuQEAgLTEzNzQsOSAmIzQzOzEzNzYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCByeHJwY19uZXQgKnJ4cnBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gfVxuIFxuIC8qXG4tICogb3V0X29mX2JhbmQuY1xuJiM0MzsgKiBvb2IuY1xuICAqL1xuLXZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0Mztib29sIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiB2b2lkIHJ4cnBjX2FkZF9wZW5kaW5nX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBza19idWZmICpza2IpO1xuIGludCByeHJwY19zZW5kbXNnX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbmluZGV4IGZlYzU5ZDkzMzhiOWZiLi4yMWJlOWM4NmQ3YTc0ZiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbkBAIC0xNzgsNyAmIzQzOzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSk7XG4mIzQzO1x0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0spO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLKTtcbkBAIC0yNDQsNiAmIzQzOzI0NCw4IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0fSB3aGlsZSAocmVxLm4gXHUwMDNjIGxpbWl0IFx1MDAyNlx1MDAyNiBiZWZvcmUoc2VxLCBzZW5kX3RvcCkpO1xuIFxuJiM0MztcdFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORClcbiYjNDM7XHRcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUKTtcbiBcdFx0aWYgKHR4Yi1cdTAwM2VmbGFncyBcdTAwMjYgUlhSUENfTEFTVF9QQUNLRVQpIHtcbiBcdFx0XHRyeHJwY19jbG9zZV90eF9waGFzZShjYWxsKTtcbiBcdFx0XHR0cSA9IE5VTEw7XG5AQCAtMjY3LDYgJiM0MzsyNjksNyBAQCB2b2lkIHJ4cnBjX3RyYW5zbWl0X3NvbWVfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgdW5zaWduZWQgaW50IGxpbWl0LFxuIFx0XHRmYWxsdGhyb3VnaDtcbiBcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4gXHRcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYyBiL25ldC9yeHJwYy9jYWxsX29iamVjdC5jXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcbkBAIC0xOCw3ICYjNDM7MTgsOSBAQFxuIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7XG4gXHRbUlhSUENfQ0FMTF9VTklOSVRJQUxJU0VEXVx0XHQ9IFwmIzM0O1VuaW5pdCAgXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk5dXHRcdD0gXCYjMzQ7Q2xXdENvbm5cJiMzNDssXG4mIzQzO1x0W1JYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EXVx0XHQ9IFwmIzM0O0NsUHJlU25kXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVF1cdD0gXCYjMzQ7Q2xTbmRSZXFcJiMzNDssXG4mIzQzO1x0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS11cdFx0PSBcJiMzNDtDbEF3dEFja1wmIzM0OyxcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWV1cdFx0PSBcJiMzNDtDbEF3dFJwbFwmIzM0OyxcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9SRUNWX1JFUExZXVx0XHQ9IFwmIzM0O0NsUmN2UnBsXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DXVx0XHQ9IFwmIzM0O1N2UHJlYWxjXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcbmluZGV4IDliNzU3Nzk4ZGVkZGI4Li40ODUxOWYwZGUxODUzOSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuY1xuQEAgLTQ0OSw3ICYjNDM7NDQ5LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfYWN0aXZhdGVfb25lX2NoYW5uZWwoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHR0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7XG4gXHRjYWxsLVx1MDAzZXR4X2xhc3Rfc2VudCA9IGt0aW1lX2dldF9yZWFsKCk7XG4gXHRyeHJwY19zdGFydF9jYWxsX3RpbWVyKGNhbGwpO1xuLVx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUKTtcbiYjNDM7XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCk7XG4gXHR3YWtlX3VwKFx1MDAyNmNhbGwtXHUwMDNld2FpdHEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuaW5kZXggYzk2Y2E2MTViNzg3YzYuLjYxMWM3OTBiYzZkMGNlIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuQEAgLTQzNiw3ICYjNDM7NDM2LDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHRzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7XG4gXHRzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XG4tXHRib29sIHJlc3BvbmQgPSBmYWxzZTtcbiYjNDM7XHRib29sIHJlc3BvbmQgPSBmYWxzZSwgcXVldWVkID0gZmFsc2U7XG4gXG4gXHRzcC1cdTAwM2VjaGFsbC5jb25uID1cbiBcdFx0cnhycGNfZ2V0X2Nvbm5lY3Rpb24oY29ubiwgcnhycGNfY29ubl9nZXRfY2hhbGxlbmdlX2lucHV0KTtcbkBAIC00NzIsOCAmIzQzOzQ3MiwxMyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdH1cbiBcbiBcdGlmIChjYWxsKVxuLVx0XHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuJiM0MztcdFx0cXVldWVkID0gcnhycGNfbm90aWZ5X3NvY2tldF9vb2IoY2FsbCwgc2tiKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGlmIChjYWxsIFx1MDAyNlx1MDAyNiAhcXVldWVkKSB7XG4mIzQzO1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xuJiM0MztcdFx0c3AtXHUwMDNlY2hhbGwuY29ubiA9IE5VTEw7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKCFjYWxsKVxuIFx0XHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuY1xuaW5kZXggY2U3NjE0NjZiMDJkNjEuLjczY2FmZTZiZmE5ZjU0IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9pbnB1dC5jXG5AQCAtMTgxLDcgJiM0MzsxODEsOCBAQCB2b2lkIHJ4cnBjX2Nvbmdlc3Rpb25fZGVncmFkZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcdGlmIChjYWxsLVx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfU0xPV19TVEFSVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBjYWxsLVx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfQ09OR0VTVF9BVk9JREFOQ0UpXG4gXHRcdHJldHVybjtcbi1cdGlmIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkgPT0gUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFkpXG4mIzQzO1x0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHxcbiYjNDM7XHQgICAgX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHQgPSBuc190b19rdGltZShjYWxsLVx1MDAzZXNydHRfdXMgKiAoTlNFQ19QRVJfVVNFQyAvIDgpKTtcbkBAIC0yMzYsNiAmIzQzOzIzNyw5IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLFxuIFx0XHRjYWxsLVx1MDAzZWFja3NfbG93ZXN0X25hayA9IHRvO1xuIFx0fVxuIFxuJiM0MztcdGlmIChhZnRlcihzZXEsIHRvKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHQvKiBXZSBtYXkgaGF2ZSBhIGxlZnQgb3ZlciBmdWxseS1jb25zdW1lZCBidWZmZXIgYXQgdGhlIGZyb250IHRoYXQgd2VcbiBcdCAqIGNvdWxkbiYjMzk7dCBkcm9wIGJlZm9yZSAocm90YXRlX2FuZF9rZWVwIGJlbG93KS5cbiBcdCAqL1xuQEAgLTI0Nyw3ICYjNDM7MjUxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdHRxID0gY2FsbC1cdTAwM2V0eF9xdWV1ZTtcbiBcdH1cbiBcbi1cdGRvIHtcbiYjNDM7XHR3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKSB7XG4gXHRcdHVuc2lnbmVkIGludCBpeCA9IHNlcSAtIGNhbGwtXHUwMDNldHhfcWJhc2U7XG4gXG4gXHRcdF9kZWJ1ZyhcJiMzNDt0cT0leCBzZXE9JXggaT0lZCBmPSV4XCYjMzQ7LCB0cS1cdTAwM2VxYmFzZSwgc2VxLCBpeCwgdHEtXHUwMDNlYnVmc1tpeF0tXHUwMDNlZmxhZ3MpO1xuQEAgLTMxNyw4ICYjNDM7MzIxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4gXHRcdH1cbi1cbi1cdH0gd2hpbGUgKGJlZm9yZV9lcShzZXEsIHRvKSk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHRyYWNlKVxuIFx0XHR0cmFjZV9yeHJwY19yYWNrX3VwZGF0ZShjYWxsLCBzdW1tYXJ5KTtcbkBAIC0zNTYsNiAmIzQzOzM1OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2VuZF90eF9waGFzZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgYm9vbCByZXBseV9iZWd1bixcbiBcbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XG4gXHRcdGlmIChyZXBseV9iZWd1bikge1xuIFx0XHRcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFkpO1xuQEAgLTM5Miw2ICYjNDM7Mzk2LDE0IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JlY2VpdmluZ19yZXBseShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcdFx0dHJhY2VfcnhycGNfdGltZXJfY2FuKGNhbGwsIHJ4cnBjX3RpbWVyX3RyYWNlX2RlbGF5ZWRfYWNrKTtcbiBcdH1cbiBcbiYjNDM7XHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSYjMzk7dmUgZ290IHRoZSByZXF1ZXN0XG4mIzQzO1x0ICogcXVldWVkIG9yIHRyYW5zbWl0dGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9FWFBPU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoIXRlc3RfYml0KFJYUlBDX0NBTExfVFhfTEFTVCwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbiBcdFx0aWYgKCFyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIHRvcCwgXHUwMDI2c3VtbWFyeSkpIHtcbiBcdFx0XHRyeHJwY19wcm90b19hYm9ydChjYWxsLCB0b3AsIHJ4cnBjX2Vwcm90b19lYXJseV9yZXBseSk7XG5AQCAtNjk0LDYgJiM0Mzs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuJiM0MztcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiBcdFx0LyogUmVjZWl2ZWQgZGF0YSBpbXBsaWNpdGx5IEFDS3MgYWxsIG9mIHRoZSByZXF1ZXN0XG4gXHRcdCAqIHBhY2tldHMgd2Ugc2VudCB3aGVuIHdlJiMzOTtyZSBhY3RpbmcgYXMgYSBjbGllbnQuXG5AQCAtMTE1NCwxMCAmIzQzOzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKGhhcmRfYWNrICYjNDM7IDEgPT0gMClcbiBcdFx0cmV0dXJuIHJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIDAsIHJ4cnBjX2Vwcm90b19hY2tyX3plcm8pO1xuIFxuLVx0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSBvciBoYXZlIGp1c3QgYmVlbiB0cmFuc21pdHRpbmcuICovXG4mIzQzO1x0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSB0cmFuc21pdHRpbmcgb3IgYXJlIHdhaXRpbmcgZm9yXG4mIzQzO1x0ICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJiMzOTt2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLlxuJiM0MztcdCAqL1xuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuIFx0XHRicmVhaztcbkBAIC0xMjE1LDcgJiM0MzsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9O1xuIFxuLVx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cdTAwM2V0eF90b3AsIFx1MDAyNnN1bW1hcnkpKVxuJiM0MztcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxuJiM0MztcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIGNhbGwtXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFx1MDAyNnN1bW1hcnkpKVxuIFx0XHRyeHJwY19lbmRfdHhfcGhhc2UoY2FsbCwgZmFsc2UsIHJ4cnBjX2Vwcm90b191bmV4cGVjdGVkX2Fja2FsbCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9vb2IuYyBiL25ldC9yeHJwYy9vb2IuY1xuaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvb29iLmNcbkBAIC0zMiwxMSAmIzQzOzMyLDEyIEBAIHN0cnVjdCByeHJwY19vb2JfcGFyYW1zIHtcbiAgKiBQb3N0IGFuIG91dC1vZi1iYW5kIG1lc3NhZ2UgZm9yIGF0dGVudGlvbiBieSB0aGUgc29ja2V0IG9yIGtlcm5lbCBzZXJ2aWNlXG4gICogYXNzb2NpYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGNhbGwuXG4gICovXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7Ym9vbCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7XG4gXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4mIzQzO1x0Ym9vbCBxdWV1ZWQgPSBmYWxzZTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbkBAIC00OSw2ICYjNDM7NTAsNyBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdHNrYi1cdTAwM2Vza2JfbXN0YW1wX25zID0gcngtXHUwMDNlb29iX2lkX2NvdW50ZXImIzQzOyYjNDM7O1xuIFx0XHRcdHJ4cnBjX2dldF9za2Ioc2tiLCByeHJwY19za2JfZ2V0X3Bvc3Rfb29iKTtcbiBcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEsIHNrYik7XG4mIzQzO1x0XHRcdHF1ZXVlZCA9IHRydWU7XG4gXG4gXHRcdFx0dHJhY2VfcnhycGNfbm90aWZ5X3NvY2tldChjYWxsLVx1MDAzZWRlYnVnX2lkLCBzcC1cdTAwM2VoZHIuc2VyaWFsKTtcbiBcdFx0XHRpZiAocngtXHUwMDNlYXBwX29wcylcbkBAIC01NiwxMSAmIzQzOzU4LDEyIEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfbG9jayk7XG4tXHRcdGlmICghcngtXHUwMDNlYXBwX29wcyBcdTAwMjZcdTAwMjYgIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcbiYjNDM7XHRcdGlmIChxdWV1ZWQgXHUwMDI2XHUwMDI2ICFyeC1cdTAwM2VhcHBfb3BzIFx1MDAyNlx1MDAyNiAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKVxuIFx0XHRcdHNrLVx1MDAzZXNrX2RhdGFfcmVhZHkoc2spO1xuIFx0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0cmV0dXJuIHF1ZXVlZDtcbiB9XG4gXG4gLypcbkBAIC0yMTAsNiAmIzQzOzIxMywxMSBAQCBzdGF0aWMgaW50IHJ4cnBjX3Jlc3BvbmRfdG9fb29iKHN0cnVjdCByeHJwY19zb2NrICpyeCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0c3dpdGNoIChza2ItXHUwMDNlbWFyaykge1xuJiM0MztcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcbiYjNDM7XHRcdHJ4cnBjX3B1dF9jb25uZWN0aW9uKHNwLVx1MDAzZWNoYWxsLmNvbm4sIHJ4cnBjX2Nvbm5fcHV0X29vYik7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4gXHRyeHJwY19mcmVlX3NrYihza2IsIHJ4cnBjX3NrYl9wdXRfb29iKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9yZWN2bXNnLmMgYi9uZXQvcnhycGMvcmVjdm1zZy5jXG5pbmRleCA4MjYxNGNiZGI2MGY1ZS4uZWZjYmE0YjJlNzRmMGMgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvcmVjdm1zZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcmVjdm1zZy5jXG5AQCAtMjcsOCAmIzQzOzI3LDYgQEAgdm9pZCByeHJwY19ub3RpZnlfc29ja2V0KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0X2VudGVyKFwmIzM0OyVkXCYjMzQ7LCBjYWxsLVx1MDAzZWRlYnVnX2lkKTtcbiBcbi1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZjYWxsLVx1MDAzZXJlY3Ztc2dfbGluaykpXG4tXHRcdHJldHVybjtcbiBcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9ub3RpZnlfcmVsZWFzZWQpO1xuIFx0XHRyZXR1cm47XG5AQCAtNDM4LDcgJiM0Mzs0MzYsOCBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRcdHJldHVybiAtRUFHQUlOO1xuIFx0fVxuIFxuLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2cngtXHUwMDNlcmVjdm1zZ19xKSkge1xuJiM0MztcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzcyhcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEpKSB7XG4gXHRcdHJldCA9IC1FV09VTERCTE9DSztcbiBcdFx0aWYgKHRpbWVvID09IDApIHtcbiBcdFx0XHRjYWxsID0gTlVMTDtcbkBAIC00NzEsNyAmIzQzOzQ3MCw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbiBcdFx0cmVsZWFzZV9zb2NrKFx1MDAyNnJ4LVx1MDAzZXNrKTtcbiBcdFx0aWYgKHJldCA9PSAtRUFHQUlOKVxuIFx0XHRcdGdvdG8gdHJ5X2FnYWluO1xuLVx0XHRnb3RvIGVycm9yX25vX2NhbGw7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3RyYWNlO1xuIFx0fVxuIFxuIFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJiMzOTtyZSBub3QganVzdCBwZWVraW5nLiAgSWYgd2VcbkBAIC01MzAsOCAmIzQzOzUyOSw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbiBcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNhbGwtXHUwMDNldXNlcl9tdXRleCk7XG4tXHRcdGlmICghKGZsYWdzIFx1MDAyNiBNU0dfUEVFSykpXG4tXHRcdFx0cnhycGNfcHV0X2NhbGwoY2FsbCwgcnhycGNfY2FsbF9wdXRfcmVjdm1zZyk7XG4mIzQzO1x0XHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcbiBcdFx0Z290byB0cnlfYWdhaW47XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGMzNWRlNGZkNzVlMzExLi5lZDJjOWE1MTAwNWFkZSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbkBAIC0zNjYsNyAmIzQzOzM2Niw4IEBAIHN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCxcbiBcdGlmIChzdGF0ZSBcdTAwM2U9IFJYUlBDX0NBTExfQ09NUExFVEUpXG4gXHRcdGdvdG8gbWF5YmVfZXJyb3I7XG4gXHRyZXQgPSAtRVBST1RPO1xuLVx0aWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZKSB7XG4gXHRcdC8qIFJlcXVlc3QgcGhhc2UgY29tcGxldGUgZm9yIHRoaXMgY2xpZW50IGNhbGwgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7QUZfUlhSUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19ub3RpZnlfc29ja2V0X29vYiYjMzQ7LAogICAgJiMzNDtyeHJwY19wb3N0X2NoYWxsZW5nZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZXNwb25kX3RvX29vYiYjMzQ7LAogICAgJiMzNDthZnNfcnhfbm90aWZ5X29vYiYjMzQ7LAogICAgJiMzNDthZnNfcHJvY2Vzc19vb2JfcXVldWUmIzM0OywKICAgICYjMzQ7YWZzX2Nsb3NlX3NvY2tldCYjMzQ7LAogICAgJiMzNDtyeHJwY19jbG9zZV90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19lbmRfdHhfcGhhc2UmIzM0OywKICAgICYjMzQ7cnhycGNfcmVjZWl2aW5nX3JlcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2U1NTU1NmQyMTc4MzUxOTVmMmNiOWRkYjBhYzk1NDNkMWNkZjRjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYWZzL2NtX3NlY3VyaXR5LmMgYi9mcy9hZnMvY21fc2VjdXJpdHkuYwppbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9jbV9zZWN1cml0eS5jCkBAIC0xMDEsNyAmIzQzOzEwMSw4IEBAIHZvaWQgYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3Qgc2tfYnVmZiAqb29iOwogCWVudW0gcnhycGNfb29iX3R5cGUgdHlwZTsKIAotCXdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC0mZ3Q7c29ja2V0LCAmYW1wO3R5cGUpKSkgewomIzQzOwl3aGlsZSAoUkVBRF9PTkNFKG5ldC0mZ3Q7bGl2ZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtJmd0O3NvY2tldCwgJmFtcDt0eXBlKSkpIHsKIAkJc3dpdGNoICh0eXBlKSB7CiAJCWNhc2UgUlhSUENfT09CX0NIQUxMRU5HRToKIAkJCWFmc19yZXNwb25kX3RvX2NoYWxsZW5nZShvb2IpOwpkaWZmIC0tZ2l0IGEvZnMvYWZzL3J4cnBjLmMgYi9mcy9hZnMvcnhycGMuYwppbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9yeHJwYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9yeHJwYy5jCkBAIC0xMjgsOCAmIzQzOzEyOCwxNCBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldCkKIAlfZW50ZXIoJiMzNDsmIzM0Oyk7CiAKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7bmV0LSZndDtjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTsKJiM0MzsJY2FuY2VsX3dvcmtfc3luYygmYW1wO25ldC0mZ3Q7cnhfb29iX3dvcmspOwomIzQzOwkvKiBGdXR1cmUgd29yayBpdGVtcyBzaG91bGQgbm93IHNlZSAtJmd0O2xpdmUgaXMgZmFsc2UuICovCiYjNDM7CiAJa2VybmVsX2xpc3RlbihuZXQtJmd0O3NvY2tldCwgMCk7CiYjNDM7CiYjNDM7CS8qIE1ha2Ugc3VyZSB3b3JrIGl0ZW1zIGFyZSBubyBsb25nZXIgcnVubmluZy4gKi8KIAlmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTsKJiM0MzsJY2FuY2VsX3dvcmtfc3luYygmYW1wO25ldC0mZ3Q7Y2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7CiAKIAlpZiAobmV0LSZndDtzcGFyZV9pbmNvbWluZ19jYWxsKSB7CiAJCWFmc19wdXRfY2FsbChuZXQtJmd0O3NwYXJlX2luY29taW5nX2NhbGwpOwpAQCAtMTQzLDYgJiM0MzsxNDksNyBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldCkKIAogCWtlcm5lbF9zb2NrX3NodXRkb3duKG5ldC0mZ3Q7c29ja2V0LCBTSFVUX1JEV1IpOwogCWZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7bmV0LSZndDtyeF9vb2Jfd29yayk7CiAJbmV0LSZndDtzb2NrZXQtJmd0O3NrLSZndDtza191c2VyX2RhdGEgPSBOVUxMOwogCXNvY2tfcmVsZWFzZShuZXQtJmd0O3NvY2tldCk7CiAJa2V5X3B1dChuZXQtJmd0O2ZzX2NtX3Rva2VuX2tleSk7CkBAIC05ODQsNSAmIzQzOzk5MSw2IEBAIHN0YXRpYyB2b2lkIGFmc19yeF9ub3RpZnlfb29iKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9vYikKIHsKIAlzdHJ1Y3QgYWZzX25ldCAqbmV0ID0gc2stJmd0O3NrX3VzZXJfZGF0YTsKIAotCXNjaGVkdWxlX3dvcmsoJmFtcDtuZXQtJmd0O3J4X29vYl93b3JrKTsKJiM0MzsJaWYgKFJFQURfT05DRShuZXQtJmd0O2xpdmUpKQomIzQzOwkJcXVldWVfd29yayhhZnNfd3EsICZhbXA7bmV0LSZndDtyeF9vb2Jfd29yayk7CiB9CmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oCmluZGV4IDU4MDJmNmY3ODcyM2JjLi5jZTk0NmIwYTAzZTJiMyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKQEAgLTY2OSw3ICYjNDM7NjY5LDkgQEAgZW51bSByeHJwY19jYWxsX2V2ZW50IHsKIGVudW0gcnhycGNfY2FsbF9zdGF0ZSB7CiAJUlhSUENfQ0FMTF9VTklOSVRJQUxJU0VELAogCVJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk4sCS8qIC0gY2xpZW50IHdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZSAqLwomIzQzOwlSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCwJLyogLSBjbGllbnQgaXMgY29ubmVjdGVkLCBidXQgaGFzbiYjMzk7dCBzZW50IGFueXRoaW5nIHlldCAqLwogCVJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCwJLyogLSBjbGllbnQgc2VuZGluZyByZXF1ZXN0IHBoYXNlICovCiYjNDM7CVJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSywJLyogLSBjbGllbnQgYXdhaXRpbmcgQUNLcyBvZiByZXF1ZXN0ICovCiAJUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFksCS8qIC0gY2xpZW50IGF3YWl0aW5nIHJlcGx5ICovCiAJUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSwJLyogLSBjbGllbnQgcmVjZWl2aW5nIHJlcGx5IHBoYXNlICovCiAJUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0MsCS8qIC0gc2VydmljZSBwcmVhbGxvY2F0aW9uICovCkBAIC0xMzc0LDkgJiM0MzsxMzc2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcnhycGNfbmV0ICpyeHJwY19uZXQoc3RydWN0IG5ldCAqbmV0KQogfQogCiAvKgotICogb3V0X29mX2JhbmQuYwomIzQzOyAqIG9vYi5jCiAgKi8KLXZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpOwomIzQzO2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpOwogdm9pZCByeHJwY19hZGRfcGVuZGluZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIGludCByeHJwY19zZW5kbXNnX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7CiAKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmMgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jCmluZGV4IGZlYzU5ZDkzMzhiOWZiLi4yMWJlOWM4NmQ3YTc0ZiAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jCkBAIC0xNzgsNyAmIzQzOzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCiAJc3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHsKIAljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDoKLQkJcnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFkpOwomIzQzOwkJcnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLKTsKIAkJYnJlYWs7CiAJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOgogCQlyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0spOwpAQCAtMjQ0LDYgJiM0MzsyNDQsOCBAQCBzdGF0aWMgdm9pZCByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaQogCQkJCWJyZWFrOwogCQl9IHdoaWxlIChyZXEubiAmbHQ7IGxpbWl0ICZhbXA7JmFtcDsgYmVmb3JlKHNlcSwgc2VuZF90b3ApKTsKIAomIzQzOwkJaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCkKJiM0MzsJCQlyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpOwogCQlpZiAodHhiLSZndDtmbGFncyAmYW1wOyBSWFJQQ19MQVNUX1BBQ0tFVCkgewogCQkJcnhycGNfY2xvc2VfdHhfcGhhc2UoY2FsbCk7CiAJCQl0cSA9IE5VTEw7CkBAIC0yNjcsNiAmIzQzOzI2OSw3IEBAIHZvaWQgcnhycGNfdHJhbnNtaXRfc29tZV9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaXQsCiAJCWZhbGx0aHJvdWdoOwogCiAJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOgomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOgogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgogCQlpZiAoIXJ4cnBjX3R4X3dpbmRvd19zcGFjZShjYWxsKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX29iamVjdC5jIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmMKaW5kZXggZmNiOWQzOGJiNTIxNGEuLjgxN2VkOWFjYjkxZTYxIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY2FsbF9vYmplY3QuYwpAQCAtMTgsNyAmIzQzOzE4LDkgQEAKIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7CiAJW1JYUlBDX0NBTExfVU5JTklUSUFMSVNFRF0JCT0gJiMzNDtVbmluaXQgICYjMzQ7LAogCVtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OXQkJPSAmIzM0O0NsV3RDb25uJiMzNDssCiYjNDM7CVtSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORF0JCT0gJiMzNDtDbFByZVNuZCYjMzQ7LAogCVtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdCT0gJiMzNDtDbFNuZFJlcSYjMzQ7LAomIzQzOwlbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLXQkJPSAmIzM0O0NsQXd0QWNrJiMzNDssCiAJW1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXQkJPSAmIzM0O0NsQXd0UnBsJiMzNDssCiAJW1JYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFldCQk9ICYjMzQ7Q2xSY3ZScGwmIzM0OywKIAlbUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0NdCQk9ICYjMzQ7U3ZQcmVhbGMmIzM0OywKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmMKaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NAotLS0gYS9uZXQvcnhycGMvY29ubl9jbGllbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuYwpAQCAtNDQ5LDcgJiM0Mzs0NDksNyBAQCBzdGF0aWMgdm9pZCByeHJwY19hY3RpdmF0ZV9vbmVfY2hhbm5lbChzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubiwKIAl0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7CiAJY2FsbC0mZ3Q7dHhfbGFzdF9zZW50ID0ga3RpbWVfZ2V0X3JlYWwoKTsKIAlyeHJwY19zdGFydF9jYWxsX3RpbWVyKGNhbGwpOwotCXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7CiYjNDM7CXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKTsKIAl3YWtlX3VwKCZhbXA7Y2FsbC0mZ3Q7d2FpdHEpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuYwppbmRleCBjOTZjYTYxNWI3ODdjNi4uNjExYzc5MGJjNmQwY2UgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9jb25uX2V2ZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuYwpAQCAtNDM2LDcgJiM0Mzs0MzYsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubiwKIAlzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7CiAJc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwgPSBOVUxMOwogCXN0cnVjdCByeHJwY19zb2NrICpyeDsKLQlib29sIHJlc3BvbmQgPSBmYWxzZTsKJiM0MzsJYm9vbCByZXNwb25kID0gZmFsc2UsIHF1ZXVlZCA9IGZhbHNlOwogCiAJc3AtJmd0O2NoYWxsLmNvbm4gPQogCQlyeHJwY19nZXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX2dldF9jaGFsbGVuZ2VfaW5wdXQpOwpAQCAtNDcyLDggJiM0Mzs0NzIsMTMgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sCiAJfQogCiAJaWYgKGNhbGwpCi0JCXJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKGNhbGwsIHNrYik7CiYjNDM7CQlxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpOwogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlpZiAoY2FsbCAmYW1wOyZhbXA7ICFxdWV1ZWQpIHsKJiM0MzsJCXJ4cnBjX3B1dF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fcHV0X2NoYWxsZW5nZV9pbnB1dCk7CiYjNDM7CQlzcC0mZ3Q7Y2hhbGwuY29ubiA9IE5VTEw7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmICghY2FsbCkKIAkJcnhycGNfcG9zdF9wYWNrZXRfdG9fY29ubihjb25uLCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuYwppbmRleCBjZTc2MTQ2NmIwMmQ2MS4uNzNjYWZlNmJmYTlmNTQgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9pbnB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9pbnB1dC5jCkBAIC0xODEsNyAmIzQzOzE4MSw4IEBAIHZvaWQgcnhycGNfY29uZ2VzdGlvbl9kZWdyYWRlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCWlmIChjYWxsLSZndDtjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX1NMT1dfU1RBUlQgJmFtcDsmYW1wOwogCSAgICBjYWxsLSZndDtjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX0NPTkdFU1RfQVZPSURBTkNFKQogCQlyZXR1cm47Ci0JaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSkKJiM0MzsJaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHwKJiM0MzsJICAgIF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSkKIAkJcmV0dXJuOwogCiAJcnR0ID0gbnNfdG9fa3RpbWUoY2FsbC0mZ3Q7c3J0dF91cyAqIChOU0VDX1BFUl9VU0VDIC8gOCkpOwpAQCAtMjM2LDYgJiM0MzsyMzcsOSBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0bywKIAkJY2FsbC0mZ3Q7YWNrc19sb3dlc3RfbmFrID0gdG87CiAJfQogCiYjNDM7CWlmIChhZnRlcihzZXEsIHRvKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAkvKiBXZSBtYXkgaGF2ZSBhIGxlZnQgb3ZlciBmdWxseS1jb25zdW1lZCBidWZmZXIgYXQgdGhlIGZyb250IHRoYXQgd2UKIAkgKiBjb3VsZG4mIzM5O3QgZHJvcCBiZWZvcmUgKHJvdGF0ZV9hbmRfa2VlcCBiZWxvdykuCiAJICovCkBAIC0yNDcsNyAmIzQzOzI1MSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLAogCQl0cSA9IGNhbGwtJmd0O3R4X3F1ZXVlOwogCX0KIAotCWRvIHsKJiM0MzsJd2hpbGUgKGJlZm9yZV9lcShzZXEsIHRvKSkgewogCQl1bnNpZ25lZCBpbnQgaXggPSBzZXEgLSBjYWxsLSZndDt0eF9xYmFzZTsKIAogCQlfZGVidWcoJiMzNDt0cT0leCBzZXE9JXggaT0lZCBmPSV4JiMzNDssIHRxLSZndDtxYmFzZSwgc2VxLCBpeCwgdHEtJmd0O2J1ZnNbaXhdLSZndDtmbGFncyk7CkBAIC0zMTcsOCAmIzQzOzMyMSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLAogCQkJCWJyZWFrOwogCQkJfQogCQl9Ci0KLQl9IHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpOwomIzQzOwl9CiAKIAlpZiAodHJhY2UpCiAJCXRyYWNlX3J4cnBjX3JhY2tfdXBkYXRlKGNhbGwsIHN1bW1hcnkpOwpAQCAtMzU2LDYgJiM0MzszNTksNyBAQCBzdGF0aWMgdm9pZCByeHJwY19lbmRfdHhfcGhhc2Uoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIGJvb2wgcmVwbHlfYmVndW4sCiAKIAlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzoKIAljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOgogCQlpZiAocmVwbHlfYmVndW4pIHsKIAkJCXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFkpOwpAQCAtMzkyLDYgJiM0MzszOTYsMTQgQEAgc3RhdGljIGJvb2wgcnhycGNfcmVjZWl2aW5nX3JlcGx5KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCQl0cmFjZV9yeHJwY190aW1lcl9jYW4oY2FsbCwgcnhycGNfdGltZXJfdHJhY2VfZGVsYXllZF9hY2spOwogCX0KIAomIzQzOwkvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSYjMzk7dmUgZ290IHRoZSByZXF1ZXN0CiYjNDM7CSAqIHF1ZXVlZCBvciB0cmFuc21pdHRlZC4KJiM0MzsJICovCiYjNDM7CWlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9FWFBPU0VELCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewomIzQzOwkJcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiAJaWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX0xBU1QsICZhbXA7Y2FsbC0mZ3Q7ZmxhZ3MpKSB7CiAJCWlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsICZhbXA7c3VtbWFyeSkpIHsKIAkJCXJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIHRvcCwgcnhycGNfZXByb3RvX2Vhcmx5X3JlcGx5KTsKQEAgLTY5NCw2ICYjNDM7NzA2LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCXN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7CiAJY2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOgogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6CiAJCS8qIFJlY2VpdmVkIGRhdGEgaW1wbGljaXRseSBBQ0tzIGFsbCBvZiB0aGUgcmVxdWVzdAogCQkgKiBwYWNrZXRzIHdlIHNlbnQgd2hlbiB3ZSYjMzk7cmUgYWN0aW5nIGFzIGEgY2xpZW50LgpAQCAtMTE1NCwxMCAmIzQzOzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChoYXJkX2FjayAmIzQzOyAxID09IDApCiAJCXJldHVybiByeHJwY19wcm90b19hYm9ydChjYWxsLCAwLCByeHJwY19lcHJvdG9fYWNrcl96ZXJvKTsKIAotCS8qIElnbm9yZSBBQ0tzIHVubGVzcyB3ZSBhcmUgb3IgaGF2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLiAqLwomIzQzOwkvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIHRyYW5zbWl0dGluZyBvciBhcmUgd2FpdGluZyBmb3IKJiM0MzsJICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJiMzOTt2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLgomIzQzOwkgKi8KIAlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgotCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOgogCWNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWToKIAljYXNlIFJYUlBDX0NBTExfU0VSVkVSX0FXQUlUX0FDSzoKIAkJYnJlYWs7CkBAIC0xMjE1LDcgJiM0MzsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9OwogCi0JaWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC0mZ3Q7dHhfdG9wLCAmYW1wO3N1bW1hcnkpKQomIzQzOwlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDoKJiM0MzsJY2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWToKJiM0MzsJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0s6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCBjYWxsLSZndDt0eF90cmFuc21pdHRlZCwgJmFtcDtzdW1tYXJ5KSkKIAkJcnhycGNfZW5kX3R4X3BoYXNlKGNhbGwsIGZhbHNlLCByeHJwY19lcHJvdG9fdW5leHBlY3RlZF9hY2thbGwpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvb29iLmMgYi9uZXQvcnhycGMvb29iLmMKaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvb29iLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL29vYi5jCkBAIC0zMiwxMSAmIzQzOzMyLDEyIEBAIHN0cnVjdCByeHJwY19vb2JfcGFyYW1zIHsKICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2UKICAqIGFzc29jaWF0ZWQgd2l0aCBhIHJlZmVyZW5jZSBjYWxsLgogICovCi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHJ4cnBjX3NrYl9wcml2ICpzcCA9IHJ4cnBjX3NrYihza2IpOwogCXN0cnVjdCByeHJwY19zb2NrICpyeDsKIAlzdHJ1Y3Qgc29jayAqc2s7CiYjNDM7CWJvb2wgcXVldWVkID0gZmFsc2U7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAKQEAgLTQ5LDYgJiM0Mzs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlza2ItJmd0O3NrYl9tc3RhbXBfbnMgPSByeC0mZ3Q7b29iX2lkX2NvdW50ZXImIzQzOyYjNDM7OwogCQkJcnhycGNfZ2V0X3NrYihza2IsIHJ4cnBjX3NrYl9nZXRfcG9zdF9vb2IpOwogCQkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtyeC0mZ3Q7cmVjdm1zZ19vb2JxLCBza2IpOwomIzQzOwkJCXF1ZXVlZCA9IHRydWU7CiAKIAkJCXRyYWNlX3J4cnBjX25vdGlmeV9zb2NrZXQoY2FsbC0mZ3Q7ZGVidWdfaWQsIHNwLSZndDtoZHIuc2VyaWFsKTsKIAkJCWlmIChyeC0mZ3Q7YXBwX29wcykKQEAgLTU2LDExICYjNDM7NTgsMTIgQEAgdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJfQogCiAJCXNwaW5fdW5sb2NrX2lycSgmYW1wO3J4LSZndDtyZWN2bXNnX2xvY2spOwotCQlpZiAoIXJ4LSZndDthcHBfb3BzICZhbXA7JmFtcDsgIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkKJiM0MzsJCWlmIChxdWV1ZWQgJmFtcDsmYW1wOyAhcngtJmd0O2FwcF9vcHMgJmFtcDsmYW1wOyAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKQogCQkJc2stJmd0O3NrX2RhdGFfcmVhZHkoc2spOwogCX0KIAogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlyZXR1cm4gcXVldWVkOwogfQogCiAvKgpAQCAtMjEwLDYgJiM0MzsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlzd2l0Y2ggKHNrYi0mZ3Q7bWFyaykgewomIzQzOwljYXNlIFJYUlBDX09PQl9DSEFMTEVOR0U6CiYjNDM7CQlyeHJwY19wdXRfY29ubmVjdGlvbihzcC0mZ3Q7Y2hhbGwuY29ubiwgcnhycGNfY29ubl9wdXRfb29iKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiAJcnhycGNfZnJlZV9za2Ioc2tiLCByeHJwY19za2JfcHV0X29vYik7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9yZWN2bXNnLmMgYi9uZXQvcnhycGMvcmVjdm1zZy5jCmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL3JlY3Ztc2cuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcmVjdm1zZy5jCkBAIC0yNyw4ICYjNDM7MjcsNiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpCiAKIAlfZW50ZXIoJiMzNDslZCYjMzQ7LCBjYWxsLSZndDtkZWJ1Z19pZCk7CiAKLQlpZiAoIWxpc3RfZW1wdHkoJmFtcDtjYWxsLSZndDtyZWN2bXNnX2xpbmspKQotCQlyZXR1cm47CiAJaWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsICZhbXA7Y2FsbC0mZ3Q7ZmxhZ3MpKSB7CiAJCXJ4cnBjX3NlZV9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfc2VlX25vdGlmeV9yZWxlYXNlZCk7CiAJCXJldHVybjsKQEAgLTQzOCw3ICYjNDM7NDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLAogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKLQlpZiAobGlzdF9lbXB0eSgmYW1wO3J4LSZndDtyZWN2bXNnX3EpKSB7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7cngtJmd0O3JlY3Ztc2dfcSkgJmFtcDsmYW1wOwomIzQzOwkgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZhbXA7cngtJmd0O3JlY3Ztc2dfb29icSkpIHsKIAkJcmV0ID0gLUVXT1VMREJMT0NLOwogCQlpZiAodGltZW8gPT0gMCkgewogCQkJY2FsbCA9IE5VTEw7CkBAIC00NzEsNyAmIzQzOzQ3MCw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbiwKIAkJcmVsZWFzZV9zb2NrKCZhbXA7cngtJmd0O3NrKTsKIAkJaWYgKHJldCA9PSAtRUFHQUlOKQogCQkJZ290byB0cnlfYWdhaW47Ci0JCWdvdG8gZXJyb3Jfbm9fY2FsbDsKJiM0MzsJCWdvdG8gZXJyb3JfdHJhY2U7CiAJfQogCiAJLyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJiMzOTtyZSBub3QganVzdCBwZWVraW5nLiAgSWYgd2UKQEAgLTUzMCw4ICYjNDM7NTI5LDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLAogCWlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewogCQlyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2FsbC0mZ3Q7dXNlcl9tdXRleCk7Ci0JCWlmICghKGZsYWdzICZhbXA7IE1TR19QRUVLKSkKLQkJCXJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpOwomIzQzOwkJcnhycGNfcHV0X2NhbGwoY2FsbCwgcnhycGNfY2FsbF9wdXRfcmVjdm1zZyk7CiAJCWdvdG8gdHJ5X2FnYWluOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKaW5kZXggYzM1ZGU0ZmQ3NWUzMTEuLmVkMmM5YTUxMDA1YWRlIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKQEAgLTM2Niw3ICYjNDM7MzY2LDggQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LAogCWlmIChzdGF0ZSAmZ3Q7PSBSWFJQQ19DQUxMX0NPTVBMRVRFKQogCQlnb3RvIG1heWJlX2Vycm9yOwogCXJldCA9IC1FUFJPVE87Ci0JaWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCAmYW1wOyZhbXA7CiYjNDM7CWlmIChzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCAmYW1wOyZhbXA7CiYjNDM7CSAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QgJmFtcDsmYW1wOwogCSAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCAmYW1wOyZhbXA7CiAJICAgIHN0YXRlICE9IFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFkpIHsKIAkJLyogUmVxdWVzdCBwaGFzZSBjb21wbGV0ZSBmb3IgdGhpcyBjbGllbnQgY2FsbCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTkxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBBRlMvUlhSUEMgU3Vic3lzdGVtcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYm90aCB0aGUgQUZTIGZpbGVzeXN0ZW0gY29kZSBhbmQgdGhlIFJYUlBDIG5ldHdvcmsgcHJvdG9jb2wgY29kZS4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBnaXZlbiB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0aG9yb3VnaGx5LgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDoKCiogICAqKkFGUyBTZWN1cml0eToqKiBUaGUgYGZzL2Fmcy9jbV9zZWN1cml0eS5jYCBmaWxlIGhhcyBhIG5ldyBgUkVBRF9PTkNFKG5ldC0mZ3Q7bGl2ZSlgIGNoZWNrLiBUaGlzIHN1Z2dlc3RzIGFuIGFkZGVkIHNhZmV0eSBtZWNoYW5pc20sIHBlcmhhcHMgcmVsYXRlZCB0byBuZXR3b3JrIGxpdmVsaW5lc3Mgb3IgY29ubmVjdGlvbiB2YWxpZGl0eSB3aXRoaW4gQUZTLgoqICAgKipSWFJQQyBPT0IgSGFuZGxpbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIFJYUlBDJiMzOTtzIE9PQiAoT3V0LW9mLUJhbmQpIGhhbmRsaW5nLiBgZnMvYWZzL3J4cnBjLmNgIGhhcyBhIGBjYW5jZWxfd29ya19zeW5jYCBjYWxsLiBUaGUgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2VzIGFyZSBpbiB0aGUgUlhSUEMgY29kZSBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0YXRlIG1hbmFnZW1lbnQgYW5kIE9PQiBjaGFsbGVuZ2UgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgYG5ldC9yeHJwYy9vb2IuY2AgaGFzIGNoYW5nZXMgYW5kIGByeHJwY19yZXNwb25kX3RvX29vYmAgaXMgbm93IGhhbmRsaW5nIGBSWFJQQ19PT0JfQ0hBTExFTkdFYCB0byBwdXQgY29ubmVjdGlvbiBpbnRvIHN0YXRlLgoqICAgKipSWFJQQyBTdGF0ZSBUcmFuc2l0aW9uczoqKiBBIHNpZ25pZmljYW50IGNodW5rIG9mIHRoaXMgcmVsYXRlcyB0byBSWFJQQyYjMzk7cyBzdGF0ZSBtYWNoaW5lLiBJIHNlZSBuZXcgc3RhdGVzLCBgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkRgIGFuZCBgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLYCBhZGRlZCB0byB0aGUgYHJ4cnBjX2NhbGxfc3RhdGVgIGVudW0uIFRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBpbiBgY2FsbF9ldmVudC5jYCwgYGNvbm5fY2xpZW50LmNgLCBhbmQgYGlucHV0LmNgIGFyZSBhbGwgdXBkYXRlZCB0byByZWZsZWN0IHRoZXNlIG5ldyBzdGF0ZXMuIFRoZSBhZGRpdGlvbiBvZiBzdGF0ZSBuYW1lcyBpbiBgY2FsbF9vYmplY3QuY2AgaXMgaW1wb3J0YW50IGZvciBkZWJ1Z2dpbmcgYW5kIGNsYXJpdHkuCiogICAqKk9PQiBhbmQgUmVjdi9TZW5kOioqIGBjb25uX2V2ZW50LmNgJiMzOTtzIGByeHJwY19wb3N0X2NoYWxsZW5nZWAgbm93IGNoZWNrcyB0aGUgcXVldWVkIGBza2JgLiBUaGUgYHJlY3Ztc2dgIGNvZGUgaW4gYG5ldC9yeHJwYy9yZWN2bXNnLmNgIGhhcyB0d2Vha3MgdG8gcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGBsaXN0X2VtcHR5YCBjaGVjayBhbmQgYW4gYWRkaXRpb24gb2YgYSBgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzYCBjaGVjay4gRmluYWxseSwgYHNlbmRtc2cuY2AgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgIG5vdyBpbmNsdWRlcyBhIGBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORGAgY2hlY2sgaW4gYHJ4cnBjX3NlbmRfZGF0YWAuCgpPdmVyYWxsLCB0aGlzIGlzIGEgZmFpciBhbW91bnQgb2YgY2h1cm4gaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGVzZSBjaGFuZ2VzIHByb2JhYmx5IGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBiZWNhdXNlIEkgc2VlIGNoYW5nZXMgaW4gdGhlIG91dCBvZiBiYW5kIGhhbmRsaW5nLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIGZ1enppbmcuIEkgaGF2ZSB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiB0aGUgZmlsZSBwYXRocywgSSYjMzk7ZCBzYXkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgQ09ORklHX0FGU19GU2AgZm9yIHRoZSBBRlMgY2hhbmdlcyBhbmQgYENPTkZJR19BRl9SWFJQQ2AgZm9yIHRoZSBSWFJQQyBjaGFuZ2VzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvcnhycGMvS2NvbmZpZ2AgYW5kIGBmcy9hZnMvS2NvbmZpZ2AgdG8gY29uZmlybSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xuZnMvYWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXCYjMzQ7XG4tLVxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xuLS1cbmZzL2Fmcy9LY29uZmlnLTI2LVxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXG5mcy9hZnMvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7UHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSeFJQQyBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBSeFJQQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbG1vc3QgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0sIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIFNvLCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNyYWNrIG9wZW4gYG5ldC9yeHJwYy9LY29uZmlnYCBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiYjMzQ7IFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGtub2JzIGFuZCBsZXZlcnMgYXZhaWxhYmxlIGZvciBSeFJQQy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgd2lkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUZfUlhSUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZy01LVxubmV0L3J4cnBjL0tjb25maWc6Njpjb25maWcgQUZfUlhSUENcbm5ldC9yeHJwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtSeFJQQyBzZXNzaW9uIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZz0yNT1pZiBBRl9SWFJQQ1xubmV0L3J4cnBjL0tjb25maWctMjYtXG5uZXQvcnhycGMvS2NvbmZpZzoyNzpjb25maWcgQUZfUlhSUENfSVBWNlxubmV0L3J4cnBjL0tjb25maWctMjgtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgUnhSUENcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy0zMy1cbm5ldC9yeHJwYy9LY29uZmlnOjM0OmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfTE9TU1xubmV0L3J4cnBjL0tjb25maWctMzUtXHRib29sIFwmIzM0O0luamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy0zOS1cbm5ldC9yeHJwYy9LY29uZmlnOjQwOmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfUlhfREVMQVlcbm5ldC9yeHJwYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtJbmplY3QgZGVsYXkgaW50byBwYWNrZXQgcmVjZXB0aW9uXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctNDktXG5uZXQvcnhycGMvS2NvbmZpZzo1MDpjb25maWcgQUZfUlhSUENfREVCVUdcbm5ldC9yeHJwYy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtSeFJQQyBkeW5hbWljIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTg5PWNvbmZpZyBSWFBFUkZcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy05NS1cbm5ldC9yeHJwYy9LY29uZmlnOjk2OmNvbmZpZyBBRl9SWFJQQ19LVU5JVF9URVNUXG5uZXQvcnhycGMvS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O1J4UlBDIGNyeXB0byBLVW5pdCB0ZXN0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQ3CgkJCQkJCQlvdXRwdXQ6IDIyMAoJCQkJCQkJdGhvdWdodHM6IDk3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgQ2hhbmdlcyBpbiBBRlMgYW5kIFJ4UlBDIGZvciBGdXp6aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gR2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb25zIGBBRlNfRlNgIGFuZCBgQUZfUlhSUENgLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgYXJlYXMgZm9yIGZ1enppbmcgaW4gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY2hhbmdlcyB0byB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHN0YXRlIG1hY2hpbmUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gUnhSUEMuCgpJbml0aWFsbHksIEkmIzM5O2Qgbm90ZWQgYSBidW5jaCBvZiBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIGZpbHRlciB0aGUgY2FuZGlkYXRlIHN5bWJvbHMuIEkgd2FzIHRoaW5raW5nIG9mIGluY2x1ZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgbGlrZSBgcnhycGNfc2VuZF9kYXRhYCwgYHJ4cnBjX3JlY3Ztc2dgLCBgcnhycGNfaW5wdXRfZGF0YWAsIGFuZCBgcnhycGNfaW5wdXRfYWNrYCwgYnV0IHNpbmNlIHRoZXkgYXJlIG1vZGlmaWVkLCB0aGVyZSBtaWdodCBiZSB2YWx1ZS4gSXQmIzM5O3MgdG9vIG11Y2guIFRoZSBPT0IgaGFuZGxpbmcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuICBUaGVyZWZvcmUsIGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBhbmQgYGFmc19jbG9zZV9zb2NrZXRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRoYXQgSSBzZWUuCgpUaGVuIEkgY2hlY2tlZCBgcnhycGNfcm90YXRlX3R4X3dpbmRvd2AgYW5kIGByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhYC4gT25lJiMzOTtzIGNhbGxlZCBvbiBBQ0tzIGFuZCB0aGUgb3RoZXIgb24gZnJlc2ggZGF0YSwgc28gdGhleSBhcmUgc29tZXdoYXQgaG90LiBUaGUgc3RhdGUgbWFjaGluZSBjaGFuZ2VzIGFyZSBpbXBvcnRhbnQgYXMgd2VsbCwgc28gbWF5YmUgSSYjMzk7bGwgaW5jbHVkZSBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLiBUaGVzZSB3aWxsIGNhcHR1cmUgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgbWlnaHQgYmUgZGlzcnVwdGVkIGJ5IG1hbGZvcm1lZCBpbnB1dC4KCkkgdGhpbmsgdGhlIGZpbmFsIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgcnhycGNfbm90aWZ5X3NvY2tldF9vb2JgLCBgcnhycGNfcG9zdF9jaGFsbGVuZ2VgLCBgcnhycGNfcmVzcG9uZF90b19vb2JgLCBgYWZzX3J4X25vdGlmeV9vb2JgLCBgYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlYCwgYGFmc19jbG9zZV9zb2NrZXRgLCBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLgoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gZW5zdXJlIHRoZSBPT0IgaW50ZXJhY3Rpb25zIGFyZSByb2J1c3QgYW5kIHRoYXQgdGhlIG5ldyBSeFJQQyBjYWxsIHN0YXRlcyAoYFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EYCwgYFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS2ApIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgZXhwbG9pdGFibGUgZmxhd3MuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbmV4dXMgb2YgY2hhbmdlcy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfbm90aWZ5X3NvY2tldF9vb2ImIzM0OywKICAgICYjMzQ7cnhycGNfcG9zdF9jaGFsbGVuZ2UmIzM0OywKICAgICYjMzQ7cnhycGNfcmVzcG9uZF90b19vb2ImIzM0OywKICAgICYjMzQ7YWZzX3J4X25vdGlmeV9vb2ImIzM0OywKICAgICYjMzQ7YWZzX3Byb2Nlc3Nfb29iX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Fmc19jbG9zZV9zb2NrZXQmIzM0OywKICAgICYjMzQ7cnhycGNfY2xvc2VfdHhfcGhhc2UmIzM0OywKICAgICYjMzQ7cnhycGNfZW5kX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX3JlY2VpdmluZ19yZXBseSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgcnhycGMgYW5kIGFmcyBzdWJzeXN0ZW1zLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBvdXQtb2YtYmFuZCAoT09CKSBtZXNzYWdlIGhhbmRsaW5nIGFuZCB0aGUgcnhycGMgY2FsbCBzdGF0ZSBtYWNoaW5lIChhZGRpbmcgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgYW5kIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyBzdGF0ZXMpLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG5ldHdvcmsgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7LAogICAgJiMzNDtBRl9SWFJQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX25vdGlmeV9zb2NrZXRfb29iJiMzNDssCiAgICAmIzM0O3J4cnBjX3Bvc3RfY2hhbGxlbmdlJiMzNDssCiAgICAmIzM0O3J4cnBjX3Jlc3BvbmRfdG9fb29iJiMzNDssCiAgICAmIzM0O2Fmc19yeF9ub3RpZnlfb29iJiMzNDssCiAgICAmIzM0O2Fmc19wcm9jZXNzX29vYl9xdWV1ZSYjMzQ7LAogICAgJiMzNDthZnNfY2xvc2Vfc29ja2V0JiMzNDssCiAgICAmIzM0O3J4cnBjX2Nsb3NlX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX2VuZF90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZWNlaXZpbmdfcmVwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ4cnBjIGFuZCBhZnMgc3Vic3lzdGVtcywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHJ4cnBjIGNhbGwgc3RhdGUgbWFjaGluZSAoYWRkaW5nIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIGFuZCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgc3RhdGVzKS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBuZXR3b3JrIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6MzQuOTQzNTc5MjkyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODQ2OTI3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6MzQuOTQzNTg0MzEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA2NzM2ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZTU1NTU2ZDIxNzgzNTE5NWYyY2I5ZGRiMGFjOTU0M2QxY2RmNGM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcXG5pbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0XFxuLS0tIGEvZnMvYWZzL2NtX3NlY3VyaXR5LmNcXG4rKysgYi9mcy9hZnMvY21fc2VjdXJpdHkuY1xcbkBAIC0xMDEsNyArMTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqb29iO1xcbiBcXHRlbnVtIHJ4cnBjX29vYl90eXBlIHR5cGU7XFxuIFxcbi1cXHR3aGlsZSAoKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtXFx1MDAzZXNvY2tldCwgXFx1MDAyNnR5cGUpKSkge1xcbitcXHR3aGlsZSAoUkVBRF9PTkNFKG5ldC1cXHUwMDNlbGl2ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIChvb2IgPSByeHJwY19rZXJuZWxfZGVxdWV1ZV9vb2IobmV0LVxcdTAwM2Vzb2NrZXQsIFxcdTAwMjZ0eXBlKSkpIHtcXG4gXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdFxcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcXG4gXFx0XFx0XFx0YWZzX3Jlc3BvbmRfdG9fY2hhbGxlbmdlKG9vYik7XFxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9yeHJwYy5jIGIvZnMvYWZzL3J4cnBjLmNcXG5pbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0XFxuLS0tIGEvZnMvYWZzL3J4cnBjLmNcXG4rKysgYi9mcy9hZnMvcnhycGMuY1xcbkBAIC0xMjgsOCArMTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxcbiBcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbiBcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VyeF9vb2Jfd29yayk7XFxuK1xcdC8qIEZ1dHVyZSB3b3JrIGl0ZW1zIHNob3VsZCBub3cgc2VlIC1cXHUwMDNlbGl2ZSBpcyBmYWxzZS4gKi9cXG4rXFxuIFxcdGtlcm5lbF9saXN0ZW4obmV0LVxcdTAwM2Vzb2NrZXQsIDApO1xcbitcXG4rXFx0LyogTWFrZSBzdXJlIHdvcmsgaXRlbXMgYXJlIG5vIGxvbmdlciBydW5uaW5nLiAqL1xcbiBcXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcXG4gXFxuIFxcdGlmIChuZXQtXFx1MDAzZXNwYXJlX2luY29taW5nX2NhbGwpIHtcXG4gXFx0XFx0YWZzX3B1dF9jYWxsKG5ldC1cXHUwMDNlc3BhcmVfaW5jb21pbmdfY2FsbCk7XFxuQEAgLTE0Myw2ICsxNDksNyBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldClcXG4gXFxuIFxcdGtlcm5lbF9zb2NrX3NodXRkb3duKG5ldC1cXHUwMDNlc29ja2V0LCBTSFVUX1JEV1IpO1xcbiBcXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VyeF9vb2Jfd29yayk7XFxuIFxcdG5ldC1cXHUwMDNlc29ja2V0LVxcdTAwM2Vzay1cXHUwMDNlc2tfdXNlcl9kYXRhID0gTlVMTDtcXG4gXFx0c29ja19yZWxlYXNlKG5ldC1cXHUwMDNlc29ja2V0KTtcXG4gXFx0a2V5X3B1dChuZXQtXFx1MDAzZWZzX2NtX3Rva2VuX2tleSk7XFxuQEAgLTk4NCw1ICs5OTEsNiBAQCBzdGF0aWMgdm9pZCBhZnNfcnhfbm90aWZ5X29vYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvb2IpXFxuIHtcXG4gXFx0c3RydWN0IGFmc19uZXQgKm5ldCA9IHNrLVxcdTAwM2Vza191c2VyX2RhdGE7XFxuIFxcbi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXJ4X29vYl93b3JrKTtcXG4rXFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWxpdmUpKVxcbitcXHRcXHRxdWV1ZV93b3JrKGFmc193cSwgXFx1MDAyNm5ldC1cXHUwMDNlcnhfb29iX3dvcmspO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG5pbmRleCA1ODAyZjZmNzg3MjNiYy4uY2U5NDZiMGEwM2UyYjMgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbkBAIC02NjksNyArNjY5LDkgQEAgZW51bSByeHJwY19jYWxsX2V2ZW50IHtcXG4gZW51bSByeHJwY19jYWxsX3N0YXRlIHtcXG4gXFx0UlhSUENfQ0FMTF9VTklOSVRJQUxJU0VELFxcbiBcXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OLFxcdC8qIC0gY2xpZW50IHdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZSAqL1xcbitcXHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcXHQvKiAtIGNsaWVudCBpcyBjb25uZWN0ZWQsIGJ1dCBoYXNuJ3Qgc2VudCBhbnl0aGluZyB5ZXQgKi9cXG4gXFx0UlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNULFxcdC8qIC0gY2xpZW50IHNlbmRpbmcgcmVxdWVzdCBwaGFzZSAqL1xcbitcXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0ssXFx0LyogLSBjbGllbnQgYXdhaXRpbmcgQUNLcyBvZiByZXF1ZXN0ICovXFxuIFxcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZLFxcdC8qIC0gY2xpZW50IGF3YWl0aW5nIHJlcGx5ICovXFxuIFxcdFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFksXFx0LyogLSBjbGllbnQgcmVjZWl2aW5nIHJlcGx5IHBoYXNlICovXFxuIFxcdFJYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DLFxcdC8qIC0gc2VydmljZSBwcmVhbGxvY2F0aW9uICovXFxuQEAgLTEzNzQsOSArMTM3Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJ4cnBjX25ldCAqcnhycGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gfVxcbiBcXG4gLypcXG4tICogb3V0X29mX2JhbmQuY1xcbisgKiBvb2IuY1xcbiAgKi9cXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpO1xcbiB2b2lkIHJ4cnBjX2FkZF9wZW5kaW5nX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBpbnQgcnhycGNfc2VuZG1zZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcXG5pbmRleCBmZWM1OWQ5MzM4YjlmYi4uMjFiZTljODZkN2E3NGYgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuY1xcbisrKyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcXG5AQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuLVxcdFxcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKTtcXG4rXFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcXG4gXFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLKTtcXG5AQCAtMjQ0LDYgKzI0NCw4IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IHdoaWxlIChyZXEubiBcXHUwMDNjIGxpbWl0IFxcdTAwMjZcXHUwMDI2IGJlZm9yZShzZXEsIHNlbmRfdG9wKSk7XFxuIFxcbitcXHRcXHRpZiAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKVxcbitcXHRcXHRcXHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpO1xcbiBcXHRcXHRpZiAodHhiLVxcdTAwM2VmbGFncyBcXHUwMDI2IFJYUlBDX0xBU1RfUEFDS0VUKSB7XFxuIFxcdFxcdFxcdHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKGNhbGwpO1xcbiBcXHRcXHRcXHR0cSA9IE5VTEw7XFxuQEAgLTI2Nyw2ICsyNjksNyBAQCB2b2lkIHJ4cnBjX3RyYW5zbWl0X3NvbWVfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgdW5zaWduZWQgaW50IGxpbWl0LFxcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcXG4rXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORDpcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuIFxcdFxcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxcbiBcXHRcXHRcXHRyZXR1cm47XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX29iamVjdC5jIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcXG4rKysgYi9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xcbkBAIC0xOCw3ICsxOCw5IEBAXFxuIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7XFxuIFxcdFtSWFJQQ19DQUxMX1VOSU5JVElBTElTRURdXFx0XFx0PSBcXFwiVW5pbml0ICBcXFwiLFxcbiBcXHRbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQ09OTl1cXHRcXHQ9IFxcXCJDbFd0Q29ublxcXCIsXFxuK1xcdFtSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORF1cXHRcXHQ9IFxcXCJDbFByZVNuZFxcXCIsXFxuIFxcdFtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdXFx0PSBcXFwiQ2xTbmRSZXFcXFwiLFxcbitcXHRbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLXVxcdFxcdD0gXFxcIkNsQXd0QWNrXFxcIixcXG4gXFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXVxcdFxcdD0gXFxcIkNsQXd0UnBsXFxcIixcXG4gXFx0W1JYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFldXFx0XFx0PSBcXFwiQ2xSY3ZScGxcXFwiLFxcbiBcXHRbUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0NdXFx0XFx0PSBcXFwiU3ZQcmVhbGNcXFwiLFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9jbGllbnQuYyBiL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXFxuaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2FjdGl2YXRlX29uZV9jaGFubmVsKHN0cnVjdCByeHJwY19jb25uZWN0aW9uICpjb25uLFxcbiBcXHR0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7XFxuIFxcdGNhbGwtXFx1MDAzZXR4X2xhc3Rfc2VudCA9IGt0aW1lX2dldF9yZWFsKCk7XFxuIFxcdHJ4cnBjX3N0YXJ0X2NhbGxfdGltZXIoY2FsbCk7XFxuLVxcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7XFxuK1xcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKTtcXG4gXFx0d2FrZV91cChcXHUwMDI2Y2FsbC1cXHUwMDNld2FpdHEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xcbmluZGV4IGM5NmNhNjE1Yjc4N2M2Li42MTFjNzkwYmM2ZDBjZSAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvY29ubl9ldmVudC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xcbkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXFxuIFxcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcXG4gXFx0c3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XFxuLVxcdGJvb2wgcmVzcG9uZCA9IGZhbHNlO1xcbitcXHRib29sIHJlc3BvbmQgPSBmYWxzZSwgcXVldWVkID0gZmFsc2U7XFxuIFxcbiBcXHRzcC1cXHUwMDNlY2hhbGwuY29ubiA9XFxuIFxcdFxcdHJ4cnBjX2dldF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fZ2V0X2NoYWxsZW5nZV9pbnB1dCk7XFxuQEAgLTQ3Miw4ICs0NzIsMTMgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjYWxsKVxcbi1cXHRcXHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xcbitcXHRcXHRxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0aWYgKGNhbGwgXFx1MDAyNlxcdTAwMjYgIXF1ZXVlZCkge1xcbitcXHRcXHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xcbitcXHRcXHRzcC1cXHUwMDNlY2hhbGwuY29ubiA9IE5VTEw7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKCFjYWxsKVxcbiBcXHRcXHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9pbnB1dC5jIGIvbmV0L3J4cnBjL2lucHV0LmNcXG5pbmRleCBjZTc2MTQ2NmIwMmQ2MS4uNzNjYWZlNmJmYTlmNTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcXG4rKysgYi9uZXQvcnhycGMvaW5wdXQuY1xcbkBAIC0xODEsNyArMTgxLDggQEAgdm9pZCByeHJwY19jb25nZXN0aW9uX2RlZ3JhZGUoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXFxuIFxcdGlmIChjYWxsLVxcdTAwM2Vjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX1NMT1dfU1RBUlQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGNhbGwtXFx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfQ09OR0VTVF9BVk9JREFOQ0UpXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcXG4rXFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHxcXG4rXFx0ICAgIF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cnR0ID0gbnNfdG9fa3RpbWUoY2FsbC1cXHUwMDNlc3J0dF91cyAqIChOU0VDX1BFUl9VU0VDIC8gOCkpO1xcbkBAIC0yMzYsNiArMjM3LDkgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXFxuIFxcdFxcdGNhbGwtXFx1MDAzZWFja3NfbG93ZXN0X25hayA9IHRvO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoYWZ0ZXIoc2VxLCB0bykpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdC8qIFdlIG1heSBoYXZlIGEgbGVmdCBvdmVyIGZ1bGx5LWNvbnN1bWVkIGJ1ZmZlciBhdCB0aGUgZnJvbnQgdGhhdCB3ZVxcbiBcXHQgKiBjb3VsZG4ndCBkcm9wIGJlZm9yZSAocm90YXRlX2FuZF9rZWVwIGJlbG93KS5cXG4gXFx0ICovXFxuQEAgLTI0Nyw3ICsyNTEsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0byxcXG4gXFx0XFx0dHEgPSBjYWxsLVxcdTAwM2V0eF9xdWV1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0ZG8ge1xcbitcXHR3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKSB7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBpeCA9IHNlcSAtIGNhbGwtXFx1MDAzZXR4X3FiYXNlO1xcbiBcXG4gXFx0XFx0X2RlYnVnKFxcXCJ0cT0leCBzZXE9JXggaT0lZCBmPSV4XFxcIiwgdHEtXFx1MDAzZXFiYXNlLCBzZXEsIGl4LCB0cS1cXHUwMDNlYnVmc1tpeF0tXFx1MDAzZWZsYWdzKTtcXG5AQCAtMzE3LDggKzMyMSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLFxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuLVxcbi1cXHR9IHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAodHJhY2UpXFxuIFxcdFxcdHRyYWNlX3J4cnBjX3JhY2tfdXBkYXRlKGNhbGwsIHN1bW1hcnkpO1xcbkBAIC0zNTYsNiArMzU5LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfZW5kX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBib29sIHJlcGx5X2JlZ3VuLFxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxcbiBcXHRcXHRpZiAocmVwbHlfYmVndW4pIHtcXG4gXFx0XFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSk7XFxuQEAgLTM5Miw2ICszOTYsMTQgQEAgc3RhdGljIGJvb2wgcnhycGNfcmVjZWl2aW5nX3JlcGx5KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiBcXHRcXHR0cmFjZV9yeHJwY190aW1lcl9jYW4oY2FsbCwgcnhycGNfdGltZXJfdHJhY2VfZGVsYXllZF9hY2spO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSd2ZSBnb3QgdGhlIHJlcXVlc3RcXG4rXFx0ICogcXVldWVkIG9yIHRyYW5zbWl0dGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX0VYUE9TRUQsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4rXFx0XFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9MQVNULCBcXHUwMDI2Y2FsbC1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsIFxcdTAwMjZzdW1tYXJ5KSkge1xcbiBcXHRcXHRcXHRyeHJwY19wcm90b19hYm9ydChjYWxsLCB0b3AsIHJ4cnBjX2Vwcm90b19lYXJseV9yZXBseSk7XFxuQEAgLTY5NCw2ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxcbiBcXHRcXHQvKiBSZWNlaXZlZCBkYXRhIGltcGxpY2l0bHkgQUNLcyBhbGwgb2YgdGhlIHJlcXVlc3RcXG4gXFx0XFx0ICogcGFja2V0cyB3ZSBzZW50IHdoZW4gd2UncmUgYWN0aW5nIGFzIGEgY2xpZW50LlxcbkBAIC0xMTU0LDEwICsxMTY3LDEyIEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKGhhcmRfYWNrICsgMSA9PSAwKVxcbiBcXHRcXHRyZXR1cm4gcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgMCwgcnhycGNfZXByb3RvX2Fja3JfemVybyk7XFxuIFxcbi1cXHQvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIG9yIGhhdmUganVzdCBiZWVuIHRyYW5zbWl0dGluZy4gKi9cXG4rXFx0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSB0cmFuc21pdHRpbmcgb3IgYXJlIHdhaXRpbmcgZm9yXFxuK1xcdCAqIGFja25vd2xlZGdlbWVudCBvZiB0aGUgcGFja2V0cyB3ZSd2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLlxcbitcXHQgKi9cXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuLVxcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFk6XFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxcbiBcXHRcXHRicmVhaztcXG5AQCAtMTIxNSw3ICsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9O1xcbiBcXG4tXFx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cXHUwMDNldHhfdG9wLCBcXHUwMDI2c3VtbWFyeSkpXFxuK1xcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxcbitcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcXG4rXFx0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxcbitcXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX0FXQUlUX0FDSzpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFxcdTAwMjZzdW1tYXJ5KSlcXG4gXFx0XFx0cnhycGNfZW5kX3R4X3BoYXNlKGNhbGwsIGZhbHNlLCByeHJwY19lcHJvdG9fdW5leHBlY3RlZF9hY2thbGwpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvb29iLmMgYi9uZXQvcnhycGMvb29iLmNcXG5pbmRleCAwNWNhOWMxZmFhNTc3ZC4uYzgwZWUyNDg3ZDA5NDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXFxuKysrIGIvbmV0L3J4cnBjL29vYi5jXFxuQEAgLTMyLDExICszMiwxMiBAQCBzdHJ1Y3QgcnhycGNfb29iX3BhcmFtcyB7XFxuICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2VcXG4gICogYXNzb2NpYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGNhbGwuXFxuICAqL1xcbi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitib29sIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcXG4gXFx0c3RydWN0IHJ4cnBjX3NvY2sgKnJ4O1xcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuK1xcdGJvb2wgcXVldWVkID0gZmFsc2U7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcbkBAIC00OSw2ICs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdHNrYi1cXHUwMDNlc2tiX21zdGFtcF9ucyA9IHJ4LVxcdTAwM2Vvb2JfaWRfY291bnRlcisrO1xcbiBcXHRcXHRcXHRyeHJwY19nZXRfc2tiKHNrYiwgcnhycGNfc2tiX2dldF9wb3N0X29vYik7XFxuIFxcdFxcdFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19vb2JxLCBza2IpO1xcbitcXHRcXHRcXHRxdWV1ZWQgPSB0cnVlO1xcbiBcXG4gXFx0XFx0XFx0dHJhY2VfcnhycGNfbm90aWZ5X3NvY2tldChjYWxsLVxcdTAwM2VkZWJ1Z19pZCwgc3AtXFx1MDAzZWhkci5zZXJpYWwpO1xcbiBcXHRcXHRcXHRpZiAocngtXFx1MDAzZWFwcF9vcHMpXFxuQEAgLTU2LDExICs1OCwxMiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNnJ4LVxcdTAwM2VyZWN2bXNnX2xvY2spO1xcbi1cXHRcXHRpZiAoIXJ4LVxcdTAwM2VhcHBfb3BzIFxcdTAwMjZcXHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXFxuK1xcdFxcdGlmIChxdWV1ZWQgXFx1MDAyNlxcdTAwMjYgIXJ4LVxcdTAwM2VhcHBfb3BzIFxcdTAwMjZcXHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXFxuIFxcdFxcdFxcdHNrLVxcdTAwM2Vza19kYXRhX3JlYWR5KHNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdHJldHVybiBxdWV1ZWQ7XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTIxMCw2ICsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbitcXHRzd2l0Y2ggKHNrYi1cXHUwMDNlbWFyaykge1xcbitcXHRjYXNlIFJYUlBDX09PQl9DSEFMTEVOR0U6XFxuK1xcdFxcdHJ4cnBjX3B1dF9jb25uZWN0aW9uKHNwLVxcdTAwM2VjaGFsbC5jb25uLCByeHJwY19jb25uX3B1dF9vb2IpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbiBcXHRyeHJwY19mcmVlX3NrYihza2IsIHJ4cnBjX3NrYl9wdXRfb29iKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcmVjdm1zZy5jIGIvbmV0L3J4cnBjL3JlY3Ztc2cuY1xcbmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvcmVjdm1zZy5jXFxuKysrIGIvbmV0L3J4cnBjL3JlY3Ztc2cuY1xcbkBAIC0yNyw4ICsyNyw2IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG4gXFxuIFxcdF9lbnRlcihcXFwiJWRcXFwiLCBjYWxsLVxcdTAwM2VkZWJ1Z19pZCk7XFxuIFxcbi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmNhbGwtXFx1MDAzZXJlY3Ztc2dfbGluaykpXFxuLVxcdFxcdHJldHVybjtcXG4gXFx0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4gXFx0XFx0cnhycGNfc2VlX2NhbGwoY2FsbCwgcnhycGNfY2FsbF9zZWVfbm90aWZ5X3JlbGVhc2VkKTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC00MzgsNyArNDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnJ4LVxcdTAwM2VyZWN2bXNnX3EpKSB7XFxuK1xcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19xKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19vb2JxKSkge1xcbiBcXHRcXHRyZXQgPSAtRVdPVUxEQkxPQ0s7XFxuIFxcdFxcdGlmICh0aW1lbyA9PSAwKSB7XFxuIFxcdFxcdFxcdGNhbGwgPSBOVUxMO1xcbkBAIC00NzEsNyArNDcwLDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRyZWxlYXNlX3NvY2soXFx1MDAyNnJ4LVxcdTAwM2Vzayk7XFxuIFxcdFxcdGlmIChyZXQgPT0gLUVBR0FJTilcXG4gXFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuLVxcdFxcdGdvdG8gZXJyb3Jfbm9fY2FsbDtcXG4rXFx0XFx0Z290byBlcnJvcl90cmFjZTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJ3JlIG5vdCBqdXN0IHBlZWtpbmcuICBJZiB3ZVxcbkBAIC01MzAsOCArNTI5LDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9SRUxFQVNFRCwgXFx1MDAyNmNhbGwtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjYWxsLVxcdTAwM2V1c2VyX211dGV4KTtcXG4tXFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBNU0dfUEVFSykpXFxuLVxcdFxcdFxcdHJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpO1xcbitcXHRcXHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcXG4gXFx0XFx0Z290byB0cnlfYWdhaW47XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9zZW5kbXNnLmMgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuaW5kZXggYzM1ZGU0ZmQ3NWUzMTEuLmVkMmM5YTUxMDA1YWRlIDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcXG4rKysgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuQEAgLTM2Niw3ICszNjYsOCBAQCBzdGF0aWMgaW50IHJ4cnBjX3NlbmRfZGF0YShzdHJ1Y3QgcnhycGNfc29jayAqcngsXFxuIFxcdGlmIChzdGF0ZSBcXHUwMDNlPSBSWFJQQ19DQUxMX0NPTVBMRVRFKVxcbiBcXHRcXHRnb3RvIG1heWJlX2Vycm9yO1xcbiBcXHRyZXQgPSAtRVBST1RPO1xcbi1cXHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmIChzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgc3RhdGUgIT0gUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWSkge1xcbiBcXHRcXHQvKiBSZXF1ZXN0IHBoYXNlIGNvbXBsZXRlIGZvciB0aGlzIGNsaWVudCBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjM1LjQyNTAxNDMyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2MDMyNDg3MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZTU1NTU2ZDIxNzgzNTE5NWYyY2I5ZGRiMGFjOTU0M2QxY2RmNGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTc6MDE6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZnMvY21fc2VjdXJpdHkuYyBiL2ZzL2Fmcy9jbV9zZWN1cml0eS5jXG5pbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvY21fc2VjdXJpdHkuY1xuKysrIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcbkBAIC0xMDEsNyArMTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHNrX2J1ZmYgKm9vYjtcbiBcdGVudW0gcnhycGNfb29iX3R5cGUgdHlwZTtcbiBcbi1cdHdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuK1x0d2hpbGUgKFJFQURfT05DRShuZXQtXHUwMDNlbGl2ZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtXHUwMDNlc29ja2V0LCBcdTAwMjZ0eXBlKSkpIHtcbiBcdFx0c3dpdGNoICh0eXBlKSB7XG4gXHRcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcbiBcdFx0XHRhZnNfcmVzcG9uZF90b19jaGFsbGVuZ2Uob29iKTtcbmRpZmYgLS1naXQgYS9mcy9hZnMvcnhycGMuYyBiL2ZzL2Fmcy9yeHJwYy5jXG5pbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvcnhycGMuY1xuKysrIGIvZnMvYWZzL3J4cnBjLmNcbkBAIC0xMjgsOCArMTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFx0X2VudGVyKFwiXCIpO1xuIFxuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlY2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7XG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4rXHQvKiBGdXR1cmUgd29yayBpdGVtcyBzaG91bGQgbm93IHNlZSAtXHUwMDNlbGl2ZSBpcyBmYWxzZS4gKi9cbitcbiBcdGtlcm5lbF9saXN0ZW4obmV0LVx1MDAzZXNvY2tldCwgMCk7XG4rXG4rXHQvKiBNYWtlIHN1cmUgd29yayBpdGVtcyBhcmUgbm8gbG9uZ2VyIHJ1bm5pbmcuICovXG4gXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZWNoYXJnZV9wcmVhbGxvY2F0aW9uX3dvcmspO1xuIFxuIFx0aWYgKG5ldC1cdTAwM2VzcGFyZV9pbmNvbWluZ19jYWxsKSB7XG4gXHRcdGFmc19wdXRfY2FsbChuZXQtXHUwMDNlc3BhcmVfaW5jb21pbmdfY2FsbCk7XG5AQCAtMTQzLDYgKzE0OSw3IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFxuIFx0a2VybmVsX3NvY2tfc2h1dGRvd24obmV0LVx1MDAzZXNvY2tldCwgU0hVVF9SRFdSKTtcbiBcdGZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpO1xuK1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlcnhfb29iX3dvcmspO1xuIFx0bmV0LVx1MDAzZXNvY2tldC1cdTAwM2Vzay1cdTAwM2Vza191c2VyX2RhdGEgPSBOVUxMO1xuIFx0c29ja19yZWxlYXNlKG5ldC1cdTAwM2Vzb2NrZXQpO1xuIFx0a2V5X3B1dChuZXQtXHUwMDNlZnNfY21fdG9rZW5fa2V5KTtcbkBAIC05ODQsNSArOTkxLDYgQEAgc3RhdGljIHZvaWQgYWZzX3J4X25vdGlmeV9vb2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqb29iKVxuIHtcbiBcdHN0cnVjdCBhZnNfbmV0ICpuZXQgPSBzay1cdTAwM2Vza191c2VyX2RhdGE7XG4gXG4tXHRzY2hlZHVsZV93b3JrKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4rXHRpZiAoUkVBRF9PTkNFKG5ldC1cdTAwM2VsaXZlKSlcbitcdFx0cXVldWVfd29yayhhZnNfd3EsIFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbmluZGV4IDU4MDJmNmY3ODcyM2JjLi5jZTk0NmIwYTAzZTJiMyAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuQEAgLTY2OSw3ICs2NjksOSBAQCBlbnVtIHJ4cnBjX2NhbGxfZXZlbnQge1xuIGVudW0gcnhycGNfY2FsbF9zdGF0ZSB7XG4gXHRSWFJQQ19DQUxMX1VOSU5JVElBTElTRUQsXG4gXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OLFx0LyogLSBjbGllbnQgd2FpdGluZyBmb3IgY29ubmVjdGlvbiB0byBiZWNvbWUgYXZhaWxhYmxlICovXG4rXHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcdC8qIC0gY2xpZW50IGlzIGNvbm5lY3RlZCwgYnV0IGhhc24ndCBzZW50IGFueXRoaW5nIHlldCAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNULFx0LyogLSBjbGllbnQgc2VuZGluZyByZXF1ZXN0IHBoYXNlICovXG4rXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0ssXHQvKiAtIGNsaWVudCBhd2FpdGluZyBBQ0tzIG9mIHJlcXVlc3QgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZLFx0LyogLSBjbGllbnQgYXdhaXRpbmcgcmVwbHkgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFksXHQvKiAtIGNsaWVudCByZWNlaXZpbmcgcmVwbHkgcGhhc2UgKi9cbiBcdFJYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DLFx0LyogLSBzZXJ2aWNlIHByZWFsbG9jYXRpb24gKi9cbkBAIC0xMzc0LDkgKzEzNzYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCByeHJwY19uZXQgKnJ4cnBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gfVxuIFxuIC8qXG4tICogb3V0X29mX2JhbmQuY1xuKyAqIG9vYi5jXG4gICovXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4rYm9vbCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gdm9pZCByeHJwY19hZGRfcGVuZGluZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBpbnQgcnhycGNfc2VuZG1zZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmMgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG5pbmRleCBmZWM1OWQ5MzM4YjlmYi4uMjFiZTljODZkN2E3NGYgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG4rKysgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG5AQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSk7XG4rXHRcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxuIFx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0spO1xuQEAgLTI0NCw2ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH0gd2hpbGUgKHJlcS5uIFx1MDAzYyBsaW1pdCBcdTAwMjZcdTAwMjYgYmVmb3JlKHNlcSwgc2VuZF90b3ApKTtcbiBcbitcdFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORClcbitcdFx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpO1xuIFx0XHRpZiAodHhiLVx1MDAzZWZsYWdzIFx1MDAyNiBSWFJQQ19MQVNUX1BBQ0tFVCkge1xuIFx0XHRcdHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKGNhbGwpO1xuIFx0XHRcdHRxID0gTlVMTDtcbkBAIC0yNjcsNiArMjY5LDcgQEAgdm9pZCByeHJwY190cmFuc21pdF9zb21lX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pdCxcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXG4gXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFk6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4gXHRcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYyBiL25ldC9yeHJwYy9jYWxsX29iamVjdC5jXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xuKysrIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcbkBAIC0xOCw3ICsxOCw5IEBAXG4gY29uc3QgY2hhciAqY29uc3QgcnhycGNfY2FsbF9zdGF0ZXNbTlJfX1JYUlBDX0NBTExfU1RBVEVTXSA9IHtcbiBcdFtSWFJQQ19DQUxMX1VOSU5JVElBTElTRURdXHRcdD0gXCJVbmluaXQgIFwiLFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk5dXHRcdD0gXCJDbFd0Q29ublwiLFxuK1x0W1JYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EXVx0XHQ9IFwiQ2xQcmVTbmRcIixcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdXHQ9IFwiQ2xTbmRSZXFcIixcbitcdFtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0tdXHRcdD0gXCJDbEF3dEFja1wiLFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXVx0XHQ9IFwiQ2xBd3RScGxcIixcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9SRUNWX1JFUExZXVx0XHQ9IFwiQ2xSY3ZScGxcIixcbiBcdFtSWFJQQ19DQUxMX1NFUlZFUl9QUkVBTExPQ11cdFx0PSBcIlN2UHJlYWxjXCIsXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmMgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuY1xuaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcbisrKyBiL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2FjdGl2YXRlX29uZV9jaGFubmVsKHN0cnVjdCByeHJwY19jb25uZWN0aW9uICpjb25uLFxuIFx0dHJhY2VfcnhycGNfY29ubmVjdF9jYWxsKGNhbGwpO1xuIFx0Y2FsbC1cdTAwM2V0eF9sYXN0X3NlbnQgPSBrdGltZV9nZXRfcmVhbCgpO1xuIFx0cnhycGNfc3RhcnRfY2FsbF90aW1lcihjYWxsKTtcbi1cdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7XG4rXHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCk7XG4gXHR3YWtlX3VwKFx1MDAyNmNhbGwtXHUwMDNld2FpdHEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuaW5kZXggYzk2Y2E2MTViNzg3YzYuLjYxMWM3OTBiYzZkMGNlIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuKysrIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcbiBcdHN0cnVjdCByeHJwY19jYWxsICpjYWxsID0gTlVMTDtcbiBcdHN0cnVjdCByeHJwY19zb2NrICpyeDtcbi1cdGJvb2wgcmVzcG9uZCA9IGZhbHNlO1xuK1x0Ym9vbCByZXNwb25kID0gZmFsc2UsIHF1ZXVlZCA9IGZhbHNlO1xuIFxuIFx0c3AtXHUwMDNlY2hhbGwuY29ubiA9XG4gXHRcdHJ4cnBjX2dldF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fZ2V0X2NoYWxsZW5nZV9pbnB1dCk7XG5AQCAtNDcyLDggKzQ3MiwxMyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdH1cbiBcbiBcdGlmIChjYWxsKVxuLVx0XHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuK1x0XHRxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZiAoY2FsbCBcdTAwMjZcdTAwMjYgIXF1ZXVlZCkge1xuK1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xuK1x0XHRzcC1cdTAwM2VjaGFsbC5jb25uID0gTlVMTDtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFxuIFx0aWYgKCFjYWxsKVxuIFx0XHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuY1xuaW5kZXggY2U3NjE0NjZiMDJkNjEuLjczY2FmZTZiZmE5ZjU0IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcbisrKyBiL25ldC9yeHJwYy9pbnB1dC5jXG5AQCAtMTgxLDcgKzE4MSw4IEBAIHZvaWQgcnhycGNfY29uZ2VzdGlvbl9kZWdyYWRlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFx0aWYgKGNhbGwtXHUwMDNlY29uZ19jYV9zdGF0ZSAhPSBSWFJQQ19DQV9TTE9XX1NUQVJUIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGNhbGwtXHUwMDNlY29uZ19jYV9zdGF0ZSAhPSBSWFJQQ19DQV9DT05HRVNUX0FWT0lEQU5DRSlcbiBcdFx0cmV0dXJuO1xuLVx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcbitcdGlmIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkgPT0gUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHx8XG4rXHQgICAgX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHQgPSBuc190b19rdGltZShjYWxsLVx1MDAzZXNydHRfdXMgKiAoTlNFQ19QRVJfVVNFQyAvIDgpKTtcbkBAIC0yMzYsNiArMjM3LDkgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdGNhbGwtXHUwMDNlYWNrc19sb3dlc3RfbmFrID0gdG87XG4gXHR9XG4gXG4rXHRpZiAoYWZ0ZXIoc2VxLCB0bykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdC8qIFdlIG1heSBoYXZlIGEgbGVmdCBvdmVyIGZ1bGx5LWNvbnN1bWVkIGJ1ZmZlciBhdCB0aGUgZnJvbnQgdGhhdCB3ZVxuIFx0ICogY291bGRuJ3QgZHJvcCBiZWZvcmUgKHJvdGF0ZV9hbmRfa2VlcCBiZWxvdykuXG4gXHQgKi9cbkBAIC0yNDcsNyArMjUxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdHRxID0gY2FsbC1cdTAwM2V0eF9xdWV1ZTtcbiBcdH1cbiBcbi1cdGRvIHtcbitcdHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpIHtcbiBcdFx0dW5zaWduZWQgaW50IGl4ID0gc2VxIC0gY2FsbC1cdTAwM2V0eF9xYmFzZTtcbiBcbiBcdFx0X2RlYnVnKFwidHE9JXggc2VxPSV4IGk9JWQgZj0leFwiLCB0cS1cdTAwM2VxYmFzZSwgc2VxLCBpeCwgdHEtXHUwMDNlYnVmc1tpeF0tXHUwMDNlZmxhZ3MpO1xuQEAgLTMxNyw4ICszMjEsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0byxcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcdFx0fVxuLVxuLVx0fSB3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKTtcbitcdH1cbiBcbiBcdGlmICh0cmFjZSlcbiBcdFx0dHJhY2VfcnhycGNfcmFja191cGRhdGUoY2FsbCwgc3VtbWFyeSk7XG5AQCAtMzU2LDYgKzM1OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2VuZF90eF9waGFzZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgYm9vbCByZXBseV9iZWd1bixcbiBcbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbitcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiBcdFx0aWYgKHJlcGx5X2JlZ3VuKSB7XG4gXHRcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSk7XG5AQCAtMzkyLDYgKzM5NiwxNCBAQCBzdGF0aWMgYm9vbCByeHJwY19yZWNlaXZpbmdfcmVwbHkoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXG4gXHRcdHRyYWNlX3J4cnBjX3RpbWVyX2NhbihjYWxsLCByeHJwY190aW1lcl90cmFjZV9kZWxheWVkX2Fjayk7XG4gXHR9XG4gXG4rXHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSd2ZSBnb3QgdGhlIHJlcXVlc3RcbitcdCAqIHF1ZXVlZCBvciB0cmFuc21pdHRlZC5cbitcdCAqL1xuK1x0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX0VYUE9TRUQsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdHJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIHRvcCwgcnhycGNfZXByb3RvX2Vhcmx5X3JlcGx5KTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuIFx0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX0xBU1QsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsIFx1MDAyNnN1bW1hcnkpKSB7XG4gXHRcdFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xuQEAgLTY5NCw2ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuK1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxuIFx0XHQvKiBSZWNlaXZlZCBkYXRhIGltcGxpY2l0bHkgQUNLcyBhbGwgb2YgdGhlIHJlcXVlc3RcbiBcdFx0ICogcGFja2V0cyB3ZSBzZW50IHdoZW4gd2UncmUgYWN0aW5nIGFzIGEgY2xpZW50LlxuQEAgLTExNTQsMTAgKzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKGhhcmRfYWNrICsgMSA9PSAwKVxuIFx0XHRyZXR1cm4gcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgMCwgcnhycGNfZXByb3RvX2Fja3JfemVybyk7XG4gXG4tXHQvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIG9yIGhhdmUganVzdCBiZWVuIHRyYW5zbWl0dGluZy4gKi9cbitcdC8qIElnbm9yZSBBQ0tzIHVubGVzcyB3ZSBhcmUgdHJhbnNtaXR0aW5nIG9yIGFyZSB3YWl0aW5nIGZvclxuK1x0ICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJ3ZlIGp1c3QgYmVlbiB0cmFuc21pdHRpbmcuXG4rXHQgKi9cbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbi1cdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuIFx0XHRicmVhaztcbkBAIC0xMjE1LDcgKzEyMzAsMTcgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrYWxsKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCByeHJwY19hY2tfc3VtbWFyeSBzdW1tYXJ5ID0geyAwIH07XG4gXG4tXHRpZiAocnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCBjYWxsLVx1MDAzZXR4X3RvcCwgXHUwMDI2c3VtbWFyeSkpXG4rXHRzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkge1xuK1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbitcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbitcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIGNhbGwtXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFx1MDAyNnN1bW1hcnkpKVxuIFx0XHRyeHJwY19lbmRfdHhfcGhhc2UoY2FsbCwgZmFsc2UsIHJ4cnBjX2Vwcm90b191bmV4cGVjdGVkX2Fja2FsbCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9vb2IuYyBiL25ldC9yeHJwYy9vb2IuY1xuaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXG4rKysgYi9uZXQvcnhycGMvb29iLmNcbkBAIC0zMiwxMSArMzIsMTIgQEAgc3RydWN0IHJ4cnBjX29vYl9wYXJhbXMge1xuICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2VcbiAgKiBhc3NvY2lhdGVkIHdpdGggYSByZWZlcmVuY2UgY2FsbC5cbiAgKi9cbi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IHJ4cnBjX3NrYl9wcml2ICpzcCA9IHJ4cnBjX3NrYihza2IpO1xuIFx0c3RydWN0IHJ4cnBjX3NvY2sgKnJ4O1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuK1x0Ym9vbCBxdWV1ZWQgPSBmYWxzZTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbkBAIC00OSw2ICs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0c2tiLVx1MDAzZXNrYl9tc3RhbXBfbnMgPSByeC1cdTAwM2Vvb2JfaWRfY291bnRlcisrO1xuIFx0XHRcdHJ4cnBjX2dldF9za2Ioc2tiLCByeHJwY19za2JfZ2V0X3Bvc3Rfb29iKTtcbiBcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEsIHNrYik7XG4rXHRcdFx0cXVldWVkID0gdHJ1ZTtcbiBcbiBcdFx0XHR0cmFjZV9yeHJwY19ub3RpZnlfc29ja2V0KGNhbGwtXHUwMDNlZGVidWdfaWQsIHNwLVx1MDAzZWhkci5zZXJpYWwpO1xuIFx0XHRcdGlmIChyeC1cdTAwM2VhcHBfb3BzKVxuQEAgLTU2LDExICs1OCwxMiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXG4gXHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX2xvY2spO1xuLVx0XHRpZiAoIXJ4LVx1MDAzZWFwcF9vcHMgXHUwMDI2XHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXG4rXHRcdGlmIChxdWV1ZWQgXHUwMDI2XHUwMDI2ICFyeC1cdTAwM2VhcHBfb3BzIFx1MDAyNlx1MDAyNiAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKVxuIFx0XHRcdHNrLVx1MDAzZXNrX2RhdGFfcmVhZHkoc2spO1xuIFx0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRyZXR1cm4gcXVldWVkO1xuIH1cbiBcbiAvKlxuQEAgLTIxMCw2ICsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0c3dpdGNoIChza2ItXHUwMDNlbWFyaykge1xuK1x0Y2FzZSBSWFJQQ19PT0JfQ0hBTExFTkdFOlxuK1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihzcC1cdTAwM2VjaGFsbC5jb25uLCByeHJwY19jb25uX3B1dF9vb2IpO1xuK1x0XHRicmVhaztcbitcdH1cbiBcdHJ4cnBjX2ZyZWVfc2tiKHNrYiwgcnhycGNfc2tiX3B1dF9vb2IpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3JlY3Ztc2cuYyBiL25ldC9yeHJwYy9yZWN2bXNnLmNcbmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9yZWN2bXNnLmNcbisrKyBiL25ldC9yeHJwYy9yZWN2bXNnLmNcbkBAIC0yNyw4ICsyNyw2IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcbiBcdF9lbnRlcihcIiVkXCIsIGNhbGwtXHUwMDNlZGVidWdfaWQpO1xuIFxuLVx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmNhbGwtXHUwMDNlcmVjdm1zZ19saW5rKSlcbi1cdFx0cmV0dXJuO1xuIFx0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHJ4cnBjX3NlZV9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfc2VlX25vdGlmeV9yZWxlYXNlZCk7XG4gXHRcdHJldHVybjtcbkBAIC00MzgsNyArNDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxuIFx0XHRyZXR1cm4gLUVBR0FJTjtcbiBcdH1cbiBcbi1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkpIHtcbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfb29icSkpIHtcbiBcdFx0cmV0ID0gLUVXT1VMREJMT0NLO1xuIFx0XHRpZiAodGltZW8gPT0gMCkge1xuIFx0XHRcdGNhbGwgPSBOVUxMO1xuQEAgLTQ3MSw3ICs0NzAsNyBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRcdHJlbGVhc2Vfc29jayhcdTAwMjZyeC1cdTAwM2Vzayk7XG4gXHRcdGlmIChyZXQgPT0gLUVBR0FJTilcbiBcdFx0XHRnb3RvIHRyeV9hZ2Fpbjtcbi1cdFx0Z290byBlcnJvcl9ub19jYWxsO1xuK1x0XHRnb3RvIGVycm9yX3RyYWNlO1xuIFx0fVxuIFxuIFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJ3JlIG5vdCBqdXN0IHBlZWtpbmcuICBJZiB3ZVxuQEAgLTUzMCw4ICs1MjksNyBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9SRUxFQVNFRCwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbiBcdFx0cnhycGNfc2VlX2NhbGwoY2FsbCwgcnhycGNfY2FsbF9zZWVfYWxyZWFkeV9yZWxlYXNlZCk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjYWxsLVx1MDAzZXVzZXJfbXV0ZXgpO1xuLVx0XHRpZiAoIShmbGFncyBcdTAwMjYgTVNHX1BFRUspKVxuLVx0XHRcdHJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpO1xuK1x0XHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcbiBcdFx0Z290byB0cnlfYWdhaW47XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGMzNWRlNGZkNzVlMzExLi5lZDJjOWE1MTAwNWFkZSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcbisrKyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbkBAIC0zNjYsNyArMzY2LDggQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHN0YXRlIFx1MDAzZT0gUlhSUENfQ0FMTF9DT01QTEVURSlcbiBcdFx0Z290byBtYXliZV9lcnJvcjtcbiBcdHJldCA9IC1FUFJPVE87XG4tXHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFx1MDAyNlx1MDAyNlxuK1x0aWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZKSB7XG4gXHRcdC8qIFJlcXVlc3QgcGhhc2UgY29tcGxldGUgZm9yIHRoaXMgY2xpZW50IGNhbGwgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjM1LjQyNTAxNjE1M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNDQ5ODgxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEFGUy9SWFJQQyBTdWJzeXN0ZW1zKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBib3RoIHRoZSBBRlMgZmlsZXN5c3RlbSBjb2RlIGFuZCB0aGUgUlhSUEMgbmV0d29yayBwcm90b2NvbCBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGJ1ZyBmaXgsIGdpdmVuIHRoZSBicmVhZHRoIG9mIHRoZSBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRob3JvdWdobHkuXG5cbkhlcmUncyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDpcblxuKiAgICoqQUZTIFNlY3VyaXR5OioqIFRoZSBgZnMvYWZzL2NtX3NlY3VyaXR5LmNgIGZpbGUgaGFzIGEgbmV3IGBSRUFEX09OQ0UobmV0LVx1MDAzZWxpdmUpYCBjaGVjay4gVGhpcyBzdWdnZXN0cyBhbiBhZGRlZCBzYWZldHkgbWVjaGFuaXNtLCBwZXJoYXBzIHJlbGF0ZWQgdG8gbmV0d29yayBsaXZlbGluZXNzIG9yIGNvbm5lY3Rpb24gdmFsaWRpdHkgd2l0aGluIEFGUy5cbiogICAqKlJYUlBDIE9PQiBIYW5kbGluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgUlhSUEMncyBPT0IgKE91dC1vZi1CYW5kKSBoYW5kbGluZy4gYGZzL2Fmcy9yeHJwYy5jYCBoYXMgYSBgY2FuY2VsX3dvcmtfc3luY2AgY2FsbC4gVGhlIG1vcmUgc2lnbmlmaWNhbnQgY2hhbmdlcyBhcmUgaW4gdGhlIFJYUlBDIGNvZGUgc3BlY2lmaWNhbGx5IGFyb3VuZCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBPT0IgY2hhbGxlbmdlIGhhbmRsaW5nLiBJdCBsb29rcyBsaWtlIGBuZXQvcnhycGMvb29iLmNgIGhhcyBjaGFuZ2VzIGFuZCBgcnhycGNfcmVzcG9uZF90b19vb2JgIGlzIG5vdyBoYW5kbGluZyBgUlhSUENfT09CX0NIQUxMRU5HRWAgdG8gcHV0IGNvbm5lY3Rpb24gaW50byBzdGF0ZS5cbiogICAqKlJYUlBDIFN0YXRlIFRyYW5zaXRpb25zOioqIEEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhpcyByZWxhdGVzIHRvIFJYUlBDJ3Mgc3RhdGUgbWFjaGluZS4gSSBzZWUgbmV3IHN0YXRlcywgYFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EYCBhbmQgYFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS2AgYWRkZWQgdG8gdGhlIGByeHJwY19jYWxsX3N0YXRlYCBlbnVtLiBUaGUgc3RhdGUgdHJhbnNpdGlvbnMgaW4gYGNhbGxfZXZlbnQuY2AsIGBjb25uX2NsaWVudC5jYCwgYW5kIGBpbnB1dC5jYCBhcmUgYWxsIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGVzZSBuZXcgc3RhdGVzLiBUaGUgYWRkaXRpb24gb2Ygc3RhdGUgbmFtZXMgaW4gYGNhbGxfb2JqZWN0LmNgIGlzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIGFuZCBjbGFyaXR5LlxuKiAgICoqT09CIGFuZCBSZWN2L1NlbmQ6KiogYGNvbm5fZXZlbnQuY2AncyBgcnhycGNfcG9zdF9jaGFsbGVuZ2VgIG5vdyBjaGVja3MgdGhlIHF1ZXVlZCBgc2tiYC4gVGhlIGByZWN2bXNnYCBjb2RlIGluIGBuZXQvcnhycGMvcmVjdm1zZy5jYCBoYXMgdHdlYWtzIHRvIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBgbGlzdF9lbXB0eWAgY2hlY2sgYW5kIGFuIGFkZGl0aW9uIG9mIGEgYHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzc2AgY2hlY2suIEZpbmFsbHksIGBzZW5kbXNnLmNgIGluIGBuZXQvcnhycGMvc2VuZG1zZy5jYCBub3cgaW5jbHVkZXMgYSBgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkRgIGNoZWNrIGluIGByeHJwY19zZW5kX2RhdGFgLlxuXG5PdmVyYWxsLCB0aGlzIGlzIGEgZmFpciBhbW91bnQgb2YgY2h1cm4gaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGVzZSBjaGFuZ2VzIHByb2JhYmx5IGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBiZWNhdXNlIEkgc2VlIGNoYW5nZXMgaW4gdGhlIG91dCBvZiBiYW5kIGhhbmRsaW5nLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCB0aGlzIGRlZmluaXRlbHkgbmVlZHMgZnV6emluZy4gSSBoYXZlIHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGhzLCBJJ2Qgc2F5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19BRlNfRlNgIGZvciB0aGUgQUZTIGNoYW5nZXMgYW5kIGBDT05GSUdfQUZfUlhSUENgIGZvciB0aGUgUlhSUEMgY2hhbmdlcy4gVGltZSB0byBkaWcgaW50byBgbmV0L3J4cnBjL0tjb25maWdgIGFuZCBgZnMvYWZzL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzowMTo0NC43NzAwMDY0NThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNjg4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xcbmZzL2Fmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXFxcIlxcbi0tXFxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xcbi0tXFxuZnMvYWZzL0tjb25maWctMjYtXFxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXFxuZnMvYWZzL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiUHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6NDQuODM4Mjc5ODg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1NTI5ODY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUnhSUEMgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBSeFJQQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbG1vc3QgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0sIHJpZ2h0PyBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dC4gU28sIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIGBuZXQvcnhycGMvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLlwiIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGtub2JzIGFuZCBsZXZlcnMgYXZhaWxhYmxlIGZvciBSeFJQQy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgd2lkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjQ3LjY5MzU4MDUwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA5MDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQUZfUlhSUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3J4cnBjL0tjb25maWctNS1cXG5uZXQvcnhycGMvS2NvbmZpZzo2OmNvbmZpZyBBRl9SWFJQQ1xcbm5ldC9yeHJwYy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlJ4UlBDIHNlc3Npb24gc29ja2V0c1xcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnPTI1PWlmIEFGX1JYUlBDXFxubmV0L3J4cnBjL0tjb25maWctMjYtXFxubmV0L3J4cnBjL0tjb25maWc6Mjc6Y29uZmlnIEFGX1JYUlBDX0lQVjZcXG5uZXQvcnhycGMvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctMzMtXFxubmV0L3J4cnBjL0tjb25maWc6MzQ6Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9MT1NTXFxubmV0L3J4cnBjL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiSW5qZWN0IHBhY2tldCBsb3NzIGludG8gUnhSUEMgcGFja2V0IHN0cmVhbVxcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTM5LVxcbm5ldC9yeHJwYy9LY29uZmlnOjQwOmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfUlhfREVMQVlcXG5uZXQvcnhycGMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJJbmplY3QgZGVsYXkgaW50byBwYWNrZXQgcmVjZXB0aW9uXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctNDktXFxubmV0L3J4cnBjL0tjb25maWc6NTA6Y29uZmlnIEFGX1JYUlBDX0RFQlVHXFxubmV0L3J4cnBjL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiUnhSUEMgZHluYW1pYyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz04OT1jb25maWcgUlhQRVJGXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy05NS1cXG5uZXQvcnhycGMvS2NvbmZpZzo5Njpjb25maWcgQUZfUlhSUENfS1VOSVRfVEVTVFxcbm5ldC9yeHJwYy9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJSeFJQQyBjcnlwdG8gS1VuaXQgdGVzdFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzowMTo0Ny43NzE2NzY1MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5MjczMDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgQ2hhbmdlcyBpbiBBRlMgYW5kIFJ4UlBDIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEdpdmVuIHRoZSBjb25maWd1cmF0aW9ucyBgQUZTX0ZTYCBhbmQgYEFGX1JYUlBDYCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjcnVjaWFsIGFyZWFzIGZvciBmdXp6aW5nIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNoYW5nZXMgdG8gdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSBzdGF0ZSBtYWNoaW5lIG1vZGlmaWNhdGlvbnMgd2l0aGluIFJ4UlBDLlxuXG5Jbml0aWFsbHksIEknZCBub3RlZCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucy4gTm93LCBsZXQncyBmaWx0ZXIgdGhlIGNhbmRpZGF0ZSBzeW1ib2xzLiBJIHdhcyB0aGlua2luZyBvZiBpbmNsdWRpbmcgaG90LXBhdGggZnVuY3Rpb25zIGxpa2UgYHJ4cnBjX3NlbmRfZGF0YWAsIGByeHJwY19yZWN2bXNnYCwgYHJ4cnBjX2lucHV0X2RhdGFgLCBhbmQgYHJ4cnBjX2lucHV0X2Fja2AsIGJ1dCBzaW5jZSB0aGV5IGFyZSBtb2RpZmllZCwgdGhlcmUgbWlnaHQgYmUgdmFsdWUuIEl0J3MgdG9vIG11Y2guIFRoZSBPT0IgaGFuZGxpbmcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuICBUaGVyZWZvcmUsIGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBhbmQgYGFmc19jbG9zZV9zb2NrZXRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRoYXQgSSBzZWUuXG5cblRoZW4gSSBjaGVja2VkIGByeHJwY19yb3RhdGVfdHhfd2luZG93YCBhbmQgYHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGFgLiBPbmUncyBjYWxsZWQgb24gQUNLcyBhbmQgdGhlIG90aGVyIG9uIGZyZXNoIGRhdGEsIHNvIHRoZXkgYXJlIHNvbWV3aGF0IGhvdC4gVGhlIHN0YXRlIG1hY2hpbmUgY2hhbmdlcyBhcmUgaW1wb3J0YW50IGFzIHdlbGwsIHNvIG1heWJlIEknbGwgaW5jbHVkZSBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLiBUaGVzZSB3aWxsIGNhcHR1cmUgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgbWlnaHQgYmUgZGlzcnVwdGVkIGJ5IG1hbGZvcm1lZCBpbnB1dC5cblxuSSB0aGluayB0aGUgZmluYWwgZm9jdXMgc3ltYm9scyBzaG91bGQgYmU6IGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBgYWZzX2Nsb3NlX3NvY2tldGAsIGByeHJwY19jbG9zZV90eF9waGFzZWAsIGByeHJwY19lbmRfdHhfcGhhc2VgLCBhbmQgYHJ4cnBjX3JlY2VpdmluZ19yZXBseWAuXG5cbkJhc2ljYWxseSwgSSB3YW50IHRvIGVuc3VyZSB0aGUgT09CIGludGVyYWN0aW9ucyBhcmUgcm9idXN0IGFuZCB0aGF0IHRoZSBuZXcgUnhSUEMgY2FsbCBzdGF0ZXMgKGBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORGAsIGBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0tgKSBhcmUgY29ycmVjdGx5IGhhbmRsZWQgYW5kIGRvbid0IGludHJvZHVjZSBhbnkgZXhwbG9pdGFibGUgZmxhd3MuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbmV4dXMgb2YgY2hhbmdlcy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0NywiT3V0cHV0VG9rZW5zIjoyMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDI6MDEuNjY0NDA5MjUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM4NDk0NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGU19GU1wiLFxuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19ub3RpZnlfc29ja2V0X29vYlwiLFxuICAgIFwicnhycGNfcG9zdF9jaGFsbGVuZ2VcIixcbiAgICBcInJ4cnBjX3Jlc3BvbmRfdG9fb29iXCIsXG4gICAgXCJhZnNfcnhfbm90aWZ5X29vYlwiLFxuICAgIFwiYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlXCIsXG4gICAgXCJhZnNfY2xvc2Vfc29ja2V0XCIsXG4gICAgXCJyeHJwY19jbG9zZV90eF9waGFzZVwiLFxuICAgIFwicnhycGNfZW5kX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19yZWNlaXZpbmdfcmVwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgcnhycGMgYW5kIGFmcyBzdWJzeXN0ZW1zLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBvdXQtb2YtYmFuZCAoT09CKSBtZXNzYWdlIGhhbmRsaW5nIGFuZCB0aGUgcnhycGMgY2FsbCBzdGF0ZSBtYWNoaW5lIChhZGRpbmcgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgYW5kIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyBzdGF0ZXMpLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG5ldHdvcmsgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz88fk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 16:50:07 +0000 UTC FinishedAt: 2026-06-24 17:02:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS", "AF_RXRPC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "AFS_FS", "AF_RXRPC" ], "series_id": "a62521d6-5a0e-4c07-a448-8a09995221eb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rxrpc_notify_socket_oob", "rxrpc_post_challenge", "rxrpc_respond_to_oob", "afs_rx_notify_oob", "afs_process_oob_queue", "afs_close_socket", "rxrpc_close_tx_phase", "rxrpc_end_tx_phase", "rxrpc_receiving_reply" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7LAogICAgJiMzNDtBRl9SWFJQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX25vdGlmeV9zb2NrZXRfb29iJiMzNDssCiAgICAmIzM0O3J4cnBjX3Bvc3RfY2hhbGxlbmdlJiMzNDssCiAgICAmIzM0O3J4cnBjX3Jlc3BvbmRfdG9fb29iJiMzNDssCiAgICAmIzM0O2Fmc19yeF9ub3RpZnlfb29iJiMzNDssCiAgICAmIzM0O2Fmc19wcm9jZXNzX29vYl9xdWV1ZSYjMzQ7LAogICAgJiMzNDthZnNfY2xvc2Vfc29ja2V0JiMzNDssCiAgICAmIzM0O3J4cnBjX2Nsb3NlX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX2VuZF90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZWNlaXZpbmdfcmVwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ4cnBjIGFuZCBhZnMgc3Vic3lzdGVtcywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHJ4cnBjIGNhbGwgc3RhdGUgbWFjaGluZSAoYWRkaW5nIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIGFuZCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgc3RhdGVzKS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBuZXR3b3JrIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U1NTU1NmQyMTc4MzUxOTVmMmNiOWRkYjBhYzk1NDNkMWNkZjRjNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcbmluZGV4IGVkY2JkMjQ5ZDIwMjRhLi4xMDMxNjhjNzBkZDRkZiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvY21fc2VjdXJpdHkuY1xuQEAgLTEwMSw3ICYjNDM7MTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHNrX2J1ZmYgKm9vYjtcbiBcdGVudW0gcnhycGNfb29iX3R5cGUgdHlwZTtcbiBcbi1cdHdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuJiM0MztcdHdoaWxlIChSRUFEX09OQ0UobmV0LVx1MDAzZWxpdmUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICAob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuIFx0XHRzd2l0Y2ggKHR5cGUpIHtcbiBcdFx0Y2FzZSBSWFJQQ19PT0JfQ0hBTExFTkdFOlxuIFx0XHRcdGFmc19yZXNwb25kX3RvX2NoYWxsZW5nZShvb2IpO1xuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9yeHJwYy5jIGIvZnMvYWZzL3J4cnBjLmNcbmluZGV4IGQ1Y2ZkMjRlODE1YmRkLi5kODI5MTY2NTdhM2RkZiAxMDA2NDRcbi0tLSBhL2ZzL2Fmcy9yeHJwYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9hZnMvcnhycGMuY1xuQEAgLTEyOCw4ICYjNDM7MTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFx0X2VudGVyKFwmIzM0O1wmIzM0Oyk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcbiYjNDM7XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4mIzQzO1x0LyogRnV0dXJlIHdvcmsgaXRlbXMgc2hvdWxkIG5vdyBzZWUgLVx1MDAzZWxpdmUgaXMgZmFsc2UuICovXG4mIzQzO1xuIFx0a2VybmVsX2xpc3RlbihuZXQtXHUwMDNlc29ja2V0LCAwKTtcbiYjNDM7XG4mIzQzO1x0LyogTWFrZSBzdXJlIHdvcmsgaXRlbXMgYXJlIG5vIGxvbmdlciBydW5uaW5nLiAqL1xuIFx0Zmx1c2hfd29ya3F1ZXVlKGFmc19hc3luY19jYWxscyk7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlY2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7XG4gXG4gXHRpZiAobmV0LVx1MDAzZXNwYXJlX2luY29taW5nX2NhbGwpIHtcbiBcdFx0YWZzX3B1dF9jYWxsKG5ldC1cdTAwM2VzcGFyZV9pbmNvbWluZ19jYWxsKTtcbkBAIC0xNDMsNiAmIzQzOzE0OSw3IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFxuIFx0a2VybmVsX3NvY2tfc2h1dGRvd24obmV0LVx1MDAzZXNvY2tldCwgU0hVVF9SRFdSKTtcbiBcdGZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpO1xuJiM0MztcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXJ4X29vYl93b3JrKTtcbiBcdG5ldC1cdTAwM2Vzb2NrZXQtXHUwMDNlc2stXHUwMDNlc2tfdXNlcl9kYXRhID0gTlVMTDtcbiBcdHNvY2tfcmVsZWFzZShuZXQtXHUwMDNlc29ja2V0KTtcbiBcdGtleV9wdXQobmV0LVx1MDAzZWZzX2NtX3Rva2VuX2tleSk7XG5AQCAtOTg0LDUgJiM0Mzs5OTEsNiBAQCBzdGF0aWMgdm9pZCBhZnNfcnhfbm90aWZ5X29vYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvb2IpXG4ge1xuIFx0c3RydWN0IGFmc19uZXQgKm5ldCA9IHNrLVx1MDAzZXNrX3VzZXJfZGF0YTtcbiBcbi1cdHNjaGVkdWxlX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXJ4X29vYl93b3JrKTtcbiYjNDM7XHRpZiAoUkVBRF9PTkNFKG5ldC1cdTAwM2VsaXZlKSlcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoYWZzX3dxLCBcdTAwMjZuZXQtXHUwMDNlcnhfb29iX3dvcmspO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG5pbmRleCA1ODAyZjZmNzg3MjNiYy4uY2U5NDZiMGEwM2UyYjMgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbkBAIC02NjksNyAmIzQzOzY2OSw5IEBAIGVudW0gcnhycGNfY2FsbF9ldmVudCB7XG4gZW51bSByeHJwY19jYWxsX3N0YXRlIHtcbiBcdFJYUlBDX0NBTExfVU5JTklUSUFMSVNFRCxcbiBcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk4sXHQvKiAtIGNsaWVudCB3YWl0aW5nIGZvciBjb25uZWN0aW9uIHRvIGJlY29tZSBhdmFpbGFibGUgKi9cbiYjNDM7XHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcdC8qIC0gY2xpZW50IGlzIGNvbm5lY3RlZCwgYnV0IGhhc24mIzM5O3Qgc2VudCBhbnl0aGluZyB5ZXQgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCxcdC8qIC0gY2xpZW50IHNlbmRpbmcgcmVxdWVzdCBwaGFzZSAqL1xuJiM0MztcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyxcdC8qIC0gY2xpZW50IGF3YWl0aW5nIEFDS3Mgb2YgcmVxdWVzdCAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFksXHQvKiAtIGNsaWVudCBhd2FpdGluZyByZXBseSAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSxcdC8qIC0gY2xpZW50IHJlY2VpdmluZyByZXBseSBwaGFzZSAqL1xuIFx0UlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0MsXHQvKiAtIHNlcnZpY2UgcHJlYWxsb2NhdGlvbiAqL1xuQEAgLTEzNzQsOSAmIzQzOzEzNzYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCByeHJwY19uZXQgKnJ4cnBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gfVxuIFxuIC8qXG4tICogb3V0X29mX2JhbmQuY1xuJiM0MzsgKiBvb2IuY1xuICAqL1xuLXZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0Mztib29sIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiB2b2lkIHJ4cnBjX2FkZF9wZW5kaW5nX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBza19idWZmICpza2IpO1xuIGludCByeHJwY19zZW5kbXNnX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbmluZGV4IGZlYzU5ZDkzMzhiOWZiLi4yMWJlOWM4NmQ3YTc0ZiAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcbkBAIC0xNzgsNyAmIzQzOzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSk7XG4mIzQzO1x0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0spO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLKTtcbkBAIC0yNDQsNiAmIzQzOzI0NCw4IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0fSB3aGlsZSAocmVxLm4gXHUwMDNjIGxpbWl0IFx1MDAyNlx1MDAyNiBiZWZvcmUoc2VxLCBzZW5kX3RvcCkpO1xuIFxuJiM0MztcdFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORClcbiYjNDM7XHRcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUKTtcbiBcdFx0aWYgKHR4Yi1cdTAwM2VmbGFncyBcdTAwMjYgUlhSUENfTEFTVF9QQUNLRVQpIHtcbiBcdFx0XHRyeHJwY19jbG9zZV90eF9waGFzZShjYWxsKTtcbiBcdFx0XHR0cSA9IE5VTEw7XG5AQCAtMjY3LDYgJiM0MzsyNjksNyBAQCB2b2lkIHJ4cnBjX3RyYW5zbWl0X3NvbWVfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgdW5zaWduZWQgaW50IGxpbWl0LFxuIFx0XHRmYWxsdGhyb3VnaDtcbiBcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4gXHRcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYyBiL25ldC9yeHJwYy9jYWxsX29iamVjdC5jXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcbkBAIC0xOCw3ICYjNDM7MTgsOSBAQFxuIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7XG4gXHRbUlhSUENfQ0FMTF9VTklOSVRJQUxJU0VEXVx0XHQ9IFwmIzM0O1VuaW5pdCAgXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk5dXHRcdD0gXCYjMzQ7Q2xXdENvbm5cJiMzNDssXG4mIzQzO1x0W1JYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EXVx0XHQ9IFwmIzM0O0NsUHJlU25kXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVF1cdD0gXCYjMzQ7Q2xTbmRSZXFcJiMzNDssXG4mIzQzO1x0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS11cdFx0PSBcJiMzNDtDbEF3dEFja1wmIzM0OyxcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWV1cdFx0PSBcJiMzNDtDbEF3dFJwbFwmIzM0OyxcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9SRUNWX1JFUExZXVx0XHQ9IFwmIzM0O0NsUmN2UnBsXCYjMzQ7LFxuIFx0W1JYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DXVx0XHQ9IFwmIzM0O1N2UHJlYWxjXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcbmluZGV4IDliNzU3Nzk4ZGVkZGI4Li40ODUxOWYwZGUxODUzOSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuY1xuQEAgLTQ0OSw3ICYjNDM7NDQ5LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfYWN0aXZhdGVfb25lX2NoYW5uZWwoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHR0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7XG4gXHRjYWxsLVx1MDAzZXR4X2xhc3Rfc2VudCA9IGt0aW1lX2dldF9yZWFsKCk7XG4gXHRyeHJwY19zdGFydF9jYWxsX3RpbWVyKGNhbGwpO1xuLVx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUKTtcbiYjNDM7XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCk7XG4gXHR3YWtlX3VwKFx1MDAyNmNhbGwtXHUwMDNld2FpdHEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuaW5kZXggYzk2Y2E2MTViNzg3YzYuLjYxMWM3OTBiYzZkMGNlIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuQEAgLTQzNiw3ICYjNDM7NDM2LDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHRzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7XG4gXHRzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XG4tXHRib29sIHJlc3BvbmQgPSBmYWxzZTtcbiYjNDM7XHRib29sIHJlc3BvbmQgPSBmYWxzZSwgcXVldWVkID0gZmFsc2U7XG4gXG4gXHRzcC1cdTAwM2VjaGFsbC5jb25uID1cbiBcdFx0cnhycGNfZ2V0X2Nvbm5lY3Rpb24oY29ubiwgcnhycGNfY29ubl9nZXRfY2hhbGxlbmdlX2lucHV0KTtcbkBAIC00NzIsOCAmIzQzOzQ3MiwxMyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdH1cbiBcbiBcdGlmIChjYWxsKVxuLVx0XHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuJiM0MztcdFx0cXVldWVkID0gcnhycGNfbm90aWZ5X3NvY2tldF9vb2IoY2FsbCwgc2tiKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGlmIChjYWxsIFx1MDAyNlx1MDAyNiAhcXVldWVkKSB7XG4mIzQzO1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xuJiM0MztcdFx0c3AtXHUwMDNlY2hhbGwuY29ubiA9IE5VTEw7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKCFjYWxsKVxuIFx0XHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuY1xuaW5kZXggY2U3NjE0NjZiMDJkNjEuLjczY2FmZTZiZmE5ZjU0IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9pbnB1dC5jXG5AQCAtMTgxLDcgJiM0MzsxODEsOCBAQCB2b2lkIHJ4cnBjX2Nvbmdlc3Rpb25fZGVncmFkZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcdGlmIChjYWxsLVx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfU0xPV19TVEFSVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBjYWxsLVx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfQ09OR0VTVF9BVk9JREFOQ0UpXG4gXHRcdHJldHVybjtcbi1cdGlmIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkgPT0gUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFkpXG4mIzQzO1x0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHxcbiYjNDM7XHQgICAgX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHQgPSBuc190b19rdGltZShjYWxsLVx1MDAzZXNydHRfdXMgKiAoTlNFQ19QRVJfVVNFQyAvIDgpKTtcbkBAIC0yMzYsNiAmIzQzOzIzNyw5IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLFxuIFx0XHRjYWxsLVx1MDAzZWFja3NfbG93ZXN0X25hayA9IHRvO1xuIFx0fVxuIFxuJiM0MztcdGlmIChhZnRlcihzZXEsIHRvKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHQvKiBXZSBtYXkgaGF2ZSBhIGxlZnQgb3ZlciBmdWxseS1jb25zdW1lZCBidWZmZXIgYXQgdGhlIGZyb250IHRoYXQgd2VcbiBcdCAqIGNvdWxkbiYjMzk7dCBkcm9wIGJlZm9yZSAocm90YXRlX2FuZF9rZWVwIGJlbG93KS5cbiBcdCAqL1xuQEAgLTI0Nyw3ICYjNDM7MjUxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdHRxID0gY2FsbC1cdTAwM2V0eF9xdWV1ZTtcbiBcdH1cbiBcbi1cdGRvIHtcbiYjNDM7XHR3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKSB7XG4gXHRcdHVuc2lnbmVkIGludCBpeCA9IHNlcSAtIGNhbGwtXHUwMDNldHhfcWJhc2U7XG4gXG4gXHRcdF9kZWJ1ZyhcJiMzNDt0cT0leCBzZXE9JXggaT0lZCBmPSV4XCYjMzQ7LCB0cS1cdTAwM2VxYmFzZSwgc2VxLCBpeCwgdHEtXHUwMDNlYnVmc1tpeF0tXHUwMDNlZmxhZ3MpO1xuQEAgLTMxNyw4ICYjNDM7MzIxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG4gXHRcdH1cbi1cbi1cdH0gd2hpbGUgKGJlZm9yZV9lcShzZXEsIHRvKSk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHRyYWNlKVxuIFx0XHR0cmFjZV9yeHJwY19yYWNrX3VwZGF0ZShjYWxsLCBzdW1tYXJ5KTtcbkBAIC0zNTYsNiAmIzQzOzM1OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2VuZF90eF9waGFzZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgYm9vbCByZXBseV9iZWd1bixcbiBcbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XG4gXHRcdGlmIChyZXBseV9iZWd1bikge1xuIFx0XHRcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFkpO1xuQEAgLTM5Miw2ICYjNDM7Mzk2LDE0IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JlY2VpdmluZ19yZXBseShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcdFx0dHJhY2VfcnhycGNfdGltZXJfY2FuKGNhbGwsIHJ4cnBjX3RpbWVyX3RyYWNlX2RlbGF5ZWRfYWNrKTtcbiBcdH1cbiBcbiYjNDM7XHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSYjMzk7dmUgZ290IHRoZSByZXF1ZXN0XG4mIzQzO1x0ICogcXVldWVkIG9yIHRyYW5zbWl0dGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9FWFBPU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuJiM0MztcdFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoIXRlc3RfYml0KFJYUlBDX0NBTExfVFhfTEFTVCwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbiBcdFx0aWYgKCFyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIHRvcCwgXHUwMDI2c3VtbWFyeSkpIHtcbiBcdFx0XHRyeHJwY19wcm90b19hYm9ydChjYWxsLCB0b3AsIHJ4cnBjX2Vwcm90b19lYXJseV9yZXBseSk7XG5AQCAtNjk0LDYgJiM0Mzs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuJiM0MztcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiBcdFx0LyogUmVjZWl2ZWQgZGF0YSBpbXBsaWNpdGx5IEFDS3MgYWxsIG9mIHRoZSByZXF1ZXN0XG4gXHRcdCAqIHBhY2tldHMgd2Ugc2VudCB3aGVuIHdlJiMzOTtyZSBhY3RpbmcgYXMgYSBjbGllbnQuXG5AQCAtMTE1NCwxMCAmIzQzOzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKGhhcmRfYWNrICYjNDM7IDEgPT0gMClcbiBcdFx0cmV0dXJuIHJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIDAsIHJ4cnBjX2Vwcm90b19hY2tyX3plcm8pO1xuIFxuLVx0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSBvciBoYXZlIGp1c3QgYmVlbiB0cmFuc21pdHRpbmcuICovXG4mIzQzO1x0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSB0cmFuc21pdHRpbmcgb3IgYXJlIHdhaXRpbmcgZm9yXG4mIzQzO1x0ICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJiMzOTt2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLlxuJiM0MztcdCAqL1xuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiYjNDM7XHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuIFx0XHRicmVhaztcbkBAIC0xMjE1LDcgJiM0MzsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9O1xuIFxuLVx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cdTAwM2V0eF90b3AsIFx1MDAyNnN1bW1hcnkpKVxuJiM0MztcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6XG4mIzQzO1x0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxuJiM0MztcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIGNhbGwtXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFx1MDAyNnN1bW1hcnkpKVxuIFx0XHRyeHJwY19lbmRfdHhfcGhhc2UoY2FsbCwgZmFsc2UsIHJ4cnBjX2Vwcm90b191bmV4cGVjdGVkX2Fja2FsbCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9vb2IuYyBiL25ldC9yeHJwYy9vb2IuY1xuaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvb29iLmNcbkBAIC0zMiwxMSAmIzQzOzMyLDEyIEBAIHN0cnVjdCByeHJwY19vb2JfcGFyYW1zIHtcbiAgKiBQb3N0IGFuIG91dC1vZi1iYW5kIG1lc3NhZ2UgZm9yIGF0dGVudGlvbiBieSB0aGUgc29ja2V0IG9yIGtlcm5lbCBzZXJ2aWNlXG4gICogYXNzb2NpYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGNhbGwuXG4gICovXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7Ym9vbCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7XG4gXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4mIzQzO1x0Ym9vbCBxdWV1ZWQgPSBmYWxzZTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbkBAIC00OSw2ICYjNDM7NTAsNyBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdHNrYi1cdTAwM2Vza2JfbXN0YW1wX25zID0gcngtXHUwMDNlb29iX2lkX2NvdW50ZXImIzQzOyYjNDM7O1xuIFx0XHRcdHJ4cnBjX2dldF9za2Ioc2tiLCByeHJwY19za2JfZ2V0X3Bvc3Rfb29iKTtcbiBcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEsIHNrYik7XG4mIzQzO1x0XHRcdHF1ZXVlZCA9IHRydWU7XG4gXG4gXHRcdFx0dHJhY2VfcnhycGNfbm90aWZ5X3NvY2tldChjYWxsLVx1MDAzZWRlYnVnX2lkLCBzcC1cdTAwM2VoZHIuc2VyaWFsKTtcbiBcdFx0XHRpZiAocngtXHUwMDNlYXBwX29wcylcbkBAIC01NiwxMSAmIzQzOzU4LDEyIEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfbG9jayk7XG4tXHRcdGlmICghcngtXHUwMDNlYXBwX29wcyBcdTAwMjZcdTAwMjYgIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcbiYjNDM7XHRcdGlmIChxdWV1ZWQgXHUwMDI2XHUwMDI2ICFyeC1cdTAwM2VhcHBfb3BzIFx1MDAyNlx1MDAyNiAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKVxuIFx0XHRcdHNrLVx1MDAzZXNrX2RhdGFfcmVhZHkoc2spO1xuIFx0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0cmV0dXJuIHF1ZXVlZDtcbiB9XG4gXG4gLypcbkBAIC0yMTAsNiAmIzQzOzIxMywxMSBAQCBzdGF0aWMgaW50IHJ4cnBjX3Jlc3BvbmRfdG9fb29iKHN0cnVjdCByeHJwY19zb2NrICpyeCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0c3dpdGNoIChza2ItXHUwMDNlbWFyaykge1xuJiM0MztcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcbiYjNDM7XHRcdHJ4cnBjX3B1dF9jb25uZWN0aW9uKHNwLVx1MDAzZWNoYWxsLmNvbm4sIHJ4cnBjX2Nvbm5fcHV0X29vYik7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4gXHRyeHJwY19mcmVlX3NrYihza2IsIHJ4cnBjX3NrYl9wdXRfb29iKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9yZWN2bXNnLmMgYi9uZXQvcnhycGMvcmVjdm1zZy5jXG5pbmRleCA4MjYxNGNiZGI2MGY1ZS4uZWZjYmE0YjJlNzRmMGMgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvcmVjdm1zZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcmVjdm1zZy5jXG5AQCAtMjcsOCAmIzQzOzI3LDYgQEAgdm9pZCByeHJwY19ub3RpZnlfc29ja2V0KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0X2VudGVyKFwmIzM0OyVkXCYjMzQ7LCBjYWxsLVx1MDAzZWRlYnVnX2lkKTtcbiBcbi1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZjYWxsLVx1MDAzZXJlY3Ztc2dfbGluaykpXG4tXHRcdHJldHVybjtcbiBcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9ub3RpZnlfcmVsZWFzZWQpO1xuIFx0XHRyZXR1cm47XG5AQCAtNDM4LDcgJiM0Mzs0MzYsOCBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRcdHJldHVybiAtRUFHQUlOO1xuIFx0fVxuIFxuLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2cngtXHUwMDNlcmVjdm1zZ19xKSkge1xuJiM0MztcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzcyhcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEpKSB7XG4gXHRcdHJldCA9IC1FV09VTERCTE9DSztcbiBcdFx0aWYgKHRpbWVvID09IDApIHtcbiBcdFx0XHRjYWxsID0gTlVMTDtcbkBAIC00NzEsNyAmIzQzOzQ3MCw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbiBcdFx0cmVsZWFzZV9zb2NrKFx1MDAyNnJ4LVx1MDAzZXNrKTtcbiBcdFx0aWYgKHJldCA9PSAtRUFHQUlOKVxuIFx0XHRcdGdvdG8gdHJ5X2FnYWluO1xuLVx0XHRnb3RvIGVycm9yX25vX2NhbGw7XG4mIzQzO1x0XHRnb3RvIGVycm9yX3RyYWNlO1xuIFx0fVxuIFxuIFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJiMzOTtyZSBub3QganVzdCBwZWVraW5nLiAgSWYgd2VcbkBAIC01MzAsOCAmIzQzOzUyOSw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbiBcdGlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCBcdTAwMjZjYWxsLVx1MDAzZWZsYWdzKSkge1xuIFx0XHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNhbGwtXHUwMDNldXNlcl9tdXRleCk7XG4tXHRcdGlmICghKGZsYWdzIFx1MDAyNiBNU0dfUEVFSykpXG4tXHRcdFx0cnhycGNfcHV0X2NhbGwoY2FsbCwgcnhycGNfY2FsbF9wdXRfcmVjdm1zZyk7XG4mIzQzO1x0XHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcbiBcdFx0Z290byB0cnlfYWdhaW47XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGMzNWRlNGZkNzVlMzExLi5lZDJjOWE1MTAwNWFkZSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbkBAIC0zNjYsNyAmIzQzOzM2Niw4IEBAIHN0YXRpYyBpbnQgcnhycGNfc2VuZF9kYXRhKHN0cnVjdCByeHJwY19zb2NrICpyeCxcbiBcdGlmIChzdGF0ZSBcdTAwM2U9IFJYUlBDX0NBTExfQ09NUExFVEUpXG4gXHRcdGdvdG8gbWF5YmVfZXJyb3I7XG4gXHRyZXQgPSAtRVBST1RPO1xuLVx0aWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZKSB7XG4gXHRcdC8qIFJlcXVlc3QgcGhhc2UgY29tcGxldGUgZm9yIHRoaXMgY2xpZW50IGNhbGwgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7QUZfUlhSUEMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyeHJwY19ub3RpZnlfc29ja2V0X29vYiYjMzQ7LAogICAgJiMzNDtyeHJwY19wb3N0X2NoYWxsZW5nZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZXNwb25kX3RvX29vYiYjMzQ7LAogICAgJiMzNDthZnNfcnhfbm90aWZ5X29vYiYjMzQ7LAogICAgJiMzNDthZnNfcHJvY2Vzc19vb2JfcXVldWUmIzM0OywKICAgICYjMzQ7YWZzX2Nsb3NlX3NvY2tldCYjMzQ7LAogICAgJiMzNDtyeHJwY19jbG9zZV90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19lbmRfdHhfcGhhc2UmIzM0OywKICAgICYjMzQ7cnhycGNfcmVjZWl2aW5nX3JlcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2U1NTU1NmQyMTc4MzUxOTVmMmNiOWRkYjBhYzk1NDNkMWNkZjRjNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvYWZzL2NtX3NlY3VyaXR5LmMgYi9mcy9hZnMvY21fc2VjdXJpdHkuYwppbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9jbV9zZWN1cml0eS5jCkBAIC0xMDEsNyAmIzQzOzEwMSw4IEBAIHZvaWQgYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3Qgc2tfYnVmZiAqb29iOwogCWVudW0gcnhycGNfb29iX3R5cGUgdHlwZTsKIAotCXdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC0mZ3Q7c29ja2V0LCAmYW1wO3R5cGUpKSkgewomIzQzOwl3aGlsZSAoUkVBRF9PTkNFKG5ldC0mZ3Q7bGl2ZSkgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtJmd0O3NvY2tldCwgJmFtcDt0eXBlKSkpIHsKIAkJc3dpdGNoICh0eXBlKSB7CiAJCWNhc2UgUlhSUENfT09CX0NIQUxMRU5HRToKIAkJCWFmc19yZXNwb25kX3RvX2NoYWxsZW5nZShvb2IpOwpkaWZmIC0tZ2l0IGEvZnMvYWZzL3J4cnBjLmMgYi9mcy9hZnMvcnhycGMuYwppbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0Ci0tLSBhL2ZzL2Fmcy9yeHJwYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Fmcy9yeHJwYy5jCkBAIC0xMjgsOCAmIzQzOzEyOCwxNCBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldCkKIAlfZW50ZXIoJiMzNDsmIzM0Oyk7CiAKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7bmV0LSZndDtjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTsKJiM0MzsJY2FuY2VsX3dvcmtfc3luYygmYW1wO25ldC0mZ3Q7cnhfb29iX3dvcmspOwomIzQzOwkvKiBGdXR1cmUgd29yayBpdGVtcyBzaG91bGQgbm93IHNlZSAtJmd0O2xpdmUgaXMgZmFsc2UuICovCiYjNDM7CiAJa2VybmVsX2xpc3RlbihuZXQtJmd0O3NvY2tldCwgMCk7CiYjNDM7CiYjNDM7CS8qIE1ha2Ugc3VyZSB3b3JrIGl0ZW1zIGFyZSBubyBsb25nZXIgcnVubmluZy4gKi8KIAlmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTsKJiM0MzsJY2FuY2VsX3dvcmtfc3luYygmYW1wO25ldC0mZ3Q7Y2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7CiAKIAlpZiAobmV0LSZndDtzcGFyZV9pbmNvbWluZ19jYWxsKSB7CiAJCWFmc19wdXRfY2FsbChuZXQtJmd0O3NwYXJlX2luY29taW5nX2NhbGwpOwpAQCAtMTQzLDYgJiM0MzsxNDksNyBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldCkKIAogCWtlcm5lbF9zb2NrX3NodXRkb3duKG5ldC0mZ3Q7c29ja2V0LCBTSFVUX1JEV1IpOwogCWZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7bmV0LSZndDtyeF9vb2Jfd29yayk7CiAJbmV0LSZndDtzb2NrZXQtJmd0O3NrLSZndDtza191c2VyX2RhdGEgPSBOVUxMOwogCXNvY2tfcmVsZWFzZShuZXQtJmd0O3NvY2tldCk7CiAJa2V5X3B1dChuZXQtJmd0O2ZzX2NtX3Rva2VuX2tleSk7CkBAIC05ODQsNSAmIzQzOzk5MSw2IEBAIHN0YXRpYyB2b2lkIGFmc19yeF9ub3RpZnlfb29iKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKm9vYikKIHsKIAlzdHJ1Y3QgYWZzX25ldCAqbmV0ID0gc2stJmd0O3NrX3VzZXJfZGF0YTsKIAotCXNjaGVkdWxlX3dvcmsoJmFtcDtuZXQtJmd0O3J4X29vYl93b3JrKTsKJiM0MzsJaWYgKFJFQURfT05DRShuZXQtJmd0O2xpdmUpKQomIzQzOwkJcXVldWVfd29yayhhZnNfd3EsICZhbXA7bmV0LSZndDtyeF9vb2Jfd29yayk7CiB9CmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYXItaW50ZXJuYWwuaCBiL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oCmluZGV4IDU4MDJmNmY3ODcyM2JjLi5jZTk0NmIwYTAzZTJiMyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmgKQEAgLTY2OSw3ICYjNDM7NjY5LDkgQEAgZW51bSByeHJwY19jYWxsX2V2ZW50IHsKIGVudW0gcnhycGNfY2FsbF9zdGF0ZSB7CiAJUlhSUENfQ0FMTF9VTklOSVRJQUxJU0VELAogCVJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk4sCS8qIC0gY2xpZW50IHdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZSAqLwomIzQzOwlSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCwJLyogLSBjbGllbnQgaXMgY29ubmVjdGVkLCBidXQgaGFzbiYjMzk7dCBzZW50IGFueXRoaW5nIHlldCAqLwogCVJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCwJLyogLSBjbGllbnQgc2VuZGluZyByZXF1ZXN0IHBoYXNlICovCiYjNDM7CVJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSywJLyogLSBjbGllbnQgYXdhaXRpbmcgQUNLcyBvZiByZXF1ZXN0ICovCiAJUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFksCS8qIC0gY2xpZW50IGF3YWl0aW5nIHJlcGx5ICovCiAJUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSwJLyogLSBjbGllbnQgcmVjZWl2aW5nIHJlcGx5IHBoYXNlICovCiAJUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0MsCS8qIC0gc2VydmljZSBwcmVhbGxvY2F0aW9uICovCkBAIC0xMzc0LDkgJiM0MzsxMzc2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcnhycGNfbmV0ICpyeHJwY19uZXQoc3RydWN0IG5ldCAqbmV0KQogfQogCiAvKgotICogb3V0X29mX2JhbmQuYwomIzQzOyAqIG9vYi5jCiAgKi8KLXZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpOwomIzQzO2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpOwogdm9pZCByeHJwY19hZGRfcGVuZGluZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIGludCByeHJwY19zZW5kbXNnX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbik7CiAKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmMgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jCmluZGV4IGZlYzU5ZDkzMzhiOWZiLi4yMWJlOWM4NmQ3YTc0ZiAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jCkBAIC0xNzgsNyAmIzQzOzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCiAJc3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHsKIAljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDoKLQkJcnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFkpOwomIzQzOwkJcnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLKTsKIAkJYnJlYWs7CiAJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOgogCQlyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0spOwpAQCAtMjQ0LDYgJiM0MzsyNDQsOCBAQCBzdGF0aWMgdm9pZCByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaQogCQkJCWJyZWFrOwogCQl9IHdoaWxlIChyZXEubiAmbHQ7IGxpbWl0ICZhbXA7JmFtcDsgYmVmb3JlKHNlcSwgc2VuZF90b3ApKTsKIAomIzQzOwkJaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCkKJiM0MzsJCQlyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpOwogCQlpZiAodHhiLSZndDtmbGFncyAmYW1wOyBSWFJQQ19MQVNUX1BBQ0tFVCkgewogCQkJcnhycGNfY2xvc2VfdHhfcGhhc2UoY2FsbCk7CiAJCQl0cSA9IE5VTEw7CkBAIC0yNjcsNiAmIzQzOzI2OSw3IEBAIHZvaWQgcnhycGNfdHJhbnNtaXRfc29tZV9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaXQsCiAJCWZhbGx0aHJvdWdoOwogCiAJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOgomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOgogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgogCQlpZiAoIXJ4cnBjX3R4X3dpbmRvd19zcGFjZShjYWxsKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX29iamVjdC5jIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmMKaW5kZXggZmNiOWQzOGJiNTIxNGEuLjgxN2VkOWFjYjkxZTYxIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY2FsbF9vYmplY3QuYwpAQCAtMTgsNyAmIzQzOzE4LDkgQEAKIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7CiAJW1JYUlBDX0NBTExfVU5JTklUSUFMSVNFRF0JCT0gJiMzNDtVbmluaXQgICYjMzQ7LAogCVtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OXQkJPSAmIzM0O0NsV3RDb25uJiMzNDssCiYjNDM7CVtSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORF0JCT0gJiMzNDtDbFByZVNuZCYjMzQ7LAogCVtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdCT0gJiMzNDtDbFNuZFJlcSYjMzQ7LAomIzQzOwlbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLXQkJPSAmIzM0O0NsQXd0QWNrJiMzNDssCiAJW1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXQkJPSAmIzM0O0NsQXd0UnBsJiMzNDssCiAJW1JYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFldCQk9ICYjMzQ7Q2xSY3ZScGwmIzM0OywKIAlbUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0NdCQk9ICYjMzQ7U3ZQcmVhbGMmIzM0OywKZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmMKaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NAotLS0gYS9uZXQvcnhycGMvY29ubl9jbGllbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuYwpAQCAtNDQ5LDcgJiM0Mzs0NDksNyBAQCBzdGF0aWMgdm9pZCByeHJwY19hY3RpdmF0ZV9vbmVfY2hhbm5lbChzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubiwKIAl0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7CiAJY2FsbC0mZ3Q7dHhfbGFzdF9zZW50ID0ga3RpbWVfZ2V0X3JlYWwoKTsKIAlyeHJwY19zdGFydF9jYWxsX3RpbWVyKGNhbGwpOwotCXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7CiYjNDM7CXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKTsKIAl3YWtlX3VwKCZhbXA7Y2FsbC0mZ3Q7d2FpdHEpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuYwppbmRleCBjOTZjYTYxNWI3ODdjNi4uNjExYzc5MGJjNmQwY2UgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9jb25uX2V2ZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuYwpAQCAtNDM2LDcgJiM0Mzs0MzYsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubiwKIAlzdHJ1Y3QgcnhycGNfc2tiX3ByaXYgKnNwID0gcnhycGNfc2tiKHNrYik7CiAJc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwgPSBOVUxMOwogCXN0cnVjdCByeHJwY19zb2NrICpyeDsKLQlib29sIHJlc3BvbmQgPSBmYWxzZTsKJiM0MzsJYm9vbCByZXNwb25kID0gZmFsc2UsIHF1ZXVlZCA9IGZhbHNlOwogCiAJc3AtJmd0O2NoYWxsLmNvbm4gPQogCQlyeHJwY19nZXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX2dldF9jaGFsbGVuZ2VfaW5wdXQpOwpAQCAtNDcyLDggJiM0Mzs0NzIsMTMgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sCiAJfQogCiAJaWYgKGNhbGwpCi0JCXJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKGNhbGwsIHNrYik7CiYjNDM7CQlxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpOwogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlpZiAoY2FsbCAmYW1wOyZhbXA7ICFxdWV1ZWQpIHsKJiM0MzsJCXJ4cnBjX3B1dF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fcHV0X2NoYWxsZW5nZV9pbnB1dCk7CiYjNDM7CQlzcC0mZ3Q7Y2hhbGwuY29ubiA9IE5VTEw7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmICghY2FsbCkKIAkJcnhycGNfcG9zdF9wYWNrZXRfdG9fY29ubihjb25uLCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuYwppbmRleCBjZTc2MTQ2NmIwMmQ2MS4uNzNjYWZlNmJmYTlmNTQgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9pbnB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9pbnB1dC5jCkBAIC0xODEsNyAmIzQzOzE4MSw4IEBAIHZvaWQgcnhycGNfY29uZ2VzdGlvbl9kZWdyYWRlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCWlmIChjYWxsLSZndDtjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX1NMT1dfU1RBUlQgJmFtcDsmYW1wOwogCSAgICBjYWxsLSZndDtjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX0NPTkdFU1RfQVZPSURBTkNFKQogCQlyZXR1cm47Ci0JaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSkKJiM0MzsJaWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHwKJiM0MzsJICAgIF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSkKIAkJcmV0dXJuOwogCiAJcnR0ID0gbnNfdG9fa3RpbWUoY2FsbC0mZ3Q7c3J0dF91cyAqIChOU0VDX1BFUl9VU0VDIC8gOCkpOwpAQCAtMjM2LDYgJiM0MzsyMzcsOSBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0bywKIAkJY2FsbC0mZ3Q7YWNrc19sb3dlc3RfbmFrID0gdG87CiAJfQogCiYjNDM7CWlmIChhZnRlcihzZXEsIHRvKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKIAkvKiBXZSBtYXkgaGF2ZSBhIGxlZnQgb3ZlciBmdWxseS1jb25zdW1lZCBidWZmZXIgYXQgdGhlIGZyb250IHRoYXQgd2UKIAkgKiBjb3VsZG4mIzM5O3QgZHJvcCBiZWZvcmUgKHJvdGF0ZV9hbmRfa2VlcCBiZWxvdykuCiAJICovCkBAIC0yNDcsNyAmIzQzOzI1MSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLAogCQl0cSA9IGNhbGwtJmd0O3R4X3F1ZXVlOwogCX0KIAotCWRvIHsKJiM0MzsJd2hpbGUgKGJlZm9yZV9lcShzZXEsIHRvKSkgewogCQl1bnNpZ25lZCBpbnQgaXggPSBzZXEgLSBjYWxsLSZndDt0eF9xYmFzZTsKIAogCQlfZGVidWcoJiMzNDt0cT0leCBzZXE9JXggaT0lZCBmPSV4JiMzNDssIHRxLSZndDtxYmFzZSwgc2VxLCBpeCwgdHEtJmd0O2J1ZnNbaXhdLSZndDtmbGFncyk7CkBAIC0zMTcsOCAmIzQzOzMyMSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLAogCQkJCWJyZWFrOwogCQkJfQogCQl9Ci0KLQl9IHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpOwomIzQzOwl9CiAKIAlpZiAodHJhY2UpCiAJCXRyYWNlX3J4cnBjX3JhY2tfdXBkYXRlKGNhbGwsIHN1bW1hcnkpOwpAQCAtMzU2LDYgJiM0MzszNTksNyBAQCBzdGF0aWMgdm9pZCByeHJwY19lbmRfdHhfcGhhc2Uoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIGJvb2wgcmVwbHlfYmVndW4sCiAKIAlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzoKIAljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOgogCQlpZiAocmVwbHlfYmVndW4pIHsKIAkJCXJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFkpOwpAQCAtMzkyLDYgJiM0MzszOTYsMTQgQEAgc3RhdGljIGJvb2wgcnhycGNfcmVjZWl2aW5nX3JlcGx5KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKQogCQl0cmFjZV9yeHJwY190aW1lcl9jYW4oY2FsbCwgcnhycGNfdGltZXJfdHJhY2VfZGVsYXllZF9hY2spOwogCX0KIAomIzQzOwkvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSYjMzk7dmUgZ290IHRoZSByZXF1ZXN0CiYjNDM7CSAqIHF1ZXVlZCBvciB0cmFuc21pdHRlZC4KJiM0MzsJICovCiYjNDM7CWlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9FWFBPU0VELCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewomIzQzOwkJcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiAJaWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX0xBU1QsICZhbXA7Y2FsbC0mZ3Q7ZmxhZ3MpKSB7CiAJCWlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsICZhbXA7c3VtbWFyeSkpIHsKIAkJCXJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIHRvcCwgcnhycGNfZXByb3RvX2Vhcmx5X3JlcGx5KTsKQEAgLTY5NCw2ICYjNDM7NzA2LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCXN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7CiAJY2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOgogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6CiAJCS8qIFJlY2VpdmVkIGRhdGEgaW1wbGljaXRseSBBQ0tzIGFsbCBvZiB0aGUgcmVxdWVzdAogCQkgKiBwYWNrZXRzIHdlIHNlbnQgd2hlbiB3ZSYjMzk7cmUgYWN0aW5nIGFzIGEgY2xpZW50LgpAQCAtMTE1NCwxMCAmIzQzOzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChoYXJkX2FjayAmIzQzOyAxID09IDApCiAJCXJldHVybiByeHJwY19wcm90b19hYm9ydChjYWxsLCAwLCByeHJwY19lcHJvdG9fYWNrcl96ZXJvKTsKIAotCS8qIElnbm9yZSBBQ0tzIHVubGVzcyB3ZSBhcmUgb3IgaGF2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLiAqLwomIzQzOwkvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIHRyYW5zbWl0dGluZyBvciBhcmUgd2FpdGluZyBmb3IKJiM0MzsJICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJiMzOTt2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLgomIzQzOwkgKi8KIAlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewogCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOgotCWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOgogCWNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWToKIAljYXNlIFJYUlBDX0NBTExfU0VSVkVSX0FXQUlUX0FDSzoKIAkJYnJlYWs7CkBAIC0xMjE1LDcgJiM0MzsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9OwogCi0JaWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC0mZ3Q7dHhfdG9wLCAmYW1wO3N1bW1hcnkpKQomIzQzOwlzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkgewomIzQzOwljYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDoKJiM0MzsJY2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6CiYjNDM7CWNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWToKJiM0MzsJY2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0s6CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCBjYWxsLSZndDt0eF90cmFuc21pdHRlZCwgJmFtcDtzdW1tYXJ5KSkKIAkJcnhycGNfZW5kX3R4X3BoYXNlKGNhbGwsIGZhbHNlLCByeHJwY19lcHJvdG9fdW5leHBlY3RlZF9hY2thbGwpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvb29iLmMgYi9uZXQvcnhycGMvb29iLmMKaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvb29iLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3J4cnBjL29vYi5jCkBAIC0zMiwxMSAmIzQzOzMyLDEyIEBAIHN0cnVjdCByeHJwY19vb2JfcGFyYW1zIHsKICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2UKICAqIGFzc29jaWF0ZWQgd2l0aCBhIHJlZmVyZW5jZSBjYWxsLgogICovCi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHJ4cnBjX3NrYl9wcml2ICpzcCA9IHJ4cnBjX3NrYihza2IpOwogCXN0cnVjdCByeHJwY19zb2NrICpyeDsKIAlzdHJ1Y3Qgc29jayAqc2s7CiYjNDM7CWJvb2wgcXVldWVkID0gZmFsc2U7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAKQEAgLTQ5LDYgJiM0Mzs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpCiAJCQlza2ItJmd0O3NrYl9tc3RhbXBfbnMgPSByeC0mZ3Q7b29iX2lkX2NvdW50ZXImIzQzOyYjNDM7OwogCQkJcnhycGNfZ2V0X3NrYihza2IsIHJ4cnBjX3NrYl9nZXRfcG9zdF9vb2IpOwogCQkJc2tiX3F1ZXVlX3RhaWwoJmFtcDtyeC0mZ3Q7cmVjdm1zZ19vb2JxLCBza2IpOwomIzQzOwkJCXF1ZXVlZCA9IHRydWU7CiAKIAkJCXRyYWNlX3J4cnBjX25vdGlmeV9zb2NrZXQoY2FsbC0mZ3Q7ZGVidWdfaWQsIHNwLSZndDtoZHIuc2VyaWFsKTsKIAkJCWlmIChyeC0mZ3Q7YXBwX29wcykKQEAgLTU2LDExICYjNDM7NTgsMTIgQEAgdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJfQogCiAJCXNwaW5fdW5sb2NrX2lycSgmYW1wO3J4LSZndDtyZWN2bXNnX2xvY2spOwotCQlpZiAoIXJ4LSZndDthcHBfb3BzICZhbXA7JmFtcDsgIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkKJiM0MzsJCWlmIChxdWV1ZWQgJmFtcDsmYW1wOyAhcngtJmd0O2FwcF9vcHMgJmFtcDsmYW1wOyAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKQogCQkJc2stJmd0O3NrX2RhdGFfcmVhZHkoc2spOwogCX0KIAogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlyZXR1cm4gcXVldWVkOwogfQogCiAvKgpAQCAtMjEwLDYgJiM0MzsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlzd2l0Y2ggKHNrYi0mZ3Q7bWFyaykgewomIzQzOwljYXNlIFJYUlBDX09PQl9DSEFMTEVOR0U6CiYjNDM7CQlyeHJwY19wdXRfY29ubmVjdGlvbihzcC0mZ3Q7Y2hhbGwuY29ubiwgcnhycGNfY29ubl9wdXRfb29iKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiAJcnhycGNfZnJlZV9za2Ioc2tiLCByeHJwY19za2JfcHV0X29vYik7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9yZWN2bXNnLmMgYi9uZXQvcnhycGMvcmVjdm1zZy5jCmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDQKLS0tIGEvbmV0L3J4cnBjL3JlY3Ztc2cuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcnhycGMvcmVjdm1zZy5jCkBAIC0yNyw4ICYjNDM7MjcsNiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXQoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpCiAKIAlfZW50ZXIoJiMzNDslZCYjMzQ7LCBjYWxsLSZndDtkZWJ1Z19pZCk7CiAKLQlpZiAoIWxpc3RfZW1wdHkoJmFtcDtjYWxsLSZndDtyZWN2bXNnX2xpbmspKQotCQlyZXR1cm47CiAJaWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsICZhbXA7Y2FsbC0mZ3Q7ZmxhZ3MpKSB7CiAJCXJ4cnBjX3NlZV9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfc2VlX25vdGlmeV9yZWxlYXNlZCk7CiAJCXJldHVybjsKQEAgLTQzOCw3ICYjNDM7NDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLAogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKLQlpZiAobGlzdF9lbXB0eSgmYW1wO3J4LSZndDtyZWN2bXNnX3EpKSB7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7cngtJmd0O3JlY3Ztc2dfcSkgJmFtcDsmYW1wOwomIzQzOwkgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZhbXA7cngtJmd0O3JlY3Ztc2dfb29icSkpIHsKIAkJcmV0ID0gLUVXT1VMREJMT0NLOwogCQlpZiAodGltZW8gPT0gMCkgewogCQkJY2FsbCA9IE5VTEw7CkBAIC00NzEsNyAmIzQzOzQ3MCw3IEBAIGludCByeHJwY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbiwKIAkJcmVsZWFzZV9zb2NrKCZhbXA7cngtJmd0O3NrKTsKIAkJaWYgKHJldCA9PSAtRUFHQUlOKQogCQkJZ290byB0cnlfYWdhaW47Ci0JCWdvdG8gZXJyb3Jfbm9fY2FsbDsKJiM0MzsJCWdvdG8gZXJyb3JfdHJhY2U7CiAJfQogCiAJLyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJiMzOTtyZSBub3QganVzdCBwZWVraW5nLiAgSWYgd2UKQEAgLTUzMCw4ICYjNDM7NTI5LDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLAogCWlmICh0ZXN0X2JpdChSWFJQQ19DQUxMX1JFTEVBU0VELCAmYW1wO2NhbGwtJmd0O2ZsYWdzKSkgewogCQlyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y2FsbC0mZ3Q7dXNlcl9tdXRleCk7Ci0JCWlmICghKGZsYWdzICZhbXA7IE1TR19QRUVLKSkKLQkJCXJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpOwomIzQzOwkJcnhycGNfcHV0X2NhbGwoY2FsbCwgcnhycGNfY2FsbF9wdXRfcmVjdm1zZyk7CiAJCWdvdG8gdHJ5X2FnYWluOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKaW5kZXggYzM1ZGU0ZmQ3NWUzMTEuLmVkMmM5YTUxMDA1YWRlIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvc2VuZG1zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yeHJwYy9zZW5kbXNnLmMKQEAgLTM2Niw3ICYjNDM7MzY2LDggQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LAogCWlmIChzdGF0ZSAmZ3Q7PSBSWFJQQ19DQUxMX0NPTVBMRVRFKQogCQlnb3RvIG1heWJlX2Vycm9yOwogCXJldCA9IC1FUFJPVE87Ci0JaWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCAmYW1wOyZhbXA7CiYjNDM7CWlmIChzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCAmYW1wOyZhbXA7CiYjNDM7CSAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QgJmFtcDsmYW1wOwogCSAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCAmYW1wOyZhbXA7CiAJICAgIHN0YXRlICE9IFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFkpIHsKIAkJLyogUmVxdWVzdCBwaGFzZSBjb21wbGV0ZSBmb3IgdGhpcyBjbGllbnQgY2FsbCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTkxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBBRlMvUlhSUEMgU3Vic3lzdGVtcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYm90aCB0aGUgQUZTIGZpbGVzeXN0ZW0gY29kZSBhbmQgdGhlIFJYUlBDIG5ldHdvcmsgcHJvdG9jb2wgY29kZS4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBnaXZlbiB0aGUgYnJlYWR0aCBvZiB0aGUgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0aG9yb3VnaGx5LgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDoKCiogICAqKkFGUyBTZWN1cml0eToqKiBUaGUgYGZzL2Fmcy9jbV9zZWN1cml0eS5jYCBmaWxlIGhhcyBhIG5ldyBgUkVBRF9PTkNFKG5ldC0mZ3Q7bGl2ZSlgIGNoZWNrLiBUaGlzIHN1Z2dlc3RzIGFuIGFkZGVkIHNhZmV0eSBtZWNoYW5pc20sIHBlcmhhcHMgcmVsYXRlZCB0byBuZXR3b3JrIGxpdmVsaW5lc3Mgb3IgY29ubmVjdGlvbiB2YWxpZGl0eSB3aXRoaW4gQUZTLgoqICAgKipSWFJQQyBPT0IgSGFuZGxpbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIFJYUlBDJiMzOTtzIE9PQiAoT3V0LW9mLUJhbmQpIGhhbmRsaW5nLiBgZnMvYWZzL3J4cnBjLmNgIGhhcyBhIGBjYW5jZWxfd29ya19zeW5jYCBjYWxsLiBUaGUgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2VzIGFyZSBpbiB0aGUgUlhSUEMgY29kZSBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0YXRlIG1hbmFnZW1lbnQgYW5kIE9PQiBjaGFsbGVuZ2UgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgYG5ldC9yeHJwYy9vb2IuY2AgaGFzIGNoYW5nZXMgYW5kIGByeHJwY19yZXNwb25kX3RvX29vYmAgaXMgbm93IGhhbmRsaW5nIGBSWFJQQ19PT0JfQ0hBTExFTkdFYCB0byBwdXQgY29ubmVjdGlvbiBpbnRvIHN0YXRlLgoqICAgKipSWFJQQyBTdGF0ZSBUcmFuc2l0aW9uczoqKiBBIHNpZ25pZmljYW50IGNodW5rIG9mIHRoaXMgcmVsYXRlcyB0byBSWFJQQyYjMzk7cyBzdGF0ZSBtYWNoaW5lLiBJIHNlZSBuZXcgc3RhdGVzLCBgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkRgIGFuZCBgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLYCBhZGRlZCB0byB0aGUgYHJ4cnBjX2NhbGxfc3RhdGVgIGVudW0uIFRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBpbiBgY2FsbF9ldmVudC5jYCwgYGNvbm5fY2xpZW50LmNgLCBhbmQgYGlucHV0LmNgIGFyZSBhbGwgdXBkYXRlZCB0byByZWZsZWN0IHRoZXNlIG5ldyBzdGF0ZXMuIFRoZSBhZGRpdGlvbiBvZiBzdGF0ZSBuYW1lcyBpbiBgY2FsbF9vYmplY3QuY2AgaXMgaW1wb3J0YW50IGZvciBkZWJ1Z2dpbmcgYW5kIGNsYXJpdHkuCiogICAqKk9PQiBhbmQgUmVjdi9TZW5kOioqIGBjb25uX2V2ZW50LmNgJiMzOTtzIGByeHJwY19wb3N0X2NoYWxsZW5nZWAgbm93IGNoZWNrcyB0aGUgcXVldWVkIGBza2JgLiBUaGUgYHJlY3Ztc2dgIGNvZGUgaW4gYG5ldC9yeHJwYy9yZWN2bXNnLmNgIGhhcyB0d2Vha3MgdG8gcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGBsaXN0X2VtcHR5YCBjaGVjayBhbmQgYW4gYWRkaXRpb24gb2YgYSBgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzYCBjaGVjay4gRmluYWxseSwgYHNlbmRtc2cuY2AgaW4gYG5ldC9yeHJwYy9zZW5kbXNnLmNgIG5vdyBpbmNsdWRlcyBhIGBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORGAgY2hlY2sgaW4gYHJ4cnBjX3NlbmRfZGF0YWAuCgpPdmVyYWxsLCB0aGlzIGlzIGEgZmFpciBhbW91bnQgb2YgY2h1cm4gaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGVzZSBjaGFuZ2VzIHByb2JhYmx5IGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBiZWNhdXNlIEkgc2VlIGNoYW5nZXMgaW4gdGhlIG91dCBvZiBiYW5kIGhhbmRsaW5nLgoKR2l2ZW4gdGhlIHNjb3BlIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIGZ1enppbmcuIEkgaGF2ZSB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiB0aGUgZmlsZSBwYXRocywgSSYjMzk7ZCBzYXkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgQ09ORklHX0FGU19GU2AgZm9yIHRoZSBBRlMgY2hhbmdlcyBhbmQgYENPTkZJR19BRl9SWFJQQ2AgZm9yIHRoZSBSWFJQQyBjaGFuZ2VzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvcnhycGMvS2NvbmZpZ2AgYW5kIGBmcy9hZnMvS2NvbmZpZ2AgdG8gY29uZmlybSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xuZnMvYWZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXCYjMzQ7XG4tLVxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xuLS1cbmZzL2Fmcy9LY29uZmlnLTI2LVxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXG5mcy9hZnMvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7UHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSeFJQQyBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBSeFJQQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbG1vc3QgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0sIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQuIFNvLCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNyYWNrIG9wZW4gYG5ldC9yeHJwYy9LY29uZmlnYCBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiYjMzQ7IFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGtub2JzIGFuZCBsZXZlcnMgYXZhaWxhYmxlIGZvciBSeFJQQy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgd2lkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQUZfUlhSUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcnhycGMvS2NvbmZpZy01LVxubmV0L3J4cnBjL0tjb25maWc6Njpjb25maWcgQUZfUlhSUENcbm5ldC9yeHJwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtSeFJQQyBzZXNzaW9uIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZz0yNT1pZiBBRl9SWFJQQ1xubmV0L3J4cnBjL0tjb25maWctMjYtXG5uZXQvcnhycGMvS2NvbmZpZzoyNzpjb25maWcgQUZfUlhSUENfSVBWNlxubmV0L3J4cnBjL0tjb25maWctMjgtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgUnhSUENcJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy0zMy1cbm5ldC9yeHJwYy9LY29uZmlnOjM0OmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfTE9TU1xubmV0L3J4cnBjL0tjb25maWctMzUtXHRib29sIFwmIzM0O0luamVjdCBwYWNrZXQgbG9zcyBpbnRvIFJ4UlBDIHBhY2tldCBzdHJlYW1cJiMzNDtcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy0zOS1cbm5ldC9yeHJwYy9LY29uZmlnOjQwOmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfUlhfREVMQVlcbm5ldC9yeHJwYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtJbmplY3QgZGVsYXkgaW50byBwYWNrZXQgcmVjZXB0aW9uXCYjMzQ7XG4tLVxubmV0L3J4cnBjL0tjb25maWctNDktXG5uZXQvcnhycGMvS2NvbmZpZzo1MDpjb25maWcgQUZfUlhSUENfREVCVUdcbm5ldC9yeHJwYy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtSeFJQQyBkeW5hbWljIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTg5PWNvbmZpZyBSWFBFUkZcbi0tXG5uZXQvcnhycGMvS2NvbmZpZy05NS1cbm5ldC9yeHJwYy9LY29uZmlnOjk2OmNvbmZpZyBBRl9SWFJQQ19LVU5JVF9URVNUXG5uZXQvcnhycGMvS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O1J4UlBDIGNyeXB0byBLVW5pdCB0ZXN0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTQ3CgkJCQkJCQlvdXRwdXQ6IDIyMAoJCQkJCQkJdGhvdWdodHM6IDk3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgQ2hhbmdlcyBpbiBBRlMgYW5kIFJ4UlBDIGZvciBGdXp6aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gR2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb25zIGBBRlNfRlNgIGFuZCBgQUZfUlhSUENgLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNydWNpYWwgYXJlYXMgZm9yIGZ1enppbmcgaW4gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY2hhbmdlcyB0byB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHN0YXRlIG1hY2hpbmUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gUnhSUEMuCgpJbml0aWFsbHksIEkmIzM5O2Qgbm90ZWQgYSBidW5jaCBvZiBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIGZpbHRlciB0aGUgY2FuZGlkYXRlIHN5bWJvbHMuIEkgd2FzIHRoaW5raW5nIG9mIGluY2x1ZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgbGlrZSBgcnhycGNfc2VuZF9kYXRhYCwgYHJ4cnBjX3JlY3Ztc2dgLCBgcnhycGNfaW5wdXRfZGF0YWAsIGFuZCBgcnhycGNfaW5wdXRfYWNrYCwgYnV0IHNpbmNlIHRoZXkgYXJlIG1vZGlmaWVkLCB0aGVyZSBtaWdodCBiZSB2YWx1ZS4gSXQmIzM5O3MgdG9vIG11Y2guIFRoZSBPT0IgaGFuZGxpbmcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuICBUaGVyZWZvcmUsIGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBhbmQgYGFmc19jbG9zZV9zb2NrZXRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRoYXQgSSBzZWUuCgpUaGVuIEkgY2hlY2tlZCBgcnhycGNfcm90YXRlX3R4X3dpbmRvd2AgYW5kIGByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhYC4gT25lJiMzOTtzIGNhbGxlZCBvbiBBQ0tzIGFuZCB0aGUgb3RoZXIgb24gZnJlc2ggZGF0YSwgc28gdGhleSBhcmUgc29tZXdoYXQgaG90LiBUaGUgc3RhdGUgbWFjaGluZSBjaGFuZ2VzIGFyZSBpbXBvcnRhbnQgYXMgd2VsbCwgc28gbWF5YmUgSSYjMzk7bGwgaW5jbHVkZSBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLiBUaGVzZSB3aWxsIGNhcHR1cmUgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgbWlnaHQgYmUgZGlzcnVwdGVkIGJ5IG1hbGZvcm1lZCBpbnB1dC4KCkkgdGhpbmsgdGhlIGZpbmFsIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgcnhycGNfbm90aWZ5X3NvY2tldF9vb2JgLCBgcnhycGNfcG9zdF9jaGFsbGVuZ2VgLCBgcnhycGNfcmVzcG9uZF90b19vb2JgLCBgYWZzX3J4X25vdGlmeV9vb2JgLCBgYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlYCwgYGFmc19jbG9zZV9zb2NrZXRgLCBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLgoKQmFzaWNhbGx5LCBJIHdhbnQgdG8gZW5zdXJlIHRoZSBPT0IgaW50ZXJhY3Rpb25zIGFyZSByb2J1c3QgYW5kIHRoYXQgdGhlIG5ldyBSeFJQQyBjYWxsIHN0YXRlcyAoYFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EYCwgYFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS2ApIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgZXhwbG9pdGFibGUgZmxhd3MuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbmV4dXMgb2YgY2hhbmdlcy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0FGX1JYUlBDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnhycGNfbm90aWZ5X3NvY2tldF9vb2ImIzM0OywKICAgICYjMzQ7cnhycGNfcG9zdF9jaGFsbGVuZ2UmIzM0OywKICAgICYjMzQ7cnhycGNfcmVzcG9uZF90b19vb2ImIzM0OywKICAgICYjMzQ7YWZzX3J4X25vdGlmeV9vb2ImIzM0OywKICAgICYjMzQ7YWZzX3Byb2Nlc3Nfb29iX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Fmc19jbG9zZV9zb2NrZXQmIzM0OywKICAgICYjMzQ7cnhycGNfY2xvc2VfdHhfcGhhc2UmIzM0OywKICAgICYjMzQ7cnhycGNfZW5kX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX3JlY2VpdmluZ19yZXBseSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgcnhycGMgYW5kIGFmcyBzdWJzeXN0ZW1zLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBvdXQtb2YtYmFuZCAoT09CKSBtZXNzYWdlIGhhbmRsaW5nIGFuZCB0aGUgcnhycGMgY2FsbCBzdGF0ZSBtYWNoaW5lIChhZGRpbmcgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgYW5kIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyBzdGF0ZXMpLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG5ldHdvcmsgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FGU19GUyYjMzQ7LAogICAgJiMzNDtBRl9SWFJQQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J4cnBjX25vdGlmeV9zb2NrZXRfb29iJiMzNDssCiAgICAmIzM0O3J4cnBjX3Bvc3RfY2hhbGxlbmdlJiMzNDssCiAgICAmIzM0O3J4cnBjX3Jlc3BvbmRfdG9fb29iJiMzNDssCiAgICAmIzM0O2Fmc19yeF9ub3RpZnlfb29iJiMzNDssCiAgICAmIzM0O2Fmc19wcm9jZXNzX29vYl9xdWV1ZSYjMzQ7LAogICAgJiMzNDthZnNfY2xvc2Vfc29ja2V0JiMzNDssCiAgICAmIzM0O3J4cnBjX2Nsb3NlX3R4X3BoYXNlJiMzNDssCiAgICAmIzM0O3J4cnBjX2VuZF90eF9waGFzZSYjMzQ7LAogICAgJiMzNDtyeHJwY19yZWNlaXZpbmdfcmVwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHJ4cnBjIGFuZCBhZnMgc3Vic3lzdGVtcywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgb3V0LW9mLWJhbmQgKE9PQikgbWVzc2FnZSBoYW5kbGluZyBhbmQgdGhlIHJ4cnBjIGNhbGwgc3RhdGUgbWFjaGluZSAoYWRkaW5nIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIGFuZCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgc3RhdGVzKS4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBuZXR3b3JrIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6MzQuOTQzNTc5MjkyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODQ2OTI3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6MzQuOTQzNTg0MzEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODA2NzM2ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZTU1NTU2ZDIxNzgzNTE5NWYyY2I5ZGRiMGFjOTU0M2QxY2RmNGM2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjAxOjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9jbV9zZWN1cml0eS5jIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcXG5pbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0XFxuLS0tIGEvZnMvYWZzL2NtX3NlY3VyaXR5LmNcXG4rKysgYi9mcy9hZnMvY21fc2VjdXJpdHkuY1xcbkBAIC0xMDEsNyArMTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqb29iO1xcbiBcXHRlbnVtIHJ4cnBjX29vYl90eXBlIHR5cGU7XFxuIFxcbi1cXHR3aGlsZSAoKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtXFx1MDAzZXNvY2tldCwgXFx1MDAyNnR5cGUpKSkge1xcbitcXHR3aGlsZSAoUkVBRF9PTkNFKG5ldC1cXHUwMDNlbGl2ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICAgIChvb2IgPSByeHJwY19rZXJuZWxfZGVxdWV1ZV9vb2IobmV0LVxcdTAwM2Vzb2NrZXQsIFxcdTAwMjZ0eXBlKSkpIHtcXG4gXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuIFxcdFxcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcXG4gXFx0XFx0XFx0YWZzX3Jlc3BvbmRfdG9fY2hhbGxlbmdlKG9vYik7XFxuZGlmZiAtLWdpdCBhL2ZzL2Fmcy9yeHJwYy5jIGIvZnMvYWZzL3J4cnBjLmNcXG5pbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0XFxuLS0tIGEvZnMvYWZzL3J4cnBjLmNcXG4rKysgYi9mcy9hZnMvcnhycGMuY1xcbkBAIC0xMjgsOCArMTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxcbiBcXHRfZW50ZXIoXFxcIlxcXCIpO1xcbiBcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VyeF9vb2Jfd29yayk7XFxuK1xcdC8qIEZ1dHVyZSB3b3JrIGl0ZW1zIHNob3VsZCBub3cgc2VlIC1cXHUwMDNlbGl2ZSBpcyBmYWxzZS4gKi9cXG4rXFxuIFxcdGtlcm5lbF9saXN0ZW4obmV0LVxcdTAwM2Vzb2NrZXQsIDApO1xcbitcXG4rXFx0LyogTWFrZSBzdXJlIHdvcmsgaXRlbXMgYXJlIG5vIGxvbmdlciBydW5uaW5nLiAqL1xcbiBcXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VjaGFyZ2VfcHJlYWxsb2NhdGlvbl93b3JrKTtcXG4gXFxuIFxcdGlmIChuZXQtXFx1MDAzZXNwYXJlX2luY29taW5nX2NhbGwpIHtcXG4gXFx0XFx0YWZzX3B1dF9jYWxsKG5ldC1cXHUwMDNlc3BhcmVfaW5jb21pbmdfY2FsbCk7XFxuQEAgLTE0Myw2ICsxNDksNyBAQCB2b2lkIGFmc19jbG9zZV9zb2NrZXQoc3RydWN0IGFmc19uZXQgKm5ldClcXG4gXFxuIFxcdGtlcm5lbF9zb2NrX3NodXRkb3duKG5ldC1cXHUwMDNlc29ja2V0LCBTSFVUX1JEV1IpO1xcbiBcXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2VyeF9vb2Jfd29yayk7XFxuIFxcdG5ldC1cXHUwMDNlc29ja2V0LVxcdTAwM2Vzay1cXHUwMDNlc2tfdXNlcl9kYXRhID0gTlVMTDtcXG4gXFx0c29ja19yZWxlYXNlKG5ldC1cXHUwMDNlc29ja2V0KTtcXG4gXFx0a2V5X3B1dChuZXQtXFx1MDAzZWZzX2NtX3Rva2VuX2tleSk7XFxuQEAgLTk4NCw1ICs5OTEsNiBAQCBzdGF0aWMgdm9pZCBhZnNfcnhfbm90aWZ5X29vYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpvb2IpXFxuIHtcXG4gXFx0c3RydWN0IGFmc19uZXQgKm5ldCA9IHNrLVxcdTAwM2Vza191c2VyX2RhdGE7XFxuIFxcbi1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXJ4X29vYl93b3JrKTtcXG4rXFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWxpdmUpKVxcbitcXHRcXHRxdWV1ZV93b3JrKGFmc193cSwgXFx1MDAyNm5ldC1cXHUwMDNlcnhfb29iX3dvcmspO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG5pbmRleCA1ODAyZjZmNzg3MjNiYy4uY2U5NDZiMGEwM2UyYjMgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxcbkBAIC02NjksNyArNjY5LDkgQEAgZW51bSByeHJwY19jYWxsX2V2ZW50IHtcXG4gZW51bSByeHJwY19jYWxsX3N0YXRlIHtcXG4gXFx0UlhSUENfQ0FMTF9VTklOSVRJQUxJU0VELFxcbiBcXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OLFxcdC8qIC0gY2xpZW50IHdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gdG8gYmVjb21lIGF2YWlsYWJsZSAqL1xcbitcXHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcXHQvKiAtIGNsaWVudCBpcyBjb25uZWN0ZWQsIGJ1dCBoYXNuJ3Qgc2VudCBhbnl0aGluZyB5ZXQgKi9cXG4gXFx0UlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNULFxcdC8qIC0gY2xpZW50IHNlbmRpbmcgcmVxdWVzdCBwaGFzZSAqL1xcbitcXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0ssXFx0LyogLSBjbGllbnQgYXdhaXRpbmcgQUNLcyBvZiByZXF1ZXN0ICovXFxuIFxcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZLFxcdC8qIC0gY2xpZW50IGF3YWl0aW5nIHJlcGx5ICovXFxuIFxcdFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFksXFx0LyogLSBjbGllbnQgcmVjZWl2aW5nIHJlcGx5IHBoYXNlICovXFxuIFxcdFJYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DLFxcdC8qIC0gc2VydmljZSBwcmVhbGxvY2F0aW9uICovXFxuQEAgLTEzNzQsOSArMTM3Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJ4cnBjX25ldCAqcnhycGNfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4gfVxcbiBcXG4gLypcXG4tICogb3V0X29mX2JhbmQuY1xcbisgKiBvb2IuY1xcbiAgKi9cXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpO1xcbiB2b2lkIHJ4cnBjX2FkZF9wZW5kaW5nX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBpbnQgcnhycGNfc2VuZG1zZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuYyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcXG5pbmRleCBmZWM1OWQ5MzM4YjlmYi4uMjFiZTljODZkN2E3NGYgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2NhbGxfZXZlbnQuY1xcbisrKyBiL25ldC9yeHJwYy9jYWxsX2V2ZW50LmNcXG5AQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuLVxcdFxcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKTtcXG4rXFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcXG4gXFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLKTtcXG5AQCAtMjQ0LDYgKzI0NCw4IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pXFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IHdoaWxlIChyZXEubiBcXHUwMDNjIGxpbWl0IFxcdTAwMjZcXHUwMDI2IGJlZm9yZShzZXEsIHNlbmRfdG9wKSk7XFxuIFxcbitcXHRcXHRpZiAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKVxcbitcXHRcXHRcXHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpO1xcbiBcXHRcXHRpZiAodHhiLVxcdTAwM2VmbGFncyBcXHUwMDI2IFJYUlBDX0xBU1RfUEFDS0VUKSB7XFxuIFxcdFxcdFxcdHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKGNhbGwpO1xcbiBcXHRcXHRcXHR0cSA9IE5VTEw7XFxuQEAgLTI2Nyw2ICsyNjksNyBAQCB2b2lkIHJ4cnBjX3RyYW5zbWl0X3NvbWVfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgdW5zaWduZWQgaW50IGxpbWl0LFxcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcXG4rXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORDpcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuIFxcdFxcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxcbiBcXHRcXHRcXHRyZXR1cm47XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX29iamVjdC5jIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcXG4rKysgYi9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xcbkBAIC0xOCw3ICsxOCw5IEBAXFxuIGNvbnN0IGNoYXIgKmNvbnN0IHJ4cnBjX2NhbGxfc3RhdGVzW05SX19SWFJQQ19DQUxMX1NUQVRFU10gPSB7XFxuIFxcdFtSWFJQQ19DQUxMX1VOSU5JVElBTElTRURdXFx0XFx0PSBcXFwiVW5pbml0ICBcXFwiLFxcbiBcXHRbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQ09OTl1cXHRcXHQ9IFxcXCJDbFd0Q29ublxcXCIsXFxuK1xcdFtSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORF1cXHRcXHQ9IFxcXCJDbFByZVNuZFxcXCIsXFxuIFxcdFtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdXFx0PSBcXFwiQ2xTbmRSZXFcXFwiLFxcbitcXHRbUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLXVxcdFxcdD0gXFxcIkNsQXd0QWNrXFxcIixcXG4gXFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXVxcdFxcdD0gXFxcIkNsQXd0UnBsXFxcIixcXG4gXFx0W1JYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFldXFx0XFx0PSBcXFwiQ2xSY3ZScGxcXFwiLFxcbiBcXHRbUlhSUENfQ0FMTF9TRVJWRVJfUFJFQUxMT0NdXFx0XFx0PSBcXFwiU3ZQcmVhbGNcXFwiLFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9jbGllbnQuYyBiL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXFxuaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2FjdGl2YXRlX29uZV9jaGFubmVsKHN0cnVjdCByeHJwY19jb25uZWN0aW9uICpjb25uLFxcbiBcXHR0cmFjZV9yeHJwY19jb25uZWN0X2NhbGwoY2FsbCk7XFxuIFxcdGNhbGwtXFx1MDAzZXR4X2xhc3Rfc2VudCA9IGt0aW1lX2dldF9yZWFsKCk7XFxuIFxcdHJ4cnBjX3N0YXJ0X2NhbGxfdGltZXIoY2FsbCk7XFxuLVxcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7XFxuK1xcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EKTtcXG4gXFx0d2FrZV91cChcXHUwMDI2Y2FsbC1cXHUwMDNld2FpdHEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xcbmluZGV4IGM5NmNhNjE1Yjc4N2M2Li42MTFjNzkwYmM2ZDBjZSAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvY29ubl9ldmVudC5jXFxuKysrIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xcbkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXFxuIFxcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcXG4gXFx0c3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcnhycGNfc29jayAqcng7XFxuLVxcdGJvb2wgcmVzcG9uZCA9IGZhbHNlO1xcbitcXHRib29sIHJlc3BvbmQgPSBmYWxzZSwgcXVldWVkID0gZmFsc2U7XFxuIFxcbiBcXHRzcC1cXHUwMDNlY2hhbGwuY29ubiA9XFxuIFxcdFxcdHJ4cnBjX2dldF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fZ2V0X2NoYWxsZW5nZV9pbnB1dCk7XFxuQEAgLTQ3Miw4ICs0NzIsMTMgQEAgc3RhdGljIGJvb2wgcnhycGNfcG9zdF9jaGFsbGVuZ2Uoc3RydWN0IHJ4cnBjX2Nvbm5lY3Rpb24gKmNvbm4sXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjYWxsKVxcbi1cXHRcXHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xcbitcXHRcXHRxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0aWYgKGNhbGwgXFx1MDAyNlxcdTAwMjYgIXF1ZXVlZCkge1xcbitcXHRcXHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xcbitcXHRcXHRzcC1cXHUwMDNlY2hhbGwuY29ubiA9IE5VTEw7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKCFjYWxsKVxcbiBcXHRcXHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9pbnB1dC5jIGIvbmV0L3J4cnBjL2lucHV0LmNcXG5pbmRleCBjZTc2MTQ2NmIwMmQ2MS4uNzNjYWZlNmJmYTlmNTQgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcXG4rKysgYi9uZXQvcnhycGMvaW5wdXQuY1xcbkBAIC0xODEsNyArMTgxLDggQEAgdm9pZCByeHJwY19jb25nZXN0aW9uX2RlZ3JhZGUoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXFxuIFxcdGlmIChjYWxsLVxcdTAwM2Vjb25nX2NhX3N0YXRlICE9IFJYUlBDX0NBX1NMT1dfU1RBUlQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGNhbGwtXFx1MDAzZWNvbmdfY2Ffc3RhdGUgIT0gUlhSUENfQ0FfQ09OR0VTVF9BVk9JREFOQ0UpXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcXG4rXFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0sgfHxcXG4rXFx0ICAgIF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cnR0ID0gbnNfdG9fa3RpbWUoY2FsbC1cXHUwMDNlc3J0dF91cyAqIChOU0VDX1BFUl9VU0VDIC8gOCkpO1xcbkBAIC0yMzYsNiArMjM3LDkgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXFxuIFxcdFxcdGNhbGwtXFx1MDAzZWFja3NfbG93ZXN0X25hayA9IHRvO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoYWZ0ZXIoc2VxLCB0bykpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdC8qIFdlIG1heSBoYXZlIGEgbGVmdCBvdmVyIGZ1bGx5LWNvbnN1bWVkIGJ1ZmZlciBhdCB0aGUgZnJvbnQgdGhhdCB3ZVxcbiBcXHQgKiBjb3VsZG4ndCBkcm9wIGJlZm9yZSAocm90YXRlX2FuZF9rZWVwIGJlbG93KS5cXG4gXFx0ICovXFxuQEAgLTI0Nyw3ICsyNTEsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0byxcXG4gXFx0XFx0dHEgPSBjYWxsLVxcdTAwM2V0eF9xdWV1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0ZG8ge1xcbitcXHR3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKSB7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBpeCA9IHNlcSAtIGNhbGwtXFx1MDAzZXR4X3FiYXNlO1xcbiBcXG4gXFx0XFx0X2RlYnVnKFxcXCJ0cT0leCBzZXE9JXggaT0lZCBmPSV4XFxcIiwgdHEtXFx1MDAzZXFiYXNlLCBzZXEsIGl4LCB0cS1cXHUwMDNlYnVmc1tpeF0tXFx1MDAzZWZsYWdzKTtcXG5AQCAtMzE3LDggKzMyMSw3IEBAIHN0YXRpYyBib29sIHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHJ4cnBjX3NlcV90IHRvLFxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuLVxcbi1cXHR9IHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAodHJhY2UpXFxuIFxcdFxcdHRyYWNlX3J4cnBjX3JhY2tfdXBkYXRlKGNhbGwsIHN1bW1hcnkpO1xcbkBAIC0zNTYsNiArMzU5LDcgQEAgc3RhdGljIHZvaWQgcnhycGNfZW5kX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBib29sIHJlcGx5X2JlZ3VuLFxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxcbiBcXHRcXHRpZiAocmVwbHlfYmVndW4pIHtcXG4gXFx0XFx0XFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSk7XFxuQEAgLTM5Miw2ICszOTYsMTQgQEAgc3RhdGljIGJvb2wgcnhycGNfcmVjZWl2aW5nX3JlcGx5KHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxcbiBcXHRcXHR0cmFjZV9yeHJwY190aW1lcl9jYW4oY2FsbCwgcnhycGNfdGltZXJfdHJhY2VfZGVsYXllZF9hY2spO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSd2ZSBnb3QgdGhlIHJlcXVlc3RcXG4rXFx0ICogcXVldWVkIG9yIHRyYW5zbWl0dGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX0VYUE9TRUQsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4rXFx0XFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuIFxcdGlmICghdGVzdF9iaXQoUlhSUENfQ0FMTF9UWF9MQVNULCBcXHUwMDI2Y2FsbC1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsIFxcdTAwMjZzdW1tYXJ5KSkge1xcbiBcXHRcXHRcXHRyeHJwY19wcm90b19hYm9ydChjYWxsLCB0b3AsIHJ4cnBjX2Vwcm90b19lYXJseV9yZXBseSk7XFxuQEAgLTY5NCw2ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxcbiBcXHRcXHQvKiBSZWNlaXZlZCBkYXRhIGltcGxpY2l0bHkgQUNLcyBhbGwgb2YgdGhlIHJlcXVlc3RcXG4gXFx0XFx0ICogcGFja2V0cyB3ZSBzZW50IHdoZW4gd2UncmUgYWN0aW5nIGFzIGEgY2xpZW50LlxcbkBAIC0xMTU0LDEwICsxMTY3LDEyIEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2FjayhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKGhhcmRfYWNrICsgMSA9PSAwKVxcbiBcXHRcXHRyZXR1cm4gcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgMCwgcnhycGNfZXByb3RvX2Fja3JfemVybyk7XFxuIFxcbi1cXHQvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIG9yIGhhdmUganVzdCBiZWVuIHRyYW5zbWl0dGluZy4gKi9cXG4rXFx0LyogSWdub3JlIEFDS3MgdW5sZXNzIHdlIGFyZSB0cmFuc21pdHRpbmcgb3IgYXJlIHdhaXRpbmcgZm9yXFxuK1xcdCAqIGFja25vd2xlZGdlbWVudCBvZiB0aGUgcGFja2V0cyB3ZSd2ZSBqdXN0IGJlZW4gdHJhbnNtaXR0aW5nLlxcbitcXHQgKi9cXG4gXFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcXG4gXFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XFxuLVxcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxcbiBcXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFk6XFxuIFxcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxcbiBcXHRcXHRicmVhaztcXG5AQCAtMTIxNSw3ICsxMjMwLDE3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2lucHV0X2Fja2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgcnhycGNfYWNrX3N1bW1hcnkgc3VtbWFyeSA9IHsgMCB9O1xcbiBcXG4tXFx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cXHUwMDNldHhfdG9wLCBcXHUwMDI2c3VtbWFyeSkpXFxuK1xcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XFxuK1xcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxcbitcXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcXG4rXFx0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxcbitcXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX0FXQUlUX0FDSzpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKHJ4cnBjX3JvdGF0ZV90eF93aW5kb3coY2FsbCwgY2FsbC1cXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFxcdTAwMjZzdW1tYXJ5KSlcXG4gXFx0XFx0cnhycGNfZW5kX3R4X3BoYXNlKGNhbGwsIGZhbHNlLCByeHJwY19lcHJvdG9fdW5leHBlY3RlZF9hY2thbGwpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvb29iLmMgYi9uZXQvcnhycGMvb29iLmNcXG5pbmRleCAwNWNhOWMxZmFhNTc3ZC4uYzgwZWUyNDg3ZDA5NDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXFxuKysrIGIvbmV0L3J4cnBjL29vYi5jXFxuQEAgLTMyLDExICszMiwxMiBAQCBzdHJ1Y3QgcnhycGNfb29iX3BhcmFtcyB7XFxuICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2VcXG4gICogYXNzb2NpYXRlZCB3aXRoIGEgcmVmZXJlbmNlIGNhbGwuXFxuICAqL1xcbi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitib29sIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcXG4gXFx0c3RydWN0IHJ4cnBjX3NvY2sgKnJ4O1xcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuK1xcdGJvb2wgcXVldWVkID0gZmFsc2U7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcbkBAIC00OSw2ICs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdHNrYi1cXHUwMDNlc2tiX21zdGFtcF9ucyA9IHJ4LVxcdTAwM2Vvb2JfaWRfY291bnRlcisrO1xcbiBcXHRcXHRcXHRyeHJwY19nZXRfc2tiKHNrYiwgcnhycGNfc2tiX2dldF9wb3N0X29vYik7XFxuIFxcdFxcdFxcdHNrYl9xdWV1ZV90YWlsKFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19vb2JxLCBza2IpO1xcbitcXHRcXHRcXHRxdWV1ZWQgPSB0cnVlO1xcbiBcXG4gXFx0XFx0XFx0dHJhY2VfcnhycGNfbm90aWZ5X3NvY2tldChjYWxsLVxcdTAwM2VkZWJ1Z19pZCwgc3AtXFx1MDAzZWhkci5zZXJpYWwpO1xcbiBcXHRcXHRcXHRpZiAocngtXFx1MDAzZWFwcF9vcHMpXFxuQEAgLTU2LDExICs1OCwxMiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNnJ4LVxcdTAwM2VyZWN2bXNnX2xvY2spO1xcbi1cXHRcXHRpZiAoIXJ4LVxcdTAwM2VhcHBfb3BzIFxcdTAwMjZcXHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXFxuK1xcdFxcdGlmIChxdWV1ZWQgXFx1MDAyNlxcdTAwMjYgIXJ4LVxcdTAwM2VhcHBfb3BzIFxcdTAwMjZcXHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXFxuIFxcdFxcdFxcdHNrLVxcdTAwM2Vza19kYXRhX3JlYWR5KHNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdHJldHVybiBxdWV1ZWQ7XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTIxMCw2ICsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbitcXHRzd2l0Y2ggKHNrYi1cXHUwMDNlbWFyaykge1xcbitcXHRjYXNlIFJYUlBDX09PQl9DSEFMTEVOR0U6XFxuK1xcdFxcdHJ4cnBjX3B1dF9jb25uZWN0aW9uKHNwLVxcdTAwM2VjaGFsbC5jb25uLCByeHJwY19jb25uX3B1dF9vb2IpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbiBcXHRyeHJwY19mcmVlX3NrYihza2IsIHJ4cnBjX3NrYl9wdXRfb29iKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvcmVjdm1zZy5jIGIvbmV0L3J4cnBjL3JlY3Ztc2cuY1xcbmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDRcXG4tLS0gYS9uZXQvcnhycGMvcmVjdm1zZy5jXFxuKysrIGIvbmV0L3J4cnBjL3JlY3Ztc2cuY1xcbkBAIC0yNyw4ICsyNyw2IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcXG4gXFxuIFxcdF9lbnRlcihcXFwiJWRcXFwiLCBjYWxsLVxcdTAwM2VkZWJ1Z19pZCk7XFxuIFxcbi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmNhbGwtXFx1MDAzZXJlY3Ztc2dfbGluaykpXFxuLVxcdFxcdHJldHVybjtcXG4gXFx0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsIFxcdTAwMjZjYWxsLVxcdTAwM2VmbGFncykpIHtcXG4gXFx0XFx0cnhycGNfc2VlX2NhbGwoY2FsbCwgcnhycGNfY2FsbF9zZWVfbm90aWZ5X3JlbGVhc2VkKTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC00MzgsNyArNDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnJ4LVxcdTAwM2VyZWN2bXNnX3EpKSB7XFxuK1xcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19xKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKFxcdTAwMjZyeC1cXHUwMDNlcmVjdm1zZ19vb2JxKSkge1xcbiBcXHRcXHRyZXQgPSAtRVdPVUxEQkxPQ0s7XFxuIFxcdFxcdGlmICh0aW1lbyA9PSAwKSB7XFxuIFxcdFxcdFxcdGNhbGwgPSBOVUxMO1xcbkBAIC00NzEsNyArNDcwLDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRyZWxlYXNlX3NvY2soXFx1MDAyNnJ4LVxcdTAwM2Vzayk7XFxuIFxcdFxcdGlmIChyZXQgPT0gLUVBR0FJTilcXG4gXFx0XFx0XFx0Z290byB0cnlfYWdhaW47XFxuLVxcdFxcdGdvdG8gZXJyb3Jfbm9fY2FsbDtcXG4rXFx0XFx0Z290byBlcnJvcl90cmFjZTtcXG4gXFx0fVxcbiBcXG4gXFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJ3JlIG5vdCBqdXN0IHBlZWtpbmcuICBJZiB3ZVxcbkBAIC01MzAsOCArNTI5LDcgQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbiBcXHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9SRUxFQVNFRCwgXFx1MDAyNmNhbGwtXFx1MDAzZWZsYWdzKSkge1xcbiBcXHRcXHRyeHJwY19zZWVfY2FsbChjYWxsLCByeHJwY19jYWxsX3NlZV9hbHJlYWR5X3JlbGVhc2VkKTtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjYWxsLVxcdTAwM2V1c2VyX211dGV4KTtcXG4tXFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBNU0dfUEVFSykpXFxuLVxcdFxcdFxcdHJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpO1xcbitcXHRcXHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcXG4gXFx0XFx0Z290byB0cnlfYWdhaW47XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9zZW5kbXNnLmMgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuaW5kZXggYzM1ZGU0ZmQ3NWUzMTEuLmVkMmM5YTUxMDA1YWRlIDEwMDY0NFxcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcXG4rKysgYi9uZXQvcnhycGMvc2VuZG1zZy5jXFxuQEAgLTM2Niw3ICszNjYsOCBAQCBzdGF0aWMgaW50IHJ4cnBjX3NlbmRfZGF0YShzdHJ1Y3QgcnhycGNfc29jayAqcngsXFxuIFxcdGlmIChzdGF0ZSBcXHUwMDNlPSBSWFJQQ19DQUxMX0NPTVBMRVRFKVxcbiBcXHRcXHRnb3RvIG1heWJlX2Vycm9yO1xcbiBcXHRyZXQgPSAtRVBST1RPO1xcbi1cXHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmIChzdGF0ZSAhPSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgc3RhdGUgIT0gUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWSkge1xcbiBcXHRcXHQvKiBSZXF1ZXN0IHBoYXNlIGNvbXBsZXRlIGZvciB0aGlzIGNsaWVudCBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjM1LjQyNTAxNDMyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2MDMyNDg3MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZTU1NTU2ZDIxNzgzNTE5NWYyY2I5ZGRiMGFjOTU0M2QxY2RmNGM2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTc6MDE6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZnMvY21fc2VjdXJpdHkuYyBiL2ZzL2Fmcy9jbV9zZWN1cml0eS5jXG5pbmRleCBlZGNiZDI0OWQyMDI0YS4uMTAzMTY4YzcwZGQ0ZGYgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvY21fc2VjdXJpdHkuY1xuKysrIGIvZnMvYWZzL2NtX3NlY3VyaXR5LmNcbkBAIC0xMDEsNyArMTAxLDggQEAgdm9pZCBhZnNfcHJvY2Vzc19vb2JfcXVldWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IHNrX2J1ZmYgKm9vYjtcbiBcdGVudW0gcnhycGNfb29iX3R5cGUgdHlwZTtcbiBcbi1cdHdoaWxlICgob29iID0gcnhycGNfa2VybmVsX2RlcXVldWVfb29iKG5ldC1cdTAwM2Vzb2NrZXQsIFx1MDAyNnR5cGUpKSkge1xuK1x0d2hpbGUgKFJFQURfT05DRShuZXQtXHUwMDNlbGl2ZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgICAgKG9vYiA9IHJ4cnBjX2tlcm5lbF9kZXF1ZXVlX29vYihuZXQtXHUwMDNlc29ja2V0LCBcdTAwMjZ0eXBlKSkpIHtcbiBcdFx0c3dpdGNoICh0eXBlKSB7XG4gXHRcdGNhc2UgUlhSUENfT09CX0NIQUxMRU5HRTpcbiBcdFx0XHRhZnNfcmVzcG9uZF90b19jaGFsbGVuZ2Uob29iKTtcbmRpZmYgLS1naXQgYS9mcy9hZnMvcnhycGMuYyBiL2ZzL2Fmcy9yeHJwYy5jXG5pbmRleCBkNWNmZDI0ZTgxNWJkZC4uZDgyOTE2NjU3YTNkZGYgMTAwNjQ0XG4tLS0gYS9mcy9hZnMvcnhycGMuY1xuKysrIGIvZnMvYWZzL3J4cnBjLmNcbkBAIC0xMjgsOCArMTI4LDE0IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFx0X2VudGVyKFwiXCIpO1xuIFxuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlY2hhcmdlX3ByZWFsbG9jYXRpb25fd29yayk7XG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4rXHQvKiBGdXR1cmUgd29yayBpdGVtcyBzaG91bGQgbm93IHNlZSAtXHUwMDNlbGl2ZSBpcyBmYWxzZS4gKi9cbitcbiBcdGtlcm5lbF9saXN0ZW4obmV0LVx1MDAzZXNvY2tldCwgMCk7XG4rXG4rXHQvKiBNYWtlIHN1cmUgd29yayBpdGVtcyBhcmUgbm8gbG9uZ2VyIHJ1bm5pbmcuICovXG4gXHRmbHVzaF93b3JrcXVldWUoYWZzX2FzeW5jX2NhbGxzKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZWNoYXJnZV9wcmVhbGxvY2F0aW9uX3dvcmspO1xuIFxuIFx0aWYgKG5ldC1cdTAwM2VzcGFyZV9pbmNvbWluZ19jYWxsKSB7XG4gXHRcdGFmc19wdXRfY2FsbChuZXQtXHUwMDNlc3BhcmVfaW5jb21pbmdfY2FsbCk7XG5AQCAtMTQzLDYgKzE0OSw3IEBAIHZvaWQgYWZzX2Nsb3NlX3NvY2tldChzdHJ1Y3QgYWZzX25ldCAqbmV0KVxuIFxuIFx0a2VybmVsX3NvY2tfc2h1dGRvd24obmV0LVx1MDAzZXNvY2tldCwgU0hVVF9SRFdSKTtcbiBcdGZsdXNoX3dvcmtxdWV1ZShhZnNfYXN5bmNfY2FsbHMpO1xuK1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNlcnhfb29iX3dvcmspO1xuIFx0bmV0LVx1MDAzZXNvY2tldC1cdTAwM2Vzay1cdTAwM2Vza191c2VyX2RhdGEgPSBOVUxMO1xuIFx0c29ja19yZWxlYXNlKG5ldC1cdTAwM2Vzb2NrZXQpO1xuIFx0a2V5X3B1dChuZXQtXHUwMDNlZnNfY21fdG9rZW5fa2V5KTtcbkBAIC05ODQsNSArOTkxLDYgQEAgc3RhdGljIHZvaWQgYWZzX3J4X25vdGlmeV9vb2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqb29iKVxuIHtcbiBcdHN0cnVjdCBhZnNfbmV0ICpuZXQgPSBzay1cdTAwM2Vza191c2VyX2RhdGE7XG4gXG4tXHRzY2hlZHVsZV93b3JrKFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4rXHRpZiAoUkVBRF9PTkNFKG5ldC1cdTAwM2VsaXZlKSlcbitcdFx0cXVldWVfd29yayhhZnNfd3EsIFx1MDAyNm5ldC1cdTAwM2VyeF9vb2Jfd29yayk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oIGIvbmV0L3J4cnBjL2FyLWludGVybmFsLmhcbmluZGV4IDU4MDJmNmY3ODcyM2JjLi5jZTk0NmIwYTAzZTJiMyAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9hci1pbnRlcm5hbC5oXG4rKysgYi9uZXQvcnhycGMvYXItaW50ZXJuYWwuaFxuQEAgLTY2OSw3ICs2NjksOSBAQCBlbnVtIHJ4cnBjX2NhbGxfZXZlbnQge1xuIGVudW0gcnhycGNfY2FsbF9zdGF0ZSB7XG4gXHRSWFJQQ19DQUxMX1VOSU5JVElBTElTRUQsXG4gXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9DT05OLFx0LyogLSBjbGllbnQgd2FpdGluZyBmb3IgY29ubmVjdGlvbiB0byBiZWNvbWUgYXZhaWxhYmxlICovXG4rXHRSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCxcdC8qIC0gY2xpZW50IGlzIGNvbm5lY3RlZCwgYnV0IGhhc24ndCBzZW50IGFueXRoaW5nIHlldCAqL1xuIFx0UlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNULFx0LyogLSBjbGllbnQgc2VuZGluZyByZXF1ZXN0IHBoYXNlICovXG4rXHRSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0ssXHQvKiAtIGNsaWVudCBhd2FpdGluZyBBQ0tzIG9mIHJlcXVlc3QgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZLFx0LyogLSBjbGllbnQgYXdhaXRpbmcgcmVwbHkgKi9cbiBcdFJYUlBDX0NBTExfQ0xJRU5UX1JFQ1ZfUkVQTFksXHQvKiAtIGNsaWVudCByZWNlaXZpbmcgcmVwbHkgcGhhc2UgKi9cbiBcdFJYUlBDX0NBTExfU0VSVkVSX1BSRUFMTE9DLFx0LyogLSBzZXJ2aWNlIHByZWFsbG9jYXRpb24gKi9cbkBAIC0xMzc0LDkgKzEzNzYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCByeHJwY19uZXQgKnJ4cnBjX25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4gfVxuIFxuIC8qXG4tICogb3V0X29mX2JhbmQuY1xuKyAqIG9vYi5jXG4gICovXG4tdm9pZCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4rYm9vbCByeHJwY19ub3RpZnlfc29ja2V0X29vYihzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gdm9pZCByeHJwY19hZGRfcGVuZGluZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBpbnQgcnhycGNfc2VuZG1zZ19vb2Ioc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9jYWxsX2V2ZW50LmMgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG5pbmRleCBmZWM1OWQ5MzM4YjlmYi4uMjFiZTljODZkN2E3NGYgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG4rKysgYi9uZXQvcnhycGMvY2FsbF9ldmVudC5jXG5AQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuLVx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSk7XG4rXHRcdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZOlxuIFx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX1NFUlZFUl9BV0FJVF9BQ0spO1xuQEAgLTI0NCw2ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCByeHJwY190cmFuc21pdF9mcmVzaF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCB1bnNpZ25lZCBpbnQgbGltaVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdH0gd2hpbGUgKHJlcS5uIFx1MDAzYyBsaW1pdCBcdTAwMjZcdTAwMjYgYmVmb3JlKHNlcSwgc2VuZF90b3ApKTtcbiBcbitcdFx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORClcbitcdFx0XHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1QpO1xuIFx0XHRpZiAodHhiLVx1MDAzZWZsYWdzIFx1MDAyNiBSWFJQQ19MQVNUX1BBQ0tFVCkge1xuIFx0XHRcdHJ4cnBjX2Nsb3NlX3R4X3BoYXNlKGNhbGwpO1xuIFx0XHRcdHRxID0gTlVMTDtcbkBAIC0yNjcsNiArMjY5LDcgQEAgdm9pZCByeHJwY190cmFuc21pdF9zb21lX2RhdGEoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHVuc2lnbmVkIGludCBsaW1pdCxcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXG4gXHRjYXNlIFJYUlBDX0NBTExfU0VSVkVSX1NFTkRfUkVQTFk6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4gXHRcdGlmICghcnhycGNfdHhfd2luZG93X3NwYWNlKGNhbGwpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuYyBiL25ldC9yeHJwYy9jYWxsX29iamVjdC5jXG5pbmRleCBmY2I5ZDM4YmI1MjE0YS4uODE3ZWQ5YWNiOTFlNjEgMTAwNjQ0XG4tLS0gYS9uZXQvcnhycGMvY2FsbF9vYmplY3QuY1xuKysrIGIvbmV0L3J4cnBjL2NhbGxfb2JqZWN0LmNcbkBAIC0xOCw3ICsxOCw5IEBAXG4gY29uc3QgY2hhciAqY29uc3QgcnhycGNfY2FsbF9zdGF0ZXNbTlJfX1JYUlBDX0NBTExfU1RBVEVTXSA9IHtcbiBcdFtSWFJQQ19DQUxMX1VOSU5JVElBTElTRURdXHRcdD0gXCJVbmluaXQgIFwiLFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0NPTk5dXHRcdD0gXCJDbFd0Q29ublwiLFxuK1x0W1JYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EXVx0XHQ9IFwiQ2xQcmVTbmRcIixcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1RdXHQ9IFwiQ2xTbmRSZXFcIixcbitcdFtSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0tdXHRcdD0gXCJDbEF3dEFja1wiLFxuIFx0W1JYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZXVx0XHQ9IFwiQ2xBd3RScGxcIixcbiBcdFtSWFJQQ19DQUxMX0NMSUVOVF9SRUNWX1JFUExZXVx0XHQ9IFwiQ2xSY3ZScGxcIixcbiBcdFtSWFJQQ19DQUxMX1NFUlZFUl9QUkVBTExPQ11cdFx0PSBcIlN2UHJlYWxjXCIsXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmMgYi9uZXQvcnhycGMvY29ubl9jbGllbnQuY1xuaW5kZXggOWI3NTc3OThkZWRkYjguLjQ4NTE5ZjBkZTE4NTM5IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fY2xpZW50LmNcbisrKyBiL25ldC9yeHJwYy9jb25uX2NsaWVudC5jXG5AQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2FjdGl2YXRlX29uZV9jaGFubmVsKHN0cnVjdCByeHJwY19jb25uZWN0aW9uICpjb25uLFxuIFx0dHJhY2VfcnhycGNfY29ubmVjdF9jYWxsKGNhbGwpO1xuIFx0Y2FsbC1cdTAwM2V0eF9sYXN0X3NlbnQgPSBrdGltZV9nZXRfcmVhbCgpO1xuIFx0cnhycGNfc3RhcnRfY2FsbF90aW1lcihjYWxsKTtcbi1cdHJ4cnBjX3NldF9jYWxsX3N0YXRlKGNhbGwsIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCk7XG4rXHRyeHJwY19zZXRfY2FsbF9zdGF0ZShjYWxsLCBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCk7XG4gXHR3YWtlX3VwKFx1MDAyNmNhbGwtXHUwMDNld2FpdHEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvcnhycGMvY29ubl9ldmVudC5jIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuaW5kZXggYzk2Y2E2MTViNzg3YzYuLjYxMWM3OTBiYzZkMGNlIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuKysrIGIvbmV0L3J4cnBjL2Nvbm5fZXZlbnQuY1xuQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdHN0cnVjdCByeHJwY19za2JfcHJpdiAqc3AgPSByeHJwY19za2Ioc2tiKTtcbiBcdHN0cnVjdCByeHJwY19jYWxsICpjYWxsID0gTlVMTDtcbiBcdHN0cnVjdCByeHJwY19zb2NrICpyeDtcbi1cdGJvb2wgcmVzcG9uZCA9IGZhbHNlO1xuK1x0Ym9vbCByZXNwb25kID0gZmFsc2UsIHF1ZXVlZCA9IGZhbHNlO1xuIFxuIFx0c3AtXHUwMDNlY2hhbGwuY29ubiA9XG4gXHRcdHJ4cnBjX2dldF9jb25uZWN0aW9uKGNvbm4sIHJ4cnBjX2Nvbm5fZ2V0X2NoYWxsZW5nZV9pbnB1dCk7XG5AQCAtNDcyLDggKzQ3MiwxMyBAQCBzdGF0aWMgYm9vbCByeHJwY19wb3N0X2NoYWxsZW5nZShzdHJ1Y3QgcnhycGNfY29ubmVjdGlvbiAqY29ubixcbiBcdH1cbiBcbiBcdGlmIChjYWxsKVxuLVx0XHRyeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuK1x0XHRxdWV1ZWQgPSByeHJwY19ub3RpZnlfc29ja2V0X29vYihjYWxsLCBza2IpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRpZiAoY2FsbCBcdTAwMjZcdTAwMjYgIXF1ZXVlZCkge1xuK1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihjb25uLCByeHJwY19jb25uX3B1dF9jaGFsbGVuZ2VfaW5wdXQpO1xuK1x0XHRzcC1cdTAwM2VjaGFsbC5jb25uID0gTlVMTDtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFxuIFx0aWYgKCFjYWxsKVxuIFx0XHRyeHJwY19wb3N0X3BhY2tldF90b19jb25uKGNvbm4sIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL2lucHV0LmMgYi9uZXQvcnhycGMvaW5wdXQuY1xuaW5kZXggY2U3NjE0NjZiMDJkNjEuLjczY2FmZTZiZmE5ZjU0IDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL2lucHV0LmNcbisrKyBiL25ldC9yeHJwYy9pbnB1dC5jXG5AQCAtMTgxLDcgKzE4MSw4IEBAIHZvaWQgcnhycGNfY29uZ2VzdGlvbl9kZWdyYWRlKHN0cnVjdCByeHJwY19jYWxsICpjYWxsKVxuIFx0aWYgKGNhbGwtXHUwMDNlY29uZ19jYV9zdGF0ZSAhPSBSWFJQQ19DQV9TTE9XX1NUQVJUIFx1MDAyNlx1MDAyNlxuIFx0ICAgIGNhbGwtXHUwMDNlY29uZ19jYV9zdGF0ZSAhPSBSWFJQQ19DQV9DT05HRVNUX0FWT0lEQU5DRSlcbiBcdFx0cmV0dXJuO1xuLVx0aWYgKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSA9PSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWSlcbitcdGlmIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkgPT0gUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHx8XG4rXHQgICAgX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpID09IFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRydHQgPSBuc190b19rdGltZShjYWxsLVx1MDAzZXNydHRfdXMgKiAoTlNFQ19QRVJfVVNFQyAvIDgpKTtcbkBAIC0yMzYsNiArMjM3LDkgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdGNhbGwtXHUwMDNlYWNrc19sb3dlc3RfbmFrID0gdG87XG4gXHR9XG4gXG4rXHRpZiAoYWZ0ZXIoc2VxLCB0bykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdC8qIFdlIG1heSBoYXZlIGEgbGVmdCBvdmVyIGZ1bGx5LWNvbnN1bWVkIGJ1ZmZlciBhdCB0aGUgZnJvbnQgdGhhdCB3ZVxuIFx0ICogY291bGRuJ3QgZHJvcCBiZWZvcmUgKHJvdGF0ZV9hbmRfa2VlcCBiZWxvdykuXG4gXHQgKi9cbkBAIC0yNDcsNyArMjUxLDcgQEAgc3RhdGljIGJvb2wgcnhycGNfcm90YXRlX3R4X3dpbmRvdyhzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgcnhycGNfc2VxX3QgdG8sXG4gXHRcdHRxID0gY2FsbC1cdTAwM2V0eF9xdWV1ZTtcbiBcdH1cbiBcbi1cdGRvIHtcbitcdHdoaWxlIChiZWZvcmVfZXEoc2VxLCB0bykpIHtcbiBcdFx0dW5zaWduZWQgaW50IGl4ID0gc2VxIC0gY2FsbC1cdTAwM2V0eF9xYmFzZTtcbiBcbiBcdFx0X2RlYnVnKFwidHE9JXggc2VxPSV4IGk9JWQgZj0leFwiLCB0cS1cdTAwM2VxYmFzZSwgc2VxLCBpeCwgdHEtXHUwMDNlYnVmc1tpeF0tXHUwMDNlZmxhZ3MpO1xuQEAgLTMxNyw4ICszMjEsNyBAQCBzdGF0aWMgYm9vbCByeHJwY19yb3RhdGVfdHhfd2luZG93KHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCByeHJwY19zZXFfdCB0byxcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiBcdFx0fVxuLVxuLVx0fSB3aGlsZSAoYmVmb3JlX2VxKHNlcSwgdG8pKTtcbitcdH1cbiBcbiBcdGlmICh0cmFjZSlcbiBcdFx0dHJhY2VfcnhycGNfcmFja191cGRhdGUoY2FsbCwgc3VtbWFyeSk7XG5AQCAtMzU2LDYgKzM1OSw3IEBAIHN0YXRpYyB2b2lkIHJ4cnBjX2VuZF90eF9waGFzZShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgYm9vbCByZXBseV9iZWd1bixcbiBcbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbitcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLOlxuIFx0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9SRVBMWTpcbiBcdFx0aWYgKHJlcGx5X2JlZ3VuKSB7XG4gXHRcdFx0cnhycGNfc2V0X2NhbGxfc3RhdGUoY2FsbCwgUlhSUENfQ0FMTF9DTElFTlRfUkVDVl9SRVBMWSk7XG5AQCAtMzkyLDYgKzM5NiwxNCBAQCBzdGF0aWMgYm9vbCByeHJwY19yZWNlaXZpbmdfcmVwbHkoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwpXG4gXHRcdHRyYWNlX3J4cnBjX3RpbWVyX2NhbihjYWxsLCByeHJwY190aW1lcl90cmFjZV9kZWxheWVkX2Fjayk7XG4gXHR9XG4gXG4rXHQvKiBEZWFsIHdpdGggYW4gYXBwYXJlbnQgcmVwbHkgY29taW5nIGluIGJlZm9yZSB3ZSd2ZSBnb3QgdGhlIHJlcXVlc3RcbitcdCAqIHF1ZXVlZCBvciB0cmFuc21pdHRlZC5cbitcdCAqL1xuK1x0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX0VYUE9TRUQsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4rXHRcdHJ4cnBjX3Byb3RvX2Fib3J0KGNhbGwsIHRvcCwgcnhycGNfZXByb3RvX2Vhcmx5X3JlcGx5KTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuIFx0aWYgKCF0ZXN0X2JpdChSWFJQQ19DQUxMX1RYX0xBU1QsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdGlmICghcnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCB0b3AsIFx1MDAyNnN1bW1hcnkpKSB7XG4gXHRcdFx0cnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgdG9wLCByeHJwY19lcHJvdG9fZWFybHlfcmVwbHkpO1xuQEAgLTY5NCw2ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCByeHJwY19pbnB1dF9kYXRhKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0c3dpdGNoIChfX3J4cnBjX2NhbGxfc3RhdGUoY2FsbCkpIHtcbiBcdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUOlxuK1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0s6XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX1JFUExZOlxuIFx0XHQvKiBSZWNlaXZlZCBkYXRhIGltcGxpY2l0bHkgQUNLcyBhbGwgb2YgdGhlIHJlcXVlc3RcbiBcdFx0ICogcGFja2V0cyB3ZSBzZW50IHdoZW4gd2UncmUgYWN0aW5nIGFzIGEgY2xpZW50LlxuQEAgLTExNTQsMTAgKzExNjcsMTIgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKGhhcmRfYWNrICsgMSA9PSAwKVxuIFx0XHRyZXR1cm4gcnhycGNfcHJvdG9fYWJvcnQoY2FsbCwgMCwgcnhycGNfZXByb3RvX2Fja3JfemVybyk7XG4gXG4tXHQvKiBJZ25vcmUgQUNLcyB1bmxlc3Mgd2UgYXJlIG9yIGhhdmUganVzdCBiZWVuIHRyYW5zbWl0dGluZy4gKi9cbitcdC8qIElnbm9yZSBBQ0tzIHVubGVzcyB3ZSBhcmUgdHJhbnNtaXR0aW5nIG9yIGFyZSB3YWl0aW5nIGZvclxuK1x0ICogYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBwYWNrZXRzIHdlJ3ZlIGp1c3QgYmVlbiB0cmFuc21pdHRpbmcuXG4rXHQgKi9cbiBcdHN3aXRjaCAoX19yeHJwY19jYWxsX3N0YXRlKGNhbGwpKSB7XG4gXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVDpcbi1cdGNhc2UgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfUkVQTFk6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbiBcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuIFx0XHRicmVhaztcbkBAIC0xMjE1LDcgKzEyMzAsMTcgQEAgc3RhdGljIHZvaWQgcnhycGNfaW5wdXRfYWNrYWxsKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCByeHJwY19hY2tfc3VtbWFyeSBzdW1tYXJ5ID0geyAwIH07XG4gXG4tXHRpZiAocnhycGNfcm90YXRlX3R4X3dpbmRvdyhjYWxsLCBjYWxsLVx1MDAzZXR4X3RvcCwgXHUwMDI2c3VtbWFyeSkpXG4rXHRzd2l0Y2ggKF9fcnhycGNfY2FsbF9zdGF0ZShjYWxsKSkge1xuK1x0Y2FzZSBSWFJQQ19DQUxMX0NMSUVOVF9TRU5EX1JFUVVFU1Q6XG4rXHRjYXNlIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSzpcbitcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfU0VORF9SRVBMWTpcbitcdGNhc2UgUlhSUENfQ0FMTF9TRVJWRVJfQVdBSVRfQUNLOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChyeHJwY19yb3RhdGVfdHhfd2luZG93KGNhbGwsIGNhbGwtXHUwMDNldHhfdHJhbnNtaXR0ZWQsIFx1MDAyNnN1bW1hcnkpKVxuIFx0XHRyeHJwY19lbmRfdHhfcGhhc2UoY2FsbCwgZmFsc2UsIHJ4cnBjX2Vwcm90b191bmV4cGVjdGVkX2Fja2FsbCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL25ldC9yeHJwYy9vb2IuYyBiL25ldC9yeHJwYy9vb2IuY1xuaW5kZXggMDVjYTljMWZhYTU3N2QuLmM4MGVlMjQ4N2QwOTQxIDEwMDY0NFxuLS0tIGEvbmV0L3J4cnBjL29vYi5jXG4rKysgYi9uZXQvcnhycGMvb29iLmNcbkBAIC0zMiwxMSArMzIsMTIgQEAgc3RydWN0IHJ4cnBjX29vYl9wYXJhbXMge1xuICAqIFBvc3QgYW4gb3V0LW9mLWJhbmQgbWVzc2FnZSBmb3IgYXR0ZW50aW9uIGJ5IHRoZSBzb2NrZXQgb3Iga2VybmVsIHNlcnZpY2VcbiAgKiBhc3NvY2lhdGVkIHdpdGggYSByZWZlcmVuY2UgY2FsbC5cbiAgKi9cbi12b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK2Jvb2wgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IHJ4cnBjX3NrYl9wcml2ICpzcCA9IHJ4cnBjX3NrYihza2IpO1xuIFx0c3RydWN0IHJ4cnBjX3NvY2sgKnJ4O1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuK1x0Ym9vbCBxdWV1ZWQgPSBmYWxzZTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcbkBAIC00OSw2ICs1MCw3IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldF9vb2Ioc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdFx0c2tiLVx1MDAzZXNrYl9tc3RhbXBfbnMgPSByeC1cdTAwM2Vvb2JfaWRfY291bnRlcisrO1xuIFx0XHRcdHJ4cnBjX2dldF9za2Ioc2tiLCByeHJwY19za2JfZ2V0X3Bvc3Rfb29iKTtcbiBcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX29vYnEsIHNrYik7XG4rXHRcdFx0cXVldWVkID0gdHJ1ZTtcbiBcbiBcdFx0XHR0cmFjZV9yeHJwY19ub3RpZnlfc29ja2V0KGNhbGwtXHUwMDNlZGVidWdfaWQsIHNwLVx1MDAzZWhkci5zZXJpYWwpO1xuIFx0XHRcdGlmIChyeC1cdTAwM2VhcHBfb3BzKVxuQEAgLTU2LDExICs1OCwxMiBAQCB2b2lkIHJ4cnBjX25vdGlmeV9zb2NrZXRfb29iKHN0cnVjdCByeHJwY19jYWxsICpjYWxsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXG4gXHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZyeC1cdTAwM2VyZWN2bXNnX2xvY2spO1xuLVx0XHRpZiAoIXJ4LVx1MDAzZWFwcF9vcHMgXHUwMDI2XHUwMDI2ICFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXG4rXHRcdGlmIChxdWV1ZWQgXHUwMDI2XHUwMDI2ICFyeC1cdTAwM2VhcHBfb3BzIFx1MDAyNlx1MDAyNiAhc29ja19mbGFnKHNrLCBTT0NLX0RFQUQpKVxuIFx0XHRcdHNrLVx1MDAzZXNrX2RhdGFfcmVhZHkoc2spO1xuIFx0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRyZXR1cm4gcXVldWVkO1xuIH1cbiBcbiAvKlxuQEAgLTIxMCw2ICsyMTMsMTEgQEAgc3RhdGljIGludCByeHJwY19yZXNwb25kX3RvX29vYihzdHJ1Y3QgcnhycGNfc29jayAqcngsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0c3dpdGNoIChza2ItXHUwMDNlbWFyaykge1xuK1x0Y2FzZSBSWFJQQ19PT0JfQ0hBTExFTkdFOlxuK1x0XHRyeHJwY19wdXRfY29ubmVjdGlvbihzcC1cdTAwM2VjaGFsbC5jb25uLCByeHJwY19jb25uX3B1dF9vb2IpO1xuK1x0XHRicmVhaztcbitcdH1cbiBcdHJ4cnBjX2ZyZWVfc2tiKHNrYiwgcnhycGNfc2tiX3B1dF9vb2IpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3JlY3Ztc2cuYyBiL25ldC9yeHJwYy9yZWN2bXNnLmNcbmluZGV4IDgyNjE0Y2JkYjYwZjVlLi5lZmNiYTRiMmU3NGYwYyAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9yZWN2bXNnLmNcbisrKyBiL25ldC9yeHJwYy9yZWN2bXNnLmNcbkBAIC0yNyw4ICsyNyw2IEBAIHZvaWQgcnhycGNfbm90aWZ5X3NvY2tldChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbClcbiBcbiBcdF9lbnRlcihcIiVkXCIsIGNhbGwtXHUwMDNlZGVidWdfaWQpO1xuIFxuLVx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmNhbGwtXHUwMDNlcmVjdm1zZ19saW5rKSlcbi1cdFx0cmV0dXJuO1xuIFx0aWYgKHRlc3RfYml0KFJYUlBDX0NBTExfUkVMRUFTRUQsIFx1MDAyNmNhbGwtXHUwMDNlZmxhZ3MpKSB7XG4gXHRcdHJ4cnBjX3NlZV9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfc2VlX25vdGlmeV9yZWxlYXNlZCk7XG4gXHRcdHJldHVybjtcbkBAIC00MzgsNyArNDM2LDggQEAgaW50IHJ4cnBjX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxuIFx0XHRyZXR1cm4gLUVBR0FJTjtcbiBcdH1cbiBcbi1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkpIHtcbitcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfcSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKFx1MDAyNnJ4LVx1MDAzZXJlY3Ztc2dfb29icSkpIHtcbiBcdFx0cmV0ID0gLUVXT1VMREJMT0NLO1xuIFx0XHRpZiAodGltZW8gPT0gMCkge1xuIFx0XHRcdGNhbGwgPSBOVUxMO1xuQEAgLTQ3MSw3ICs0NzAsNyBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRcdHJlbGVhc2Vfc29jayhcdTAwMjZyeC1cdTAwM2Vzayk7XG4gXHRcdGlmIChyZXQgPT0gLUVBR0FJTilcbiBcdFx0XHRnb3RvIHRyeV9hZ2Fpbjtcbi1cdFx0Z290byBlcnJvcl9ub19jYWxsO1xuK1x0XHRnb3RvIGVycm9yX3RyYWNlO1xuIFx0fVxuIFxuIFx0LyogRmluZCB0aGUgbmV4dCBjYWxsIGFuZCBkZXF1ZXVlIGl0IGlmIHdlJ3JlIG5vdCBqdXN0IHBlZWtpbmcuICBJZiB3ZVxuQEAgLTUzMCw4ICs1MjksNyBAQCBpbnQgcnhycGNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4gXHRpZiAodGVzdF9iaXQoUlhSUENfQ0FMTF9SRUxFQVNFRCwgXHUwMDI2Y2FsbC1cdTAwM2VmbGFncykpIHtcbiBcdFx0cnhycGNfc2VlX2NhbGwoY2FsbCwgcnhycGNfY2FsbF9zZWVfYWxyZWFkeV9yZWxlYXNlZCk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjYWxsLVx1MDAzZXVzZXJfbXV0ZXgpO1xuLVx0XHRpZiAoIShmbGFncyBcdTAwMjYgTVNHX1BFRUspKVxuLVx0XHRcdHJ4cnBjX3B1dF9jYWxsKGNhbGwsIHJ4cnBjX2NhbGxfcHV0X3JlY3Ztc2cpO1xuK1x0XHRyeHJwY19wdXRfY2FsbChjYWxsLCByeHJwY19jYWxsX3B1dF9yZWN2bXNnKTtcbiBcdFx0Z290byB0cnlfYWdhaW47XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3NlbmRtc2cuYyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbmluZGV4IGMzNWRlNGZkNzVlMzExLi5lZDJjOWE1MTAwNWFkZSAxMDA2NDRcbi0tLSBhL25ldC9yeHJwYy9zZW5kbXNnLmNcbisrKyBiL25ldC9yeHJwYy9zZW5kbXNnLmNcbkBAIC0zNjYsNyArMzY2LDggQEAgc3RhdGljIGludCByeHJwY19zZW5kX2RhdGEoc3RydWN0IHJ4cnBjX3NvY2sgKnJ4LFxuIFx0aWYgKHN0YXRlIFx1MDAzZT0gUlhSUENfQ0FMTF9DT01QTEVURSlcbiBcdFx0Z290byBtYXliZV9lcnJvcjtcbiBcdHJldCA9IC1FUFJPVE87XG4tXHRpZiAoc3RhdGUgIT0gUlhSUENfQ0FMTF9DTElFTlRfU0VORF9SRVFVRVNUIFx1MDAyNlx1MDAyNlxuK1x0aWYgKHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHN0YXRlICE9IFJYUlBDX0NBTExfQ0xJRU5UX1NFTkRfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9BQ0tfUkVRVUVTVCBcdTAwMjZcdTAwMjZcbiBcdCAgICBzdGF0ZSAhPSBSWFJQQ19DQUxMX1NFUlZFUl9TRU5EX1JFUExZKSB7XG4gXHRcdC8qIFJlcXVlc3QgcGhhc2UgY29tcGxldGUgZm9yIHRoaXMgY2xpZW50IGNhbGwgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjM1LjQyNTAxNjE1M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzNDQ5ODgxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIEFGUy9SWFJQQyBTdWJzeXN0ZW1zKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBib3RoIHRoZSBBRlMgZmlsZXN5c3RlbSBjb2RlIGFuZCB0aGUgUlhSUEMgbmV0d29yayBwcm90b2NvbCBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGJ1ZyBmaXgsIGdpdmVuIHRoZSBicmVhZHRoIG9mIHRoZSBjaGFuZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHRob3JvdWdobHkuXG5cbkhlcmUncyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDpcblxuKiAgICoqQUZTIFNlY3VyaXR5OioqIFRoZSBgZnMvYWZzL2NtX3NlY3VyaXR5LmNgIGZpbGUgaGFzIGEgbmV3IGBSRUFEX09OQ0UobmV0LVx1MDAzZWxpdmUpYCBjaGVjay4gVGhpcyBzdWdnZXN0cyBhbiBhZGRlZCBzYWZldHkgbWVjaGFuaXNtLCBwZXJoYXBzIHJlbGF0ZWQgdG8gbmV0d29yayBsaXZlbGluZXNzIG9yIGNvbm5lY3Rpb24gdmFsaWRpdHkgd2l0aGluIEFGUy5cbiogICAqKlJYUlBDIE9PQiBIYW5kbGluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgUlhSUEMncyBPT0IgKE91dC1vZi1CYW5kKSBoYW5kbGluZy4gYGZzL2Fmcy9yeHJwYy5jYCBoYXMgYSBgY2FuY2VsX3dvcmtfc3luY2AgY2FsbC4gVGhlIG1vcmUgc2lnbmlmaWNhbnQgY2hhbmdlcyBhcmUgaW4gdGhlIFJYUlBDIGNvZGUgc3BlY2lmaWNhbGx5IGFyb3VuZCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBPT0IgY2hhbGxlbmdlIGhhbmRsaW5nLiBJdCBsb29rcyBsaWtlIGBuZXQvcnhycGMvb29iLmNgIGhhcyBjaGFuZ2VzIGFuZCBgcnhycGNfcmVzcG9uZF90b19vb2JgIGlzIG5vdyBoYW5kbGluZyBgUlhSUENfT09CX0NIQUxMRU5HRWAgdG8gcHV0IGNvbm5lY3Rpb24gaW50byBzdGF0ZS5cbiogICAqKlJYUlBDIFN0YXRlIFRyYW5zaXRpb25zOioqIEEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgdGhpcyByZWxhdGVzIHRvIFJYUlBDJ3Mgc3RhdGUgbWFjaGluZS4gSSBzZWUgbmV3IHN0YXRlcywgYFJYUlBDX0NBTExfQ0xJRU5UX1BSRV9TRU5EYCBhbmQgYFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDS2AgYWRkZWQgdG8gdGhlIGByeHJwY19jYWxsX3N0YXRlYCBlbnVtLiBUaGUgc3RhdGUgdHJhbnNpdGlvbnMgaW4gYGNhbGxfZXZlbnQuY2AsIGBjb25uX2NsaWVudC5jYCwgYW5kIGBpbnB1dC5jYCBhcmUgYWxsIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGVzZSBuZXcgc3RhdGVzLiBUaGUgYWRkaXRpb24gb2Ygc3RhdGUgbmFtZXMgaW4gYGNhbGxfb2JqZWN0LmNgIGlzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIGFuZCBjbGFyaXR5LlxuKiAgICoqT09CIGFuZCBSZWN2L1NlbmQ6KiogYGNvbm5fZXZlbnQuY2AncyBgcnhycGNfcG9zdF9jaGFsbGVuZ2VgIG5vdyBjaGVja3MgdGhlIHF1ZXVlZCBgc2tiYC4gVGhlIGByZWN2bXNnYCBjb2RlIGluIGBuZXQvcnhycGMvcmVjdm1zZy5jYCBoYXMgdHdlYWtzIHRvIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBgbGlzdF9lbXB0eWAgY2hlY2sgYW5kIGFuIGFkZGl0aW9uIG9mIGEgYHNrYl9xdWV1ZV9lbXB0eV9sb2NrbGVzc2AgY2hlY2suIEZpbmFsbHksIGBzZW5kbXNnLmNgIGluIGBuZXQvcnhycGMvc2VuZG1zZy5jYCBub3cgaW5jbHVkZXMgYSBgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkRgIGNoZWNrIGluIGByeHJwY19zZW5kX2RhdGFgLlxuXG5PdmVyYWxsLCB0aGlzIGlzIGEgZmFpciBhbW91bnQgb2YgY2h1cm4gaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGVzZSBjaGFuZ2VzIHByb2JhYmx5IGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBiZWNhdXNlIEkgc2VlIGNoYW5nZXMgaW4gdGhlIG91dCBvZiBiYW5kIGhhbmRsaW5nLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCB0aGlzIGRlZmluaXRlbHkgbmVlZHMgZnV6emluZy4gSSBoYXZlIHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBmaWxlIHBhdGhzLCBJJ2Qgc2F5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19BRlNfRlNgIGZvciB0aGUgQUZTIGNoYW5nZXMgYW5kIGBDT05GSUdfQUZfUlhSUENgIGZvciB0aGUgUlhSUEMgY2hhbmdlcy4gVGltZSB0byBkaWcgaW50byBgbmV0L3J4cnBjL0tjb25maWdgIGFuZCBgZnMvYWZzL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzowMTo0NC43NzAwMDY0NThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNjg4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Fmcy9LY29uZmlnOjI6Y29uZmlnIEFGU19GU1xcbmZzL2Fmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFuZHJldyBGaWxlIFN5c3RlbSBzdXBwb3J0IChBRlMpXFxcIlxcbi0tXFxuZnMvYWZzL0tjb25maWc9MTc9Y29uZmlnIEFGU19ERUJVR1xcbi0tXFxuZnMvYWZzL0tjb25maWctMjYtXFxuZnMvYWZzL0tjb25maWc6Mjc6Y29uZmlnIEFGU19GU0NBQ0hFXFxuZnMvYWZzL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiUHJvdmlkZSBBRlMgY2xpZW50IGNhY2hpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDE6NDQuODM4Mjc5ODg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1NTI5ODY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUnhSUEMgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBSeFJQQyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbG1vc3QgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhhdCBzdWJzeXN0ZW0sIHJpZ2h0PyBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dC4gU28sIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIGBuZXQvcnhycGMvS2NvbmZpZ2AgYW5kIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLlwiIFRoYXQgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGtub2JzIGFuZCBsZXZlcnMgYXZhaWxhYmxlIGZvciBSeFJQQy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgd2lkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjAxOjQ3LjY5MzU4MDUwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA5MDk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQUZfUlhSUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3J4cnBjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3J4cnBjL0tjb25maWctNS1cXG5uZXQvcnhycGMvS2NvbmZpZzo2OmNvbmZpZyBBRl9SWFJQQ1xcbm5ldC9yeHJwYy9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlJ4UlBDIHNlc3Npb24gc29ja2V0c1xcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnPTI1PWlmIEFGX1JYUlBDXFxubmV0L3J4cnBjL0tjb25maWctMjYtXFxubmV0L3J4cnBjL0tjb25maWc6Mjc6Y29uZmlnIEFGX1JYUlBDX0lQVjZcXG5uZXQvcnhycGMvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIFJ4UlBDXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctMzMtXFxubmV0L3J4cnBjL0tjb25maWc6MzQ6Y29uZmlnIEFGX1JYUlBDX0lOSkVDVF9MT1NTXFxubmV0L3J4cnBjL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiSW5qZWN0IHBhY2tldCBsb3NzIGludG8gUnhSUEMgcGFja2V0IHN0cmVhbVxcXCJcXG4tLVxcbm5ldC9yeHJwYy9LY29uZmlnLTM5LVxcbm5ldC9yeHJwYy9LY29uZmlnOjQwOmNvbmZpZyBBRl9SWFJQQ19JTkpFQ1RfUlhfREVMQVlcXG5uZXQvcnhycGMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJJbmplY3QgZGVsYXkgaW50byBwYWNrZXQgcmVjZXB0aW9uXFxcIlxcbi0tXFxubmV0L3J4cnBjL0tjb25maWctNDktXFxubmV0L3J4cnBjL0tjb25maWc6NTA6Y29uZmlnIEFGX1JYUlBDX0RFQlVHXFxubmV0L3J4cnBjL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiUnhSUEMgZHluYW1pYyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz04OT1jb25maWcgUlhQRVJGXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZy05NS1cXG5uZXQvcnhycGMvS2NvbmZpZzo5Njpjb25maWcgQUZfUlhSUENfS1VOSVRfVEVTVFxcbm5ldC9yeHJwYy9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJSeFJQQyBjcnlwdG8gS1VuaXQgdGVzdFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzowMTo0Ny43NzE2NzY1MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5MjczMDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBLZXkgQ2hhbmdlcyBpbiBBRlMgYW5kIFJ4UlBDIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEdpdmVuIHRoZSBjb25maWd1cmF0aW9ucyBgQUZTX0ZTYCBhbmQgYEFGX1JYUlBDYCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjcnVjaWFsIGFyZWFzIGZvciBmdXp6aW5nIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNoYW5nZXMgdG8gdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSBzdGF0ZSBtYWNoaW5lIG1vZGlmaWNhdGlvbnMgd2l0aGluIFJ4UlBDLlxuXG5Jbml0aWFsbHksIEknZCBub3RlZCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucy4gTm93LCBsZXQncyBmaWx0ZXIgdGhlIGNhbmRpZGF0ZSBzeW1ib2xzLiBJIHdhcyB0aGlua2luZyBvZiBpbmNsdWRpbmcgaG90LXBhdGggZnVuY3Rpb25zIGxpa2UgYHJ4cnBjX3NlbmRfZGF0YWAsIGByeHJwY19yZWN2bXNnYCwgYHJ4cnBjX2lucHV0X2RhdGFgLCBhbmQgYHJ4cnBjX2lucHV0X2Fja2AsIGJ1dCBzaW5jZSB0aGV5IGFyZSBtb2RpZmllZCwgdGhlcmUgbWlnaHQgYmUgdmFsdWUuIEl0J3MgdG9vIG11Y2guIFRoZSBPT0IgaGFuZGxpbmcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuICBUaGVyZWZvcmUsIGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBhbmQgYGFmc19jbG9zZV9zb2NrZXRgIGFyZSB0aGUgcHJpbWFyeSBvbmVzIHRoYXQgSSBzZWUuXG5cblRoZW4gSSBjaGVja2VkIGByeHJwY19yb3RhdGVfdHhfd2luZG93YCBhbmQgYHJ4cnBjX3RyYW5zbWl0X2ZyZXNoX2RhdGFgLiBPbmUncyBjYWxsZWQgb24gQUNLcyBhbmQgdGhlIG90aGVyIG9uIGZyZXNoIGRhdGEsIHNvIHRoZXkgYXJlIHNvbWV3aGF0IGhvdC4gVGhlIHN0YXRlIG1hY2hpbmUgY2hhbmdlcyBhcmUgaW1wb3J0YW50IGFzIHdlbGwsIHNvIG1heWJlIEknbGwgaW5jbHVkZSBgcnhycGNfY2xvc2VfdHhfcGhhc2VgLCBgcnhycGNfZW5kX3R4X3BoYXNlYCwgYW5kIGByeHJwY19yZWNlaXZpbmdfcmVwbHlgLiBUaGVzZSB3aWxsIGNhcHR1cmUgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgbWlnaHQgYmUgZGlzcnVwdGVkIGJ5IG1hbGZvcm1lZCBpbnB1dC5cblxuSSB0aGluayB0aGUgZmluYWwgZm9jdXMgc3ltYm9scyBzaG91bGQgYmU6IGByeHJwY19ub3RpZnlfc29ja2V0X29vYmAsIGByeHJwY19wb3N0X2NoYWxsZW5nZWAsIGByeHJwY19yZXNwb25kX3RvX29vYmAsIGBhZnNfcnhfbm90aWZ5X29vYmAsIGBhZnNfcHJvY2Vzc19vb2JfcXVldWVgLCBgYWZzX2Nsb3NlX3NvY2tldGAsIGByeHJwY19jbG9zZV90eF9waGFzZWAsIGByeHJwY19lbmRfdHhfcGhhc2VgLCBhbmQgYHJ4cnBjX3JlY2VpdmluZ19yZXBseWAuXG5cbkJhc2ljYWxseSwgSSB3YW50IHRvIGVuc3VyZSB0aGUgT09CIGludGVyYWN0aW9ucyBhcmUgcm9idXN0IGFuZCB0aGF0IHRoZSBuZXcgUnhSUEMgY2FsbCBzdGF0ZXMgKGBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORGAsIGBSWFJQQ19DQUxMX0NMSUVOVF9BV0FJVF9BQ0tgKSBhcmUgY29ycmVjdGx5IGhhbmRsZWQgYW5kIGRvbid0IGludHJvZHVjZSBhbnkgZXhwbG9pdGFibGUgZmxhd3MuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbmV4dXMgb2YgY2hhbmdlcy4gVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0NywiT3V0cHV0VG9rZW5zIjoyMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MDI6MDEuNjY0NDA5MjUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM4NDk0NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFGU19GU1wiLFxuICAgIFwiQUZfUlhSUENcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyeHJwY19ub3RpZnlfc29ja2V0X29vYlwiLFxuICAgIFwicnhycGNfcG9zdF9jaGFsbGVuZ2VcIixcbiAgICBcInJ4cnBjX3Jlc3BvbmRfdG9fb29iXCIsXG4gICAgXCJhZnNfcnhfbm90aWZ5X29vYlwiLFxuICAgIFwiYWZzX3Byb2Nlc3Nfb29iX3F1ZXVlXCIsXG4gICAgXCJhZnNfY2xvc2Vfc29ja2V0XCIsXG4gICAgXCJyeHJwY19jbG9zZV90eF9waGFzZVwiLFxuICAgIFwicnhycGNfZW5kX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19yZWNlaXZpbmdfcmVwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgcnhycGMgYW5kIGFmcyBzdWJzeXN0ZW1zLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBvdXQtb2YtYmFuZCAoT09CKSBtZXNzYWdlIGhhbmRsaW5nIGFuZCB0aGUgcnhycGMgY2FsbCBzdGF0ZSBtYWNoaW5lIChhZGRpbmcgUlhSUENfQ0FMTF9DTElFTlRfUFJFX1NFTkQgYW5kIFJYUlBDX0NBTExfQ0xJRU5UX0FXQUlUX0FDSyBzdGF0ZXMpLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIG5ldHdvcmsgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJBRl9SWFJQQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ4cnBjX25vdGlmeV9zb2NrZXRfb29iXCIsXG4gICAgXCJyeHJwY19wb3N0X2NoYWxsZW5nZVwiLFxuICAgIFwicnhycGNfcmVzcG9uZF90b19vb2JcIixcbiAgICBcImFmc19yeF9ub3RpZnlfb29iXCIsXG4gICAgXCJhZnNfcHJvY2Vzc19vb2JfcXVldWVcIixcbiAgICBcImFmc19jbG9zZV9zb2NrZXRcIixcbiAgICBcInJ4cnBjX2Nsb3NlX3R4X3BoYXNlXCIsXG4gICAgXCJyeHJwY19lbmRfdHhfcGhhc2VcIixcbiAgICBcInJ4cnBjX3JlY2VpdmluZ19yZXBseVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSByeHJwYyBhbmQgYWZzIHN1YnN5c3RlbXMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIG91dC1vZi1iYW5kIChPT0IpIG1lc3NhZ2UgaGFuZGxpbmcgYW5kIHRoZSByeHJwYyBjYWxsIHN0YXRlIG1hY2hpbmUgKGFkZGluZyBSWFJQQ19DQUxMX0NMSUVOVF9QUkVfU0VORCBhbmQgUlhSUENfQ0FMTF9DTElFTlRfQVdBSVRfQUNLIHN0YXRlcykuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgbmV0d29yayBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhleSBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz88fk[1] Phase: Succeeded StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 17:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 17:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2] Phase: Succeeded StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 17:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 17:03:36 +0000 UTC FinishedAt: 2026-06-24 17:03:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz88fk/series-workflowz88fk-convert-artifact-4202367332/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 17:03:46 +0000 UTC FinishedAt: 2026-06-24 17:25:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 17:03:46 +0000 UTC FinishedAt: 2026-06-24 17:25:15 +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:*ac29b989-b8e7-451f-becb-ba29bd79e026,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-workflowz88fk/series-workflowz88fk-convert-artifact-4202367332/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": "4885510c-1ce0-46d6-807a-e528ea7669cb", "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-workflowz88fk/series-workflowz88fk-build-action-631679394/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 17:03:46 +0000 UTC FinishedAt: 2026-06-24 17:25:05 +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:*ac29b989-b8e7-451f-becb-ba29bd79e026,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-workflowz88fk/series-workflowz88fk-convert-artifact-4202367332/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": "4885510c-1ce0-46d6-807a-e528ea7669cb", "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-workflowz88fk/series-workflowz88fk-build-action-631679394/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 17:25:15 +0000 UTC FinishedAt: 2026-06-24 17:25:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 17:25:15 +0000 UTC FinishedAt: 2026-06-24 17:25:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 17:25:15 +0000 UTC FinishedAt: 2026-06-24 17:25:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 17:25:15 +0000 UTC FinishedAt: 2026-06-24 17:25:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz88fk/series-workflowz88fk-convert-artifact-236080227/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 17:25:25 +0000 UTC FinishedAt: 2026-06-24 17:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 17:25:25 +0000 UTC FinishedAt: 2026-06-24 17:27:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4885510c-1ce0-46d6-807a-e528ea7669cb,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-workflowz88fk/series-workflowz88fk-build-action-631679394/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-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 17:27:16 +0000 UTC FinishedAt: 2026-06-24 17:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 17:27:16 +0000 UTC FinishedAt: 2026-06-24 17:27:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 17:27:16 +0000 UTC FinishedAt: 2026-06-24 17:53:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 17:27:16 +0000 UTC FinishedAt: 2026-06-24 17:53:12 +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:*ac29b989-b8e7-451f-becb-ba29bd79e026,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-workflowz88fk/series-workflowz88fk-convert-artifact-236080227/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": "fba9dc06-d51b-4e30-aeef-c894af91fa8b", "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-workflowz88fk/series-workflowz88fk-build-action-2619840791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 17:27:16 +0000 UTC FinishedAt: 2026-06-24 17:52:48 +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:*ac29b989-b8e7-451f-becb-ba29bd79e026,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-workflowz88fk/series-workflowz88fk-convert-artifact-236080227/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": "fba9dc06-d51b-4e30-aeef-c894af91fa8b", "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-workflowz88fk/series-workflowz88fk-build-action-2619840791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 17:53:12 +0000 UTC FinishedAt: 2026-06-24 17:53:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 17:53:12 +0000 UTC FinishedAt: 2026-06-24 17:53:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 17:53:12 +0000 UTC FinishedAt: 2026-06-24 17:55:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 17:53:12 +0000 UTC FinishedAt: 2026-06-24 17:54:55 +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:*fba9dc06-d51b-4e30-aeef-c894af91fa8b,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-workflowz88fk/series-workflowz88fk-build-action-2619840791/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-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +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":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"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:*4885510c-1ce0-46d6-807a-e528ea7669cb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fba9dc06-d51b-4e30-aeef-c894af91fa8b,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-workflowz88fk/series-workflowz88fk-build-action-631679394/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-workflowz88fk/series-workflowz88fk-build-action-2619840791/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 17:56:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 17:55:37 +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":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"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-workflowz88fk/series-workflowz88fk-convert-artifact-2988356988/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 17:55:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 17:55:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 17:55:04 +0000 UTC FinishedAt: 2026-06-24 17:55:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 17:56:17 +0000 UTC FinishedAt: 2026-06-24 20:59:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz88fk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rxrpc_notify_socket_oob","rxrpc_post_challenge","rxrpc_respond_to_oob","afs_rx_notify_oob","afs_process_oob_queue","afs_close_socket","rxrpc_close_tx_phase","rxrpc_end_tx_phase","rxrpc_receiving_reply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["AFS_FS","AF_RXRPC"],"series_id":"a62521d6-5a0e-4c07-a448-8a09995221eb","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 17:56:17 +0000 UTC FinishedAt: 2026-06-24 20:58:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4885510c-1ce0-46d6-807a-e528ea7669cb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fba9dc06-d51b-4e30-aeef-c894af91fa8b,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-workflowz88fk/series-workflowz88fk-build-action-631679394/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-workflowz88fk/series-workflowz88fk-build-action-2619840791/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-workflowz88fk/series-workflowz88fk-convert-artifact-2988356988/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,}