Name: series-workflow46nwl Phase: Succeeded StartedAt: 2026-08-09 11:47:36 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[0] Phase: Succeeded StartedAt: 2026-08-09 11:47:36 +0000 UTC FinishedAt: 2026-08-09 12:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 11:47:36 +0000 UTC FinishedAt: 2026-08-09 12:08:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "06cf61899d6498b33e4b7c87d99d5bd471ccc375", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "06cf61899d6498b33e4b7c87d99d5bd471ccc375", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM", "MAC80211" ], "series_id": "b8c16aee-1d57-4ede-87eb-ca86618e4d7e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hwsim_new_radio_nl", "hwsim_del_radio_nl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fbmV3X3JhZGlvX25sJiMzNDssCiAgICAmIzM0O2h3c2ltX2RlbF9yYWRpb19ubCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlIHdoZW4gcmFkaW9zIGFyZSBjcmVhdGVkIG9yIGRlbGV0ZWQgd2l0aG91dCBhIG5ldGxpbmsgcmVxdWVzdCAoZS5nLiBkdXJpbmcgbW9kdWxlIGluaXQvZXhpdCBvciBuZXRucyBleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1hYzgwMjExX2h3c2ltLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWZhYmI2MTI3YjY1YzVhYzM1MTQ5ZTk5NWU4YmU3M2JiZDZkYjZiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTI6MDM6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgJiM0Mzs0MzcyLDE1IEBAIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zIHtcbiBcdGJvb2wgYmFja2dyb3VuZF9yYWRhcjtcbiB9O1xuIFxuLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYixcbiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdGlmIChpbmZvKVxuIFx0XHRnZW5sX25vdGlmeShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxuIFx0XHRcdCAgICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIFx0ZWxzZVxuLVx0XHRnZW5sbXNnX211bHRpY2FzdChcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCAwLFxuLVx0XHRcdFx0ICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuJiM0MztcdFx0XHRcdFx0SFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiB9XG4gXG4gc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCxcbkBAIC00NDY0LDcgJiM0Mzs0NDY0LDggQEAgc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyAqcGFyYW0pXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYjtcbkBAIC00NDg0LDcgJiM0Mzs0NDg1LDcgQEAgc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcbiBcdGdlbmxtc2dfZW5kKG1jYXN0X3NrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgaW5mbyk7XG4mIzQzO1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgJiM0Mzs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcdGh3c2ltX3JhZGlvc19nZW5lcmF0aW9uJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuJiM0MztcdGh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIHdpcGh5X25ldChkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSwgaW5mbywgcGFyYW0pO1xuIFxuIFx0cmV0dXJuIGlkeDtcbiBcbkBAIC02MTgzLDcgJiM0Mzs2MTg0LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiB9XG4gXG4gc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLVx0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuJiM0MztcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyAmIzQzOzYyMTAsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsXG4gXG4gXHRnZW5sbXNnX2VuZChza2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIGluZm8pO1xuJiM0MztcdGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBuZXQsIGluZm8pO1xuIFxuIFx0cmV0dXJuO1xuIFxuQEAgLTYyMjEsNyAmIzQzOzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4mIzQzO1x0aHdzaW1fbWNhc3RfZGVsX3JhZGlvKGRhdGEtXHUwMDNlaWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSwgaW5mbyk7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGF0YS1cdTAwM2VkZWJ1Z2ZzKTtcbiBcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRhdGEtXHUwMDNlaHcpO1xuIFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRhdGEtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywKICAgICYjMzQ7aHdzaW1fZGVsX3JhZGlvX25sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZmFiYjYxMjdiNjVjNWFjMzUxNDllOTk1ZThiZTczYmJkNmRiNmJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAxMjowMzoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKQEAgLTQzNzIsMTUgJiM0Mzs0MzcyLDE1IEBAIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zIHsKIAlib29sIGJhY2tncm91bmRfcmFkYXI7CiB9OwogCi1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsCiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsCiAJCQkJICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlpZiAoaW5mbykKIAkJZ2VubF9ub3RpZnkoJmFtcDtod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLAogCQkJICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiAJZWxzZQotCQlnZW5sbXNnX211bHRpY2FzdCgmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBtY2FzdF9za2IsIDAsCi0JCQkJICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpOwomIzQzOwkJZ2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoJmFtcDtod3NpbV9nZW5sX2ZhbWlseSwgbmV0LCBtY2FzdF9za2IsIDAsCiYjNDM7CQkJCQlIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpOwogfQogCiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLApAQCAtNDQ2NCw3ICYjNDM7NDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IG5ldCAqbmV0LAomIzQzOwkJCQkgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAJCQkJICBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyAqcGFyYW0pCiB7CiAJc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYjsKQEAgLTQ0ODQsNyAmIzQzOzQ0ODUsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLAogCiAJZ2VubG1zZ19lbmQobWNhc3Rfc2tiLCBkYXRhKTsKIAotCWh3c2ltX21jYXN0X2NvbmZpZ19tc2cobWNhc3Rfc2tiLCBpbmZvKTsKJiM0MzsJaHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7CiAJcmV0dXJuOwogCiBvdXRfZXJyOgpAQCAtNjE2NSw3ICYjNDM7NjE2Niw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAJaHdzaW1fcmFkaW9zX2dlbmVyYXRpb24mIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2JoKCZhbXA7aHdzaW1fcmFkaW9fbG9jayk7CiAKLQlod3NpbV9tY2FzdF9uZXdfcmFkaW8oaWR4LCBpbmZvLCBwYXJhbSk7CiYjNDM7CWh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIHdpcGh5X25ldChkYXRhLSZndDtody0mZ3Q7d2lwaHkpLCBpbmZvLCBwYXJhbSk7CiAKIAlyZXR1cm4gaWR4OwogCkBAIC02MTgzLDcgJiM0Mzs2MTg0LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIH0KIAogc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLAotCQkJCSAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKJiM0MzsJCQkJICBzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAl2b2lkICpkYXRhOwpAQCAtNjIwOSw3ICYjNDM7NjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSwKIAogCWdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7CiAKLQlod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7CiYjNDM7CWh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBuZXQsIGluZm8pOwogCiAJcmV0dXJuOwogCkBAIC02MjIxLDcgJiM0Mzs2MjIyLDcgQEAgc3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLAogCQkJCSAgICAgY29uc3QgY2hhciAqaHduYW1lLAogCQkJCSAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKLQlod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS0mZ3Q7aWR4LCBod25hbWUsIGluZm8pOwomIzQzOwlod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS0mZ3Q7aWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLSZndDtody0mZ3Q7d2lwaHkpLCBpbmZvKTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGF0YS0mZ3Q7ZGVidWdmcyk7CiAJaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS0mZ3Q7aHcpOwogCWRldmljZV9yZWxlYXNlX2RyaXZlcihkYXRhLSZndDtkZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgVmlydHVhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgZm9jdXNpbmcgb24gaG93IHdlIGhhbmRsZSBtdWx0aWNhc3QgbmV0bGluayBtZXNzYWdlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZW5sbXNnX211bHRpY2FzdGAgdG8gYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbiBhIGZldyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaHdzaW1fbWNhc3RfY29uZmlnX21zZ2AsIGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gLCBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCwgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBjb3JyZWN0bHkgcm91dGVkIHRvIHRoZSBwcm9wZXIgbmV0d29yayBuYW1lc3BhY2UuCgpBIGJpdCBvZiBhIGhlYWQtc2NyYXRjaGVyLi4udGhvc2UgbGFzdCB0d28sIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYCwgYXJlIHN0YXRpYy4gVGhhdCYjMzk7cyBub3QgdGhlIHVzdWFsIHRhcmdldCBmb3IgdGhpcyB0eXBlIG9mIHBhdGNoLCB1c3VhbGx5LiBMZXQgbWUgZG91YmxlLWNoZWNrIC0gSSB3YW50IHRvIHZlcmlmeSBpZiB0aGVyZSYjMzk7cyBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhpcyBtaWdodCBhZmZlY3QuIE9rYXksIHNvIEkgc2VlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIGNhbGxlZCBmcm9tIGBod3NpbV9uZXdfcmFkaW9fbmxgLCB3aGljaCBpcyBhIG5ldGxpbmsgY2FsbGJhY2suIE5vdyBJIGhhdmUgYSBnb29kIGxlYWQgZm9yIGludmVzdGlnYXRpb24uIEkgd2lsbCBqdXN0IGRvIGEgcXVpY2sgZ3JlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NTE6c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTItXHRcdFx0XHQgICAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY3NTM9c3RhdGljIGludCBod3NpbV9uZXdfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjkwNTpcdHJldCA9IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhpbmZvLCBcdTAwMjZwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0NTg9c3RhdGljIGludCBfX2luaXQgaW5pdF9tYWM4MDIxMV9od3NpbSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc1NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NTcyOlx0XHRlcnIgPSBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oTlVMTCwgXHUwMDI2cGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzU3My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTk4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgYSBtYWM4MDIxMV9od3NpbSBSYWRpbyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2Ugc2ltdWxhdGVkIHJhZGlvcyBhcmUgY3JlYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMV9od3NpbWAgbW9kdWxlLiBNeSBjdXJyZW50IHRyYWluIG9mIHRob3VnaHQgaXMgZm9jdXNlZCBvbiB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgSSYjMzk7dmUgc2VlbiBpdCBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGluaXRfbWFjODAyMTFfaHdzaW1gLiAgVGhlIGZvcm1lciwgYGh3c2ltX25ld19yYWRpb19ubGAsIHN0cmlrZXMgbWUgYXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIHN1Z2dlc3RzIGFuIGV4dGVybmFsIGNvbnRyb2wgbWVjaGFuaXNtIGZvciB0aGVzZSByYWRpb3MsIHByb2JhYmx5IGZyb20gdXNlcnNwYWNlLiBJdCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCBieSB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0cmFjayBkb3duIHRoaXMgbmV0bGluayBmYW1pbHkuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBuZXRsaW5rIGZhbWlseSB0byB1bmRlcnN0YW5kIHRoZSBleHRlcm5hbCBjb250cm9sIG9mIGBtYWM4MDIxMV9od3NpbWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fbmV3X3JhZGlvX25sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjcxND1zdGF0aWMgaW50IHBhcnNlX3Btc3JfY2FwYShjb25zdCBzdHJ1Y3QgbmxhdHRyICpwbXNyX2NhcGEsIHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqb3V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTY3NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2NzUzOnN0YXRpYyBpbnQgaHdzaW1fbmV3X3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02NzU0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA3Mi1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA3MzpcdFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDc0LVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzAKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGVsdmluZyBpbnRvIHRoZSBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8gZnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpb2AuIFJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzIGNsZWFybHkgYWJvdXQgcmVtb3ZpbmcgYSBzaW11bGF0ZWQgcmFkaW8gaW50ZXJmYWNlIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBmcmFtZXdvcmsuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgdW5kZXJzdGFuZCB0aGUgY29yZSBjb25jZXB0IGlzIGhvdyB0aGlzIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFuZGxlcyB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIHNpbXVsYXRlZCBkZXZpY2VzLiBJdCYjMzk7cyB0aGUgZXF1aXZhbGVudCBvZiAmIzM0O3RlYXJpbmcgZG93biYjMzQ7IGEgdmlydHVhbCByYWRpby4gTm93LCB3aGF0JiMzOTtzIHNwZWNpZmljYWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoaXMgJiMzNDt0ZWFyZG93biYjMzQ7IGlzIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIElzIGl0IHNpbXBseSBmcmVlaW5nIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gdGhlIHZpcnR1YWwgcmFkaW8/IE9yIGlzIGl0IGhhbmRsaW5nIG1vcmUgaW50cmljYXRlIHRoaW5ncz8gVGhpbmtpbmcgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQsIEkmIzM5O2QgZXhwZWN0IGl0IGhhcyB0byBmcmVlIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmFkaW8sIHBlcmhhcHMgZGUtcmVnaXN0ZXIgaXQgZnJvbSB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIElzIGl0IHRha2luZyBjYXJlIG9mIGNsZWFuaW5nIHVwIGFueSBhc3NvY2lhdGVkIHF1ZXVlcyBvciBsaXN0cz8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciBzdWJzeXN0ZW1zIG9yIGRyaXZlcnM/IFRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGludGVyYWN0aW9uIHdpdGggdGhlICYjMzQ7aG9zdCYjMzQ7IHNpZGUgLSB0aGUgc2ltdWxhdGVkIGhvc3QgYW5kIHRoZSBrZXJuZWwuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBnZXQgaW50byB0aGUgc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxODY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjIxOnN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMjItXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MjgwPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2ZyZWUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mjg5LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYyOTA6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjI5MS1cdFx0XHRcdFx0IE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY5MTM9c3RhdGljIGludCBod3NpbV9kZWxfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTQ4LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjY5NDk6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjk1MC1cdFx0XHRcdFx0IGluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMDk9c3RhdGljIHZvaWQgcmVtb3ZlX3VzZXJfcmFkaW9zKHUzMiBwb3J0aWQsIGludCBuZXRncm91cClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI3LVx0XHRsaXN0X2RlbChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMjg6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhlbnRyeSwgd2lwaHlfbmFtZShlbnRyeS1cdTAwM2Vody1cdTAwM2V3aXBoeSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI5LVx0XHRcdFx0XHQgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzE4NT1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGh3c2ltX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA3LVx0XHRsaXN0X2RlbChcdTAwMjZkYXRhLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzIwODpcdFx0bWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvKGRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA5LVx0XHRcdFx0XHQgd2lwaHlfbmFtZShkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY0CgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0bGluayBNdWx0aWNhc3QgQ2hhbmdlIGluIG1hYzgwMjExX2h3c2ltKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGNhbGxiYWNrcywgYW5kIHRoZXkmIzM5O3JlIHN0YXRpYy4mIzM0OyAgVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGJlaGF2aW9yLiAgSXQgdXNlZCB0byBzZW5kIHRvIGVpdGhlciB0aGUgaW5pdGlhbCBuZXR3b3JrIG5hbWVzcGFjZSwgYGluaXRfbmV0YCwgb3IgcG9zc2libHkgKmFsbCogbmFtZXNwYWNlcy4gIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEhtbSwgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnksIGRvZXMgYGdlbmxtc2dfbXVsdGljYXN0YCB1c2UgYGluaXRfbmV0YD8KCkFoLCByaWdodCwgYGdlbmxtc2dfbXVsdGljYXN0YCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zKCZhbXA7aW5pdF9uZXQsIC4uLilgLiAgU28sIGl0ICp3YXMqIHNlbmRpbmcgb25seSB0byBgaW5pdF9uZXRgLiAgTm93LCBpdCYjMzk7cyBjaGFuZ2VkIHRvIGB3aXBoeV9uZXQoZGF0YS0mZ3Q7aHctJmd0O3dpcGh5KWAuICBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGZpeGluZyB0aGUgbmV0bGluayBub3RpZmljYXRpb25zIGZvciBgbWFjODAyMTFfaHdzaW1gIGluIG5ldHdvcmsgbmFtZXNwYWNlcy4gVGhpcyBpcyBpbXBvcnRhbnQsIGl0IGZpeGVzIGEga25vd24gaXNzdWUuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbCBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzICpoZWF2aWx5KiByZWxpZWQgdXBvbiBmb3IgdGVzdGluZywgaW5jbHVkaW5nIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLiAgVGhhdCBtYWtlcyB0aGlzIGEgaGlnaC1wcmlvcml0eSB0YXJnZXQuCgpUaGUgc3BlY2lmaWMgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSB0aG9zZSBjYWxsYmFja3MsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYC4gIEhvd2V2ZXIsIHRoZXkmIzM5O3JlIHN0YXRpYywgc28gSSB3b24mIzM5O3QgYmUgYWJsZSB0byBjYWxsIHRoZW0gZGlyZWN0bHkuIEkgbmVlZCB0byBzZWUgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYXJvdW5kLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jYCB0byBsb29rIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Mjk3PXN0YXRpYyB1bnNpZ25lZCBpbnQgaHdzaW1fbmV0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA1OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaHdzaW1fdmlydGlvX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo5MDg6c3RhdGljIERFQ0xBUkVfV09SSyhod3NpbV92aXJ0aW9fcngsIGh3c2ltX3ZpcnRpb19yeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xMjY1PXN0YXRpYyBpbmxpbmUgdTY0IG1hYzgwMjExX2h3c2ltX2dldF9zaW1fdHNmKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzA6a3RpbWVfdCBtYWM4MDIxMV9od3NpbV90c2ZfdG9fYm9vdHRpbWUoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjcxLVx0XHRcdFx0ICAgICAgIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzktXHRcdFx0XHQgICBrdGltZV90IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjg2OnU2NCBtYWM4MDIxMV9od3NpbV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIxMDQ9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIyODg6dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM5OS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTMKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTWFjODAyMTEgSFdTaW0gTW9kdWxlJiMzOTtzIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGBtYWM4MDIxMV9od3NpbWAgY29kZSBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gSSYjMzk7dmUgbm90aWNlZCBzb21ldGhpbmcgdGhhdCYjMzk7cyBtYWtpbmcgbWUgcGF1c2UuIFNldmVyYWwga2V5IGZ1bmN0aW9ucywgbGlrZSBgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lYCwgYG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZmAsIGBtYWM4MDIxMV9od3NpbV9nZXRfdHNmYCwgYGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlYCwgYW5kIGBtYWM4MDIxMV9od3NpbV90eF9mcmFtZWAsIGFyZSAqbm90KiBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZCBhYm91dCB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGV4dGVybmFsIGludGVyYWN0aW9ucy4gVGhleSBzZWVtIHRvIGJlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24gaXRzZWxmLgoKVGhlbiBJIGxvb2sgYXQgdGhlIG5ldGxpbmsgZnVuY3Rpb25zLCB3aGljaCBoYW5kbGUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB1c2Vyc3BhY2UuIFRob3NlLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGVzaWduLCBhcyBuZXRsaW5rIGlzIGhvdyBvdXRzaWRlIGVudGl0aWVzIGNvbm5lY3QgdG8gYW5kIGNvbnRyb2wgdGhlIG1vZHVsZS4KClNvLCB0aGUgcXVlc3Rpb24gaXMsICphcmUqIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSBvciB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcz8gSWYgc28sIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBkZXNpZ24/IE15IG1lbnRhbCBtb2RlbCBzZWVzIHBvdGVudGlhbCBhcmVhcyBmb3IgY2xvc2VyIGluc3BlY3Rpb24gd2hlcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgb3IgYXJlIGludGVydHdpbmVkIHdpdGggdGhlIG5ldGxpbmsgZnVuY3Rpb25zLiBJIHdpbGwgbmVlZCB0byBsb29rIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Mjk3PXN0YXRpYyB1bnNpZ25lZCBpbnQgaHdzaW1fbmV0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA1OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaHdzaW1fdmlydGlvX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo5MDg6c3RhdGljIERFQ0xBUkVfV09SSyhod3NpbV92aXJ0aW9fcngsIGh3c2ltX3ZpcnRpb19yeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xMjY1PXN0YXRpYyBpbmxpbmUgdTY0IG1hYzgwMjExX2h3c2ltX2dldF9zaW1fdHNmKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzA6a3RpbWVfdCBtYWM4MDIxMV9od3NpbV90c2ZfdG9fYm9vdHRpbWUoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjcxLVx0XHRcdFx0ICAgICAgIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzktXHRcdFx0XHQgICBrdGltZV90IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjg2OnU2NCBtYWM4MDIxMV9od3NpbV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIxMDQ9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIyODg6dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM5OS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50IENob2ljZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBkaXJlY3RseSB1c2UgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgIGFzIEZvY3VzU3ltYm9scywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLiBUaGUgcHJvbXB0LCB0aG91Z2gsIHRocm93cyBhIGN1cnZlYmFsbCwgc3RhdGluZyBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiBpbmxpbmVkIGZ1bmN0aW9ucyBsYWNrIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGFyZW4mIzM5O3QgdGhlc2UgbmV0bGluayBjYWxsYmFja3M/IElmIHRoZXkmIzM5O3JlIGJlaW5nIHBvaW50ZWQgdG8gaW4gdGhlIGBod3NpbV9vcHNgIGFycmF5LCB0aGV5ICpzaG91bGRuJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCAqc2hvdWxkKiBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyBjb3JyZWN0LCB0aG91Z2guIEl0JiMzOTtzIGJlc3QgdG8gdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQyNTA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9zZXRfcmFkYXJfYmFja2dyb3VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDMxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbWFjODAyMTFfaHdzaW1fb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMxNy1cdEhXU0lNX0NPTU1PTl9PUFNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjUxPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1OC1cdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU5Olx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyA9IFx1MDAyNm1hYzgwMjExX2h3c2ltX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjAtXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzAwMT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDUyLS8qIEdlbmVyaWMgTmV0bGluayBvcGVyYXRpb25zIGFycmF5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDU0LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwOTU9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEwMS1cdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMDI6XHQuc21hbGxfb3BzID0gaHdzaW1fb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEwMzpcdC5uX3NtYWxsX29wcyA9IEFSUkFZX1NJWkUoaHdzaW1fb3BzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxMDQtXHQucmVzdl9zdGFydF9vcCA9IEhXU0lNX0NNRF9SRVBPUlRfUE1TUiAmIzQzOyAxLCAvLyBtYXRjaCB3aXRoIF9fSFdTSU1fQ01EX01BWFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk4MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEtjb25maWcgZm9yIG1hYzgwMjExX2h3c2ltKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYC4gUmlnaHQsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgTmV0bGluayBjYWxsYmFja3MsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEl0IG1ha2VzIHNlbnNlIHRvIGZvbGQgdGhvc2UgaW50byBGb2N1c1N5bWJvbHM7IHRoYXQgc2VlbXMgbG9naWNhbC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLiBUaGUgbWFpbiBzb3VyY2UgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBUaGVyZWZvcmUsIHRoZSBjb3JyZXNwb25kaW5nIEtjb25maWcgZmlsZSBuZWVkcyB0byBiZSB2ZXJpZmllZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2Agb3IsIHBlcmhhcHMgbW9yZSBicm9hZGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gY29uZmlybSB3aGVyZSBgbWFjODAyMTFfaHdzaW1gIGlzIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gaXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipEaXZpbmcgaW50byB0aGUgVmlydHVhbCBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBnZXQgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBmb3IgdGhlc2UgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXJzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdGFuZGFyZCBLY29uZmlnIHN0cnVjdHVyZSwgYnV0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMuIEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIHRoZXkmIzM5O3ZlIGV4cG9zZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZSwgYW5kIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzZW5zZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHZpcnR1YWwgZHJpdmVycyBjYW4gYmUgbm90b3Jpb3VzbHkgdHJpY2t5IHdoZW4gZGVhbGluZyB3aXRoIGludGVyYWN0aW9ucyB3aXRoIHRoZSBoYXJkd2FyZSBkcml2ZXJzLiBJJiMzOTttIGhvcGluZyB0byB1bmRlcnN0YW5kIGhvdyByb2J1c3RseSB0aGUgY29uZmlndXJhdGlvbiBpcyBjcmFmdGVkIGFuZCB3aGV0aGVyIGl0IHRha2VzIGludG8gY29uc2lkZXJhdGlvbiBob3cgdGhlIHZpcnR1YWwgbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIGlmIGl0IG1ha2VzIHNvbWUgYXNzdW1wdGlvbnMgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGFkZHJlc3MuIFRoaXMgbWlnaHQgYWxzbyBwcm92aWRlIGNsdWVzIHJlZ2FyZGluZyB0aGUgdGFyZ2V0IHVzZSBjYXNlLiBMZXQmIzM5O3Mgc3RhcnQgcGFyc2luZyBhbmQgc2VlIHdoYXQgdGhlIGF1dGhvcnMgd2VyZSB0aGlua2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRjb25maWcgTUFDODAyMTFfSFdTSU1cbiAgIDI6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA0Olx0XHRoZWxwXG4gICA1Olx0XHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcbiAgIDY6XHRcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XG4gICA3Olx0XHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXG4gICA4Olx0XHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcbiAgIDk6XHRcdCAgdG8gdXNlIHRoaXMgdG9vbC5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDEyOlx0XHQgIGNhbGxlZCBtYWM4MDIxMV9od3NpbS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFZJUlRfV0lGSVxuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7V2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZXRoZXJuZXQgY29ubmVjdGlvbnMgdG8gYXBwZWFyIGFzIGlmIHRoZXlcbiAgMTk6XHRcdCAgYXJlIHdpZmkgY29ubmVjdGlvbnMgdGhyb3VnaCBhIHNwZWNpYWwgcnRuZXRsaW5rIGRldmljZS5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMDAKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMTQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGFuZCBgTUFDODAyMTFgIGFyZSBlc3NlbnRpYWwuIGBNQUM4MDIxMWAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBzbyB0aGF0JiMzOTtzIGltcGxpY2l0LiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYm90aC4gTm93LCB3YWl0IGEgbWludXRlLCB0aGUgcHJvbXB0IHRocm93cyBhIGN1cnZlYmFsbC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLgoKQnV0Li4uIGhvbGQgb24uIElzbiYjMzk7dCBgbWFjODAyMTFfaHdzaW1gIGl0c2VsZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZT8gVGhlIHBocmFzZSAmIzM0O2V2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBtZWFucyBpZiBhIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuICp3aXRoKiBgbWFjODAyMTFfaHdzaW1gLCB0aGVuIGRvbiYjMzk7dCBib3RoZXIuIEhvd2V2ZXIsIHRoaXMgY29kZSBpcyAqaW4qIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoICppcyogcmVhY2hhYmxlIGluIFFFTVUuICBTbyB0aGUgY2xhdXNlIHRoYXQgKnNlZW1zKiBsaWtlIGFuIGV4Y2VwdGlvbiB0byB0aGUgZXhjZXB0aW9uIGRvZXMgbm90IGFwcGx5IGhlcmUuIFRoZSBjb2RlIGlzICpyZWFjaGFibGUqIGluIFFFTVUuIFRodXMsIGl0IHdhcnJhbnRzIGZ1enppbmcuIGBXb3J0aEZ1enppbmdgIGlzIGB0cnVlYC4KCkxldCYjMzk7cyBxdWlja2x5IGlkZW50aWZ5IHRoZSBuZXRsaW5rIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gSSBzZWUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiBUaGVyZSYjMzk7cyBhbHNvIGBod3NpbV9tY2FzdF9jb25maWdfbXNnYCwgYnV0IHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gIGFuZCBgaHdzaW1fbWNhc3RfZGVsX3JhZGlvYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGZyb20gdGhlIHByaW1hcnkgZnVuY3Rpb25zLiAgU28gdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFyZSBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGh3c2ltX2RlbF9yYWRpb19ubGAuICBPbmx5IGBNQUM4MDIxMV9IV1NJTWAgaXMgbmVjZXNzYXJ5LgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZi4gSXQmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBtdWx0aWNhc3QgbWVzc2FnZXMgYXJlIGhhbmRsZWQgd2hlbiBgaW5mb2AgaXMgTlVMTC4gVGhpcyBoYXBwZW5zIGluIG1vZHVsZSBpbml0IGFuZCBleGl0LiBUaGlzIGZpeCBlbnN1cmVzIHRoYXQgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlLCBldmVuIHdoZW4gbm8gbmV0bGluayByZXF1ZXN0IHRyaWdnZXJlZCB0aGVpciBjcmVhdGlvbiBvciBkZWxldGlvbiAoZS5nLiwgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi9leGl0IG9yIGEgbmV0bnMgZXhpdCkuIFRoZSBwcmlvciBjb2RlIHdhcyBzZW5kaW5nIGl0IHRvIHRoZSB3cm9uZyBuYW1lc3BhY2UuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgY29ycmVjdGluZyBhIG5ldHdvcmsgbmFtZXNwYWNlIGJ1ZyBpbiBgbWFjODAyMTFfaHdzaW1gLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudC4gSSYjMzk7bGwgc2V0OgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBbJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywgJiMzNDtod3NpbV9kZWxfcmFkaW9fbmwmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywgJiMzNDtNQUM4MDIxMSYjMzQ7XWAKKiAgIGBSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDtgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h3c2ltX25ld19yYWRpb19ubCYjMzQ7LAogICAgJiMzNDtod3NpbV9kZWxfcmFkaW9fbmwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSB3aGVuIHJhZGlvcyBhcmUgY3JlYXRlZCBvciBkZWxldGVkIHdpdGhvdXQgYSBuZXRsaW5rIHJlcXVlc3QgKGUuZy4gZHVyaW5nIG1vZHVsZSBpbml0L2V4aXQgb3IgbmV0bnMgZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtYWM4MDIxMV9od3NpbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywKICAgICYjMzQ7aHdzaW1fZGVsX3JhZGlvX25sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwppbmRleCA3NWNhYTk3YmVjYzhkLi40YTY4Y2FlMjViN2RiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwpAQCAtNDM3MiwxNSAmIzQzOzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgewogCWJvb2wgYmFja2dyb3VuZF9yYWRhcjsKIH07CiAKLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwKJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsIHN0cnVjdCBuZXQgKm5ldCwKIAkJCQkgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogewogCWlmIChpbmZvKQogCQlnZW5sX25vdGlmeSgmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBtY2FzdF9za2IsIGluZm8sCiAJCQkgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTsKIAllbHNlCi0JCWdlbmxtc2dfbXVsdGljYXN0KCZhbXA7aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCwKLQkJCQkgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiYjNDM7CQlnZW5sbXNnX211bHRpY2FzdF9uZXRucygmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBuZXQsIG1jYXN0X3NrYiwgMCwKJiM0MzsJCQkJCUhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiB9CiAKIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsCkBAIC00NDY0LDcgJiM0Mzs0NDY0LDggQEAgc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsCiYjNDM7CQkJCSAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAkJCQkgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSkKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiOwpAQCAtNDQ4NCw3ICYjNDM7NDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAKIAlnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpOwogCi0JaHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pOwomIzQzOwlod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgbmV0LCBpbmZvKTsKIAlyZXR1cm47CiAKIG91dF9lcnI6CkBAIC02MTY1LDcgJiM0Mzs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAlod3NpbV9yYWRpb3NfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtod3NpbV9yYWRpb19sb2NrKTsKIAotCWh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIGluZm8sIHBhcmFtKTsKJiM0MzsJaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtJmd0O2h3LSZndDt3aXBoeSksIGluZm8sIHBhcmFtKTsKIAogCXJldHVybiBpZHg7CiAKQEAgLTYxODMsNyAmIzQzOzYxODQsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLAogfQogCiBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsCi0JCQkJICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQomIzQzOwkJCQkgIHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXZvaWQgKmRhdGE7CkBAIC02MjA5LDcgJiM0Mzs2MjEwLDcgQEAgc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLAogCiAJZ2VubG1zZ19lbmQoc2tiLCBkYXRhKTsKIAotCWh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBpbmZvKTsKJiM0MzsJaHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIG5ldCwgaW5mbyk7CiAKIAlyZXR1cm47CiAKQEAgLTYyMjEsNyAmIzQzOzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsCiAJCQkJICAgICBjb25zdCBjaGFyICpod25hbWUsCiAJCQkJICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogewotCWh3c2ltX21jYXN0X2RlbF9yYWRpbyhkYXRhLSZndDtpZHgsIGh3bmFtZSwgaW5mbyk7CiYjNDM7CWh3c2ltX21jYXN0X2RlbF9yYWRpbyhkYXRhLSZndDtpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtJmd0O2h3LSZndDt3aXBoeSksIGluZm8pOwogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLSZndDtkZWJ1Z2ZzKTsKIAlpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhkYXRhLSZndDtodyk7CiAJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRhdGEtJmd0O2Rldik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JrIE5hbWVzcGFjZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nLiBJdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtYWM4MDIxMV9od3NpbV9tYWluLmNgIGRyaXZlcjogc3BlY2lmaWNhbGx5LCB0aGUgbXVsdGljYXN0IGNvbmZpZ3VyYXRpb24sIG5ldyByYWRpbywgYW5kIGRlbGV0ZSByYWRpbyBmdW5jdGlvbnMgKGBod3NpbV9tY2FzdF9jb25maWdfbXNnYCwgYGh3c2ltX21jYXN0X25ld19yYWRpb2AsIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gLCBgaHdzaW1fbWNhc3RfZGVsX3JhZGlvYCwgYW5kIGBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW9gKS4gVGhlIHByaW1hcnkgbW9kaWZpY2F0aW9uIGhlcmUgaW52b2x2ZXMgYWRkaW5nIGEgYHN0cnVjdCBuZXQgKm5ldGAgYXJndW1lbnQgdG8gdGhlc2UgZnVuY3Rpb25zLiBUaGlzIGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBzaGlmdCB0b3dhcmRzIG5ldHdvcmsgbmFtZXNwYWNlIGF3YXJlbmVzcy4KClRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgIHdpdGggYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYC4gVGhpcyBjb25maXJtcyB0aGF0IHRoZSBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyBhcmUgbm93IHNjb3BlZCB0byBhIHBhcnRpY3VsYXIgbmV0d29yayBuYW1lc3BhY2UsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkIGdpdmVuIHRoZSBhZGRlZCBgc3RydWN0IG5ldCAqbmV0YCBhcmd1bWVudC4KCkkmIzM5O20gbm90IHNlZWluZyBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gYWRkaXRpb25zIG9mIG5ldyBzdHJ1Y3QgZmllbGRzLCBhbmQgdGhlIG1lbW9yeSBpbml0aWFsaXphdGlvbiBzZWVtcyB1bmFmZmVjdGVkLiBUaGF04oCZcyBnb29kLiBUaGlzIHBhdGNoIGlzIHB1cmVseSBhIGNoYW5nZSBpbiB0aGUgcm91dGluZyBvZiB0aGUgbmV0bGluayBtZXNzYWdlIGJhc2VkIG9uIHRoZSBuZXR3b3JrIG5hbWVzcGFjZS4KCkdpdmVuIHRoaXMgZm9jdXNlZCBzY29wZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IEkgc2VlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IGludG8gY29udHJvbCBmbG93LiBJdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBkaXJlY3RpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBjb3JyZWN0IG5hbWVzcGFjZS4gU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0bGluayBtdWx0aWNhc3QgZnVuY3Rpb25zIGluIG1hYzgwMjExX2h3c2ltIHRvIHVzZSBgZ2VubG1zZ19tdWx0aWNhc3RfbmV0bnNgIGluc3RlYWQgb2YgYGdlbmxtc2dfbXVsdGljYXN0YCwgYWRkaW5nIGEgYHN0cnVjdCBuZXQgKm5ldGAgcGFyYW1ldGVyIHRvIGNvcnJlY3RseSByb3V0ZSBtZXNzYWdlcyB0byB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBuYW1lc3BhY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJ1ZmZlciBsZW5ndGhzLCBvciBjaGFuZ2UgaG93IG1lbW9yeSBpcyBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowMzoyMy44MzkyMDk1OTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDY3MjA5NTE3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fbmV3X3JhZGlvX25sXCIsXG4gICAgXCJod3NpbV9kZWxfcmFkaW9fbmxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjAzOjIzLjgzOTIyMTI1MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA5MjAzNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWZhYmI2MTI3YjY1YzVhYzM1MTQ5ZTk5NWU4YmU3M2JiZDZkYjZiZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5pbmRleCA3NWNhYTk3YmVjYzhkLi40YTY4Y2FlMjViN2RiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5AQCAtNDM3MiwxNSArNDM3MiwxNSBAQCBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyB7XFxuIFxcdGJvb2wgYmFja2dyb3VuZF9yYWRhcjtcXG4gfTtcXG4gXFxuLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYixcXG4rc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIHtcXG4gXFx0aWYgKGluZm8pXFxuIFxcdFxcdGdlbmxfbm90aWZ5KFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxcbiBcXHRcXHRcXHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRnZW5sbXNnX211bHRpY2FzdChcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcXG4tXFx0XFx0XFx0XFx0ICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xcbitcXHRcXHRnZW5sbXNnX211bHRpY2FzdF9uZXRucyhcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxcbitcXHRcXHRcXHRcXHRcXHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxcbkBAIC00NDY0LDcgKzQ0NjQsOCBAQCBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4rc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IG5ldCAqbmV0LFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICptY2FzdF9za2I7XFxuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIFxcbiBcXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgbmV0LCBpbmZvKTtcXG4gXFx0cmV0dXJuO1xcbiBcXG4gb3V0X2VycjpcXG5AQCAtNjE2NSw3ICs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gXFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xcbitcXHRod3NpbV9tY2FzdF9uZXdfcmFkaW8oaWR4LCB3aXBoeV9uZXQoZGF0YS1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KSwgaW5mbywgcGFyYW0pO1xcbiBcXG4gXFx0cmV0dXJuIGlkeDtcXG4gXFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcXG4tXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXHR2b2lkICpkYXRhO1xcbkBAIC02MjA5LDcgKzYyMTAsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsXFxuIFxcbiBcXHRnZW5sbXNnX2VuZChza2IsIGRhdGEpO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcXG4gXFxuIFxcdHJldHVybjtcXG4gXFxuQEAgLTYyMjEsNyArNjIyMiw3IEBAIHN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG4gXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpod25hbWUsXFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4ge1xcbi1cXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cXHUwMDNlaWR4LCBod25hbWUsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cXHUwMDNlaWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLVxcdTAwM2Vody1cXHUwMDNld2lwaHkpLCBpbmZvKTtcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGRhdGEtXFx1MDAzZWRlYnVnZnMpO1xcbiBcXHRpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhkYXRhLVxcdTAwM2Vodyk7XFxuIFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkYXRhLVxcdTAwM2VkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowMzoyNC4yNDkxNDQyNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwMDMxMjU4NTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV9uZXdfcmFkaW9fbmxcIixcbiAgICBcImh3c2ltX2RlbF9yYWRpb19ubFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgKzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMge1xuIFx0Ym9vbCBiYWNrZ3JvdW5kX3JhZGFyO1xuIH07XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxuK3N0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRcdFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRpZiAoaW5mbylcbiBcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbiBcdFx0XHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiBcdGVsc2Vcbi1cdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbi1cdFx0XHRcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbitcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuK1x0XHRcdFx0XHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxuQEAgLTQ0NjQsNyArNDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbitzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4rXHRcdFx0XHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXHRcdFx0XHQgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiO1xuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXG4gXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xuK1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuK1x0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvLCBwYXJhbSk7XG4gXG4gXHRyZXR1cm4gaWR4O1xuIFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gfVxuIFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi1cdFx0XHRcdCAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbitcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyArNjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcbiBcdGdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcbiBcbiBcdHJldHVybjtcbiBcbkBAIC02MjIxLDcgKzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvKTtcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLVx1MDAzZWRlYnVnZnMpO1xuIFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS1cdTAwM2Vodyk7XG4gXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGF0YS1cdTAwM2VkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDM6MjQuMjQ5MTQ1NTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTA3MDc3Njc2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgZm9jdXNpbmcgb24gaG93IHdlIGhhbmRsZSBtdWx0aWNhc3QgbmV0bGluayBtZXNzYWdlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZW5sbXNnX211bHRpY2FzdGAgdG8gYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbiBhIGZldyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaHdzaW1fbWNhc3RfY29uZmlnX21zZ2AsIGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gLCBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCwgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBjb3JyZWN0bHkgcm91dGVkIHRvIHRoZSBwcm9wZXIgbmV0d29yayBuYW1lc3BhY2UuXG5cbkEgYml0IG9mIGEgaGVhZC1zY3JhdGNoZXIuLi50aG9zZSBsYXN0IHR3bywgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AgYW5kIGBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW9gLCBhcmUgc3RhdGljLiBUaGF0J3Mgbm90IHRoZSB1c3VhbCB0YXJnZXQgZm9yIHRoaXMgdHlwZSBvZiBwYXRjaCwgdXN1YWxseS4gTGV0IG1lIGRvdWJsZS1jaGVjayAtIEkgd2FudCB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhpcyBtaWdodCBhZmZlY3QuIE9rYXksIHNvIEkgc2VlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIGNhbGxlZCBmcm9tIGBod3NpbV9uZXdfcmFkaW9fbmxgLCB3aGljaCBpcyBhIG5ldGxpbmsgY2FsbGJhY2suIE5vdyBJIGhhdmUgYSBnb29kIGxlYWQgZm9yIGludmVzdGlnYXRpb24uIEkgd2lsbCBqdXN0IGRvIGEgcXVpY2sgZ3JlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA2OjU0Ljk1NjkxNjY2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ1NDQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYzOT1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjUxOnN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Njc1Mz1zdGF0aWMgaW50IGh3c2ltX25ld19yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjkwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2OTA1OlxcdHJldCA9IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhpbmZvLCBcXHUwMDI2cGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTY5MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDU4PXN0YXRpYyBpbnQgX19pbml0IGluaXRfbWFjODAyMTFfaHdzaW0odm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc1NzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzU3MjpcXHRcXHRlcnIgPSBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oTlVMTCwgXFx1MDAyNnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NTczLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNjo1NS4wMDEzODA1NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQxMTQyNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIGEgbWFjODAyMTFfaHdzaW0gUmFkaW8qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBzaW11bGF0ZWQgcmFkaW9zIGFyZSBjcmVhdGVkIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBtb2R1bGUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBpcyBmb2N1c2VkIG9uIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MuIEl0IGxvb2tzIGxpa2UgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBJJ3ZlIHNlZW4gaXQgY2FsbGVkIGZyb20gdHdvIHBsYWNlczogYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBpbml0X21hYzgwMjExX2h3c2ltYC4gIFRoZSBmb3JtZXIsIGBod3NpbV9uZXdfcmFkaW9fbmxgLCBzdHJpa2VzIG1lIGFzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIHN1Z2dlc3RzIGFuIGV4dGVybmFsIGNvbnRyb2wgbWVjaGFuaXNtIGZvciB0aGVzZSByYWRpb3MsIHByb2JhYmx5IGZyb20gdXNlcnNwYWNlLiBJdCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCBieSB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0cmFjayBkb3duIHRoaXMgbmV0bGluayBmYW1pbHkuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBuZXRsaW5rIGZhbWlseSB0byB1bmRlcnN0YW5kIHRoZSBleHRlcm5hbCBjb250cm9sIG9mIGBtYWM4MDIxMV9od3NpbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzowMC45NDI1MjY1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMzMTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbV9uZXdfcmFkaW9fbmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjcxND1zdGF0aWMgaW50IHBhcnNlX3Btc3JfY2FwYShjb25zdCBzdHJ1Y3QgbmxhdHRyICpwbXNyX2NhcGEsIHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqb3V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjc1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2NzUzOnN0YXRpYyBpbnQgaHdzaW1fbmV3X3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjc1NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDcyLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDczOlxcdFxcdC5kb2l0ID0gaHdzaW1fbmV3X3JhZGlvX25sLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNzQtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDc6MDAuOTg3ODYyMzE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MzAyMjAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWx2aW5nIGludG8gdGhlIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyBmdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBhYm91dCByZW1vdmluZyBhIHNpbXVsYXRlZCByYWRpbyBpbnRlcmZhY2Ugd2l0aGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGZyYW1ld29yay4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSB1bmRlcnN0YW5kIHRoZSBjb3JlIGNvbmNlcHQgaXMgaG93IHRoaXMgdmlydHVhbCBlbnZpcm9ubWVudCBoYW5kbGVzIHRoZSBsaWZlY3ljbGUgb2YgdGhlc2Ugc2ltdWxhdGVkIGRldmljZXMuIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgXCJ0ZWFyaW5nIGRvd25cIiBhIHZpcnR1YWwgcmFkaW8uIE5vdywgd2hhdCdzIHNwZWNpZmljYWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoaXMgXCJ0ZWFyZG93blwiIGlzIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIElzIGl0IHNpbXBseSBmcmVlaW5nIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gdGhlIHZpcnR1YWwgcmFkaW8/IE9yIGlzIGl0IGhhbmRsaW5nIG1vcmUgaW50cmljYXRlIHRoaW5ncz8gVGhpbmtpbmcgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQsIEknZCBleHBlY3QgaXQgaGFzIHRvIGZyZWUgc29tZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByYWRpbywgcGVyaGFwcyBkZS1yZWdpc3RlciBpdCBmcm9tIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXMgaXQgdGFraW5nIGNhcmUgb2YgY2xlYW5pbmcgdXAgYW55IGFzc29jaWF0ZWQgcXVldWVzIG9yIGxpc3RzPyBEb2VzIGl0IGludGVyYWN0IHdpdGggYW55IG90aGVyIHN1YnN5c3RlbXMgb3IgZHJpdmVycz8gVGhlcmUncyBsaWtlbHkgc29tZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBcImhvc3RcIiBzaWRlIC0gdGhlIHNpbXVsYXRlZCBob3N0IGFuZCB0aGUga2VybmVsLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgaW50byB0aGUgc3BlY2lmaWNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMwLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDc6MTcuNTE4MDg0ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MDg3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxODY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjIxOnN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MjIyLVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjI4MD1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9mcmVlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mjg5LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjkwOlxcdFxcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjI5MS1cXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTEzPXN0YXRpYyBpbnQgaHdzaW1fZGVsX3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTQ4LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2OTQ5OlxcdFxcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjk1MC1cXHRcXHRcXHRcXHRcXHQgaW5mbyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTA5PXN0YXRpYyB2b2lkIHJlbW92ZV91c2VyX3JhZGlvcyh1MzIgcG9ydGlkLCBpbnQgbmV0Z3JvdXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI3LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZlbnRyeS1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEyODpcXHRcXHRtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oZW50cnksIHdpcGh5X25hbWUoZW50cnktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEyOS1cXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTg1PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaHdzaW1fZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzIwNy1cXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGF0YS1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzIwODpcXHRcXHRtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA5LVxcdFxcdFxcdFxcdFxcdCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjE3LjU2MTQ5NzQ4OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0ODYyODQzMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIE11bHRpY2FzdCBDaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiUmlnaHQsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGNhbGxiYWNrcywgYW5kIHRoZXkncmUgc3RhdGljLlwiICBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCB0aGUgbmV0bGluayBtdWx0aWNhc3QgYmVoYXZpb3IuICBJdCB1c2VkIHRvIHNlbmQgdG8gZWl0aGVyIHRoZSBpbml0aWFsIG5ldHdvcmsgbmFtZXNwYWNlLCBgaW5pdF9uZXRgLCBvciBwb3NzaWJseSAqYWxsKiBuYW1lc3BhY2VzLiAgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSG1tLCBJIG5lZWQgdG8gam9nIG15IG1lbW9yeSwgZG9lcyBgZ2VubG1zZ19tdWx0aWNhc3RgIHVzZSBgaW5pdF9uZXRgP1xuXG5BaCwgcmlnaHQsIGBnZW5sbXNnX211bHRpY2FzdGAgaXMganVzdCBhIHdyYXBwZXIgZm9yIGBnZW5sbXNnX211bHRpY2FzdF9uZXRucyhcdTAwMjZpbml0X25ldCwgLi4uKWAuICBTbywgaXQgKndhcyogc2VuZGluZyBvbmx5IHRvIGBpbml0X25ldGAuICBOb3csIGl0J3MgY2hhbmdlZCB0byBgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpYC4gIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBmaXhpbmcgdGhlIG5ldGxpbmsgbm90aWZpY2F0aW9ucyBmb3IgYG1hYzgwMjExX2h3c2ltYCBpbiBuZXR3b3JrIG5hbWVzcGFjZXMuIFRoaXMgaXMgaW1wb3J0YW50LCBpdCBmaXhlcyBhIGtub3duIGlzc3VlLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbCBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzICpoZWF2aWx5KiByZWxpZWQgdXBvbiBmb3IgdGVzdGluZywgaW5jbHVkaW5nIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLiAgVGhhdCBtYWtlcyB0aGlzIGEgaGlnaC1wcmlvcml0eSB0YXJnZXQuXG5cblRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIHRob3NlIGNhbGxiYWNrcywgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiAgSG93ZXZlciwgdGhleSdyZSBzdGF0aWMsIHNvIEkgd29uJ3QgYmUgYWJsZSB0byBjYWxsIHRoZW0gZGlyZWN0bHkuIEkgbmVlZCB0byBzZWUgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYXJvdW5kLiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgIHRvIGxvb2sgZm9yIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTY0LCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjI2LjA0Nzc4NDI4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjMxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTI5Nz1zdGF0aWMgdW5zaWduZWQgaW50IGh3c2ltX25ldF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwNTpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGh3c2ltX3ZpcnRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA4OnN0YXRpYyBERUNMQVJFX1dPUksoaHdzaW1fdmlydGlvX3J4LCBod3NpbV92aXJ0aW9fcnhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTI2NT1zdGF0aWMgaW5saW5lIHU2NCBtYWM4MDIxMV9od3NpbV9nZXRfc2ltX3RzZih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjcwOmt0aW1lX3QgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0c2YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc5LVxcdFxcdFxcdFxcdCAgIGt0aW1lX3QgdHMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyODY6dTY0IG1hYzgwMjExX2h3c2ltX2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjEwND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjI4ODp2b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzoyNi4wOTQ3NTM0MDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY3NzczMjY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIE1hYzgwMjExIEhXU2ltIE1vZHVsZSdzIEFyY2hpdGVjdHVyZSoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0aHJvdWdoIHRoZSBgbWFjODAyMTFfaHdzaW1gIGNvZGUgYWdhaW4uIEknbSBmb2N1c2luZyBvbiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gSSd2ZSBub3RpY2VkIHNvbWV0aGluZyB0aGF0J3MgbWFraW5nIG1lIHBhdXNlLiBTZXZlcmFsIGtleSBmdW5jdGlvbnMsIGxpa2UgYG1hYzgwMjExX2h3c2ltX3RzZl90b19ib290dGltZWAsIGBtYWM4MDIxMV9od3NpbV9ib290dGltZV90b190c2ZgLCBgbWFjODAyMTFfaHdzaW1fZ2V0X3RzZmAsIGBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZWAsIGFuZCBgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVgLCBhcmUgKm5vdCogZGVjbGFyZWQgc3RhdGljLiBUaGF0IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgdGhlaXIgc2NvcGUgYW5kIHBvdGVudGlhbCBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIFRoZXkgc2VlbSB0byBiZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgd2l0aGluIHRoZSBzaW11bGF0aW9uIGl0c2VsZi5cblxuVGhlbiBJIGxvb2sgYXQgdGhlIG5ldGxpbmsgZnVuY3Rpb25zLCB3aGljaCBoYW5kbGUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB1c2Vyc3BhY2UuIFRob3NlLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGVzaWduLCBhcyBuZXRsaW5rIGlzIGhvdyBvdXRzaWRlIGVudGl0aWVzIGNvbm5lY3QgdG8gYW5kIGNvbnRyb2wgdGhlIG1vZHVsZS5cblxuU28sIHRoZSBxdWVzdGlvbiBpcywgKmFyZSogdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9yIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzPyBJZiBzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbj8gTXkgbWVudGFsIG1vZGVsIHNlZXMgcG90ZW50aWFsIGFyZWFzIGZvciBjbG9zZXIgaW5zcGVjdGlvbiB3aGVyZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgdXNlZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvciBhcmUgaW50ZXJ0d2luZWQgd2l0aCB0aGUgbmV0bGluayBmdW5jdGlvbnMuIEkgd2lsbCBuZWVkIHRvIGxvb2sgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTUzLCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjMyLjc3MjQ4ODI1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNzkxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTI5Nz1zdGF0aWMgdW5zaWduZWQgaW50IGh3c2ltX25ldF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwNTpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGh3c2ltX3ZpcnRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA4OnN0YXRpYyBERUNMQVJFX1dPUksoaHdzaW1fdmlydGlvX3J4LCBod3NpbV92aXJ0aW9fcnhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTI2NT1zdGF0aWMgaW5saW5lIHU2NCBtYWM4MDIxMV9od3NpbV9nZXRfc2ltX3RzZih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjcwOmt0aW1lX3QgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0c2YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc5LVxcdFxcdFxcdFxcdCAgIGt0aW1lX3QgdHMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyODY6dTY0IG1hYzgwMjExX2h3c2ltX2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjEwND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjI4ODp2b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozMi44MTg4NzMwNTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNTU2MTA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnQgQ2hvaWNlcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBJIGNhbiBkaXJlY3RseSB1c2UgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgIGFzIEZvY3VzU3ltYm9scywgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMuIFRoZSBwcm9tcHQsIHRob3VnaCwgdGhyb3dzIGEgY3VydmViYWxsLCBzdGF0aW5nIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IGlubGluZWQgZnVuY3Rpb25zIGxhY2sgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IHdhaXQgYSBtaW51dGUuLi4gYXJlbid0IHRoZXNlIG5ldGxpbmsgY2FsbGJhY2tzPyBJZiB0aGV5J3JlIGJlaW5nIHBvaW50ZWQgdG8gaW4gdGhlIGBod3NpbV9vcHNgIGFycmF5LCB0aGV5ICpzaG91bGRuJ3QqIGJlIGlubGluZWQgYW5kICpzaG91bGQqIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjb3JyZWN0LCB0aG91Z2guIEl0J3MgYmVzdCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozOS42NTQ0MzcwMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzgzMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz00MjUwPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjQzMTY6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG1hYzgwMjExX2h3c2ltX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE3LVxcdEhXU0lNX0NPTU1PTl9PUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NTE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTgtXFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU5OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHMgPSBcXHUwMDI2bWFjODAyMTFfaHdzaW1fb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjAtXFx0c3RydWN0IG5ldCAqbmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzAwMT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNTItLyogR2VuZXJpYyBOZXRsaW5rIG9wZXJhdGlvbnMgYXJyYXkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA1NC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDk1PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEwMS1cXHQubW9kdWxlID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEwMjpcXHQuc21hbGxfb3BzID0gaHdzaW1fb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMDM6XFx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9vcHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxMDQtXFx0LnJlc3Zfc3RhcnRfb3AgPSBIV1NJTV9DTURfUkVQT1JUX1BNU1IgKyAxLCAvLyBtYXRjaCB3aXRoIF9fSFdTSU1fQ01EX01BWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozOS42OTg4MjU3NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyNDMwMDE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEtjb25maWcgZm9yIG1hYzgwMjExX2h3c2ltKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGh3c2ltX2RlbF9yYWRpb19ubGAuIFJpZ2h0LCB0aGV5J3JlIGRlZmluaXRlbHkgTmV0bGluayBjYWxsYmFja3MsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEl0IG1ha2VzIHNlbnNlIHRvIGZvbGQgdGhvc2UgaW50byBGb2N1c1N5bWJvbHM7IHRoYXQgc2VlbXMgbG9naWNhbC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLiBUaGUgbWFpbiBzb3VyY2UgY29kZSBJJ20gbG9va2luZyBhdCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY2AuIFRoZXJlZm9yZSwgdGhlIGNvcnJlc3BvbmRpbmcgS2NvbmZpZyBmaWxlIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIG9yLCBwZXJoYXBzIG1vcmUgYnJvYWRseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gd2hlcmUgYG1hYzgwMjExX2h3c2ltYCBpcyBkZWZpbmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBidWlsZCBvcHRpb25zIGFyZSByZWxhdGVkIHRvIGl0LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTgzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjQ3LjIyMzEyODExMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI2NDU0NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjQ3LjI5NTc4MTM3OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjU1MjExNzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaXJ0dWFsIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYC4gVGltZSB0byBzZWUgd2hhdCdzIGJlaW5nIGNvbmZpZ3VyZWQgZm9yIHRoZXNlIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycy4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBzdGFuZGFyZCBLY29uZmlnIHN0cnVjdHVyZSwgYnV0IEknbSBsb29raW5nIGZvciB0aGUgbnVhbmNlcy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgdGhleSd2ZSBleHBvc2VkLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzZW5zZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHZpcnR1YWwgZHJpdmVycyBjYW4gYmUgbm90b3Jpb3VzbHkgdHJpY2t5IHdoZW4gZGVhbGluZyB3aXRoIGludGVyYWN0aW9ucyB3aXRoIHRoZSBoYXJkd2FyZSBkcml2ZXJzLiBJJ20gaG9waW5nIHRvIHVuZGVyc3RhbmQgaG93IHJvYnVzdGx5IHRoZSBjb25maWd1cmF0aW9uIGlzIGNyYWZ0ZWQgYW5kIHdoZXRoZXIgaXQgdGFrZXMgaW50byBjb25zaWRlcmF0aW9uIGhvdyB0aGUgdmlydHVhbCBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgb3IgaWYgaXQgbWFrZXMgc29tZSBhc3N1bXB0aW9ucyB0aGF0IEknbGwgbmVlZCB0byBhZGRyZXNzLiBUaGlzIG1pZ2h0IGFsc28gcHJvdmlkZSBjbHVlcyByZWdhcmRpbmcgdGhlIHRhcmdldCB1c2UgY2FzZS4gTGV0J3Mgc3RhcnQgcGFyc2luZyBhbmQgc2VlIHdoYXQgdGhlIGF1dGhvcnMgd2VyZSB0aGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowODowMy44NDc5MDEyODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gICA2OlxcdFxcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuICAgNzpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXFxuICAgODpcXHRcXHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcXG4gICA5OlxcdFxcdCAgdG8gdXNlIHRoaXMgdG9vbC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZJUlRfV0lGSVxcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxcbiAgMTk6XFx0XFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA4OjAzLjg0Nzk2ODU5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYzNTk5OTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBhbmQgYE1BQzgwMjExYCBhcmUgZXNzZW50aWFsLiBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gdGhhdCdzIGltcGxpY2l0LiBJJ20gZ29pbmcgdG8gaW5jbHVkZSBib3RoLiBOb3csIHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgdGhyb3dzIGEgY3VydmViYWxsLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXG5cbkJ1dC4uLiBob2xkIG9uLiBJc24ndCBgbWFjODAyMTFfaHdzaW1gIGl0c2VsZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZT8gVGhlIHBocmFzZSBcImV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBtZWFucyBpZiBhIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuICp3aXRoKiBgbWFjODAyMTFfaHdzaW1gLCB0aGVuIGRvbid0IGJvdGhlci4gSG93ZXZlciwgdGhpcyBjb2RlIGlzICppbiogYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggKmlzKiByZWFjaGFibGUgaW4gUUVNVS4gIFNvIHRoZSBjbGF1c2UgdGhhdCAqc2VlbXMqIGxpa2UgYW4gZXhjZXB0aW9uIHRvIHRoZSBleGNlcHRpb24gZG9lcyBub3QgYXBwbHkgaGVyZS4gVGhlIGNvZGUgaXMgKnJlYWNoYWJsZSogaW4gUUVNVS4gVGh1cywgaXQgd2FycmFudHMgZnV6emluZy4gYFdvcnRoRnV6emluZ2AgaXMgYHRydWVgLlxuXG5MZXQncyBxdWlja2x5IGlkZW50aWZ5IHRoZSBuZXRsaW5rIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gSSBzZWUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiBUaGVyZSdzIGFsc28gYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLCBidXQgdGhhdCdzIGNhbGxlZCBieSBgaHdzaW1fbWNhc3RfbmV3X3JhZGlvYCBhbmQgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIHdoaWNoIGluIHR1cm4gYXJlIGNhbGxlZCBmcm9tIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucy4gIFNvIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcmUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiAgT25seSBgTUFDODAyMTFfSFdTSU1gIGlzIG5lY2Vzc2FyeS5cblxuQWxyaWdodCwgbGV0J3MgcmUtZXhhbWluZSB0aGUgY29kZSBjaGFuZ2UgaXRzZWxmLiBJdCdzIGEgbW9kaWZpY2F0aW9uIHRvIGBod3NpbV9tY2FzdF9jb25maWdfbXNnYC4gVGhlIGNydWNpYWwgcGFydCBpcyBob3cgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBoYW5kbGVkIHdoZW4gYGluZm9gIGlzIE5VTEwuIFRoaXMgaGFwcGVucyBpbiBtb2R1bGUgaW5pdCBhbmQgZXhpdC4gVGhpcyBmaXggZW5zdXJlcyB0aGF0IG11bHRpY2FzdCBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSwgZXZlbiB3aGVuIG5vIG5ldGxpbmsgcmVxdWVzdCB0cmlnZ2VyZWQgdGhlaXIgY3JlYXRpb24gb3IgZGVsZXRpb24gKGUuZy4sIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24vZXhpdCBvciBhIG5ldG5zIGV4aXQpLiBUaGUgcHJpb3IgY29kZSB3YXMgc2VuZGluZyBpdCB0byB0aGUgd3JvbmcgbmFtZXNwYWNlLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGNvcnJlY3RpbmcgYSBuZXR3b3JrIG5hbWVzcGFjZSBidWcgaW4gYG1hYzgwMjExX2h3c2ltYC5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50LiBJJ2xsIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogW1wiaHdzaW1fbmV3X3JhZGlvX25sXCIsIFwiaHdzaW1fZGVsX3JhZGlvX25sXCJdYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXCJNQUM4MDIxMV9IV1NJTVwiLCBcIk1BQzgwMjExXCJdYFxuKiAgIGBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCJgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDAwLCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowODoyNC40ODM5NzIyOTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc1NDU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fbmV3X3JhZGlvX25sXCIsXG4gICAgXCJod3NpbV9kZWxfcmFkaW9fbmxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlIHdoZW4gcmFkaW9zIGFyZSBjcmVhdGVkIG9yIGRlbGV0ZWQgd2l0aG91dCBhIG5ldGxpbmsgcmVxdWVzdCAoZS5nLiBkdXJpbmcgbW9kdWxlIGluaXQvZXhpdCBvciBuZXRucyBleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1hYzgwMjExX2h3c2ltLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExX0hXU0lNXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh3c2ltX25ld19yYWRpb19ubFwiLFxuICAgIFwiaHdzaW1fZGVsX3JhZGlvX25sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSB3aGVuIHJhZGlvcyBhcmUgY3JlYXRlZCBvciBkZWxldGVkIHdpdGhvdXQgYSBuZXRsaW5rIHJlcXVlc3QgKGUuZy4gZHVyaW5nIG1vZHVsZSBpbml0L2V4aXQgb3IgbmV0bnMgZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtYWM4MDIxMV9od3NpbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYxNzMzNzA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk4NDE2MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYyMjMyNjc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU5OTc4OTM3NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgKzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMge1xuIFx0Ym9vbCBiYWNrZ3JvdW5kX3JhZGFyO1xuIH07XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxuK3N0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRcdFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRpZiAoaW5mbylcbiBcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbiBcdFx0XHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiBcdGVsc2Vcbi1cdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbi1cdFx0XHRcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbitcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuK1x0XHRcdFx0XHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxuQEAgLTQ0NjQsNyArNDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbitzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4rXHRcdFx0XHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXHRcdFx0XHQgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiO1xuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXG4gXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xuK1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuK1x0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvLCBwYXJhbSk7XG4gXG4gXHRyZXR1cm4gaWR4O1xuIFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gfVxuIFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi1cdFx0XHRcdCAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbitcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyArNjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcbiBcdGdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcbiBcbiBcdHJldHVybjtcbiBcbkBAIC02MjIxLDcgKzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvKTtcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLVx1MDAzZWRlYnVnZnMpO1xuIFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS1cdTAwM2Vodyk7XG4gXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGF0YS1cdTAwM2VkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYyMjMzNjA2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTc4NjEwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBOYW1lc3BhY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nLiBJdCdzIHRvdWNoaW5nIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltX21haW4uY2AgZHJpdmVyOiBzcGVjaWZpY2FsbHksIHRoZSBtdWx0aWNhc3QgY29uZmlndXJhdGlvbiwgbmV3IHJhZGlvLCBhbmQgZGVsZXRlIHJhZGlvIGZ1bmN0aW9ucyAoYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLCBgaHdzaW1fbWNhc3RfbmV3X3JhZGlvYCwgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AsIGBod3NpbV9tY2FzdF9kZWxfcmFkaW9gLCBhbmQgYG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpb2ApLiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gaGVyZSBpbnZvbHZlcyBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBhcmd1bWVudCB0byB0aGVzZSBmdW5jdGlvbnMuIFRoaXMgaW1tZWRpYXRlbHkgc2lnbmFscyBhIHNoaWZ0IHRvd2FyZHMgbmV0d29yayBuYW1lc3BhY2UgYXdhcmVuZXNzLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGdlbmxtc2dfbXVsdGljYXN0YCB3aXRoIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AuIFRoaXMgY29uZmlybXMgdGhhdCB0aGUgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgYXJlIG5vdyBzY29wZWQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmsgbmFtZXNwYWNlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgYWRkZWQgYHN0cnVjdCBuZXQgKm5ldGAgYXJndW1lbnQuXG5cbkknbSBub3Qgc2VlaW5nIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBhZGRpdGlvbnMgb2YgbmV3IHN0cnVjdCBmaWVsZHMsIGFuZCB0aGUgbWVtb3J5IGluaXRpYWxpemF0aW9uIHNlZW1zIHVuYWZmZWN0ZWQuIFRoYXTigJlzIGdvb2QuIFRoaXMgcGF0Y2ggaXMgcHVyZWx5IGEgY2hhbmdlIGluIHRoZSByb3V0aW5nIG9mIHRoZSBuZXRsaW5rIG1lc3NhZ2UgYmFzZWQgb24gdGhlIG5ldHdvcmsgbmFtZXNwYWNlLlxuXG5HaXZlbiB0aGlzIGZvY3VzZWQgc2NvcGUsIHRoZXJlJ3Mgbm8gd2F5IEkgc2VlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IGludG8gY29udHJvbCBmbG93LiBJdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBkaXJlY3RpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBjb3JyZWN0IG5hbWVzcGFjZS4gU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5LCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA4OjMwLjU2MDA5ODI0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow46nwl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 11:47:36 +0000 UTC FinishedAt: 2026-08-09 12:08:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "06cf61899d6498b33e4b7c87d99d5bd471ccc375", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "06cf61899d6498b33e4b7c87d99d5bd471ccc375", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM", "MAC80211" ], "series_id": "b8c16aee-1d57-4ede-87eb-ca86618e4d7e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hwsim_new_radio_nl", "hwsim_del_radio_nl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fbmV3X3JhZGlvX25sJiMzNDssCiAgICAmIzM0O2h3c2ltX2RlbF9yYWRpb19ubCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlIHdoZW4gcmFkaW9zIGFyZSBjcmVhdGVkIG9yIGRlbGV0ZWQgd2l0aG91dCBhIG5ldGxpbmsgcmVxdWVzdCAoZS5nLiBkdXJpbmcgbW9kdWxlIGluaXQvZXhpdCBvciBuZXRucyBleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1hYzgwMjExX2h3c2ltLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWZhYmI2MTI3YjY1YzVhYzM1MTQ5ZTk5NWU4YmU3M2JiZDZkYjZiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTI6MDM6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgJiM0Mzs0MzcyLDE1IEBAIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zIHtcbiBcdGJvb2wgYmFja2dyb3VuZF9yYWRhcjtcbiB9O1xuIFxuLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYixcbiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdGlmIChpbmZvKVxuIFx0XHRnZW5sX25vdGlmeShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxuIFx0XHRcdCAgICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIFx0ZWxzZVxuLVx0XHRnZW5sbXNnX211bHRpY2FzdChcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCAwLFxuLVx0XHRcdFx0ICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuJiM0MztcdFx0XHRcdFx0SFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiB9XG4gXG4gc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCxcbkBAIC00NDY0LDcgJiM0Mzs0NDY0LDggQEAgc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyAqcGFyYW0pXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYjtcbkBAIC00NDg0LDcgJiM0Mzs0NDg1LDcgQEAgc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcbiBcdGdlbmxtc2dfZW5kKG1jYXN0X3NrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgaW5mbyk7XG4mIzQzO1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgJiM0Mzs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcdGh3c2ltX3JhZGlvc19nZW5lcmF0aW9uJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuJiM0MztcdGh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIHdpcGh5X25ldChkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSwgaW5mbywgcGFyYW0pO1xuIFxuIFx0cmV0dXJuIGlkeDtcbiBcbkBAIC02MTgzLDcgJiM0Mzs2MTg0LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiB9XG4gXG4gc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLVx0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuJiM0MztcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyAmIzQzOzYyMTAsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsXG4gXG4gXHRnZW5sbXNnX2VuZChza2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIGluZm8pO1xuJiM0MztcdGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBuZXQsIGluZm8pO1xuIFxuIFx0cmV0dXJuO1xuIFxuQEAgLTYyMjEsNyAmIzQzOzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4mIzQzO1x0aHdzaW1fbWNhc3RfZGVsX3JhZGlvKGRhdGEtXHUwMDNlaWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSwgaW5mbyk7XG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGF0YS1cdTAwM2VkZWJ1Z2ZzKTtcbiBcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRhdGEtXHUwMDNlaHcpO1xuIFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRhdGEtXHUwMDNlZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywKICAgICYjMzQ7aHdzaW1fZGVsX3JhZGlvX25sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZmFiYjYxMjdiNjVjNWFjMzUxNDllOTk1ZThiZTczYmJkNmRiNmJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAxMjowMzoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKQEAgLTQzNzIsMTUgJiM0Mzs0MzcyLDE1IEBAIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zIHsKIAlib29sIGJhY2tncm91bmRfcmFkYXI7CiB9OwogCi1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsCiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsCiAJCQkJICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlpZiAoaW5mbykKIAkJZ2VubF9ub3RpZnkoJmFtcDtod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLAogCQkJICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiAJZWxzZQotCQlnZW5sbXNnX211bHRpY2FzdCgmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBtY2FzdF9za2IsIDAsCi0JCQkJICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpOwomIzQzOwkJZ2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoJmFtcDtod3NpbV9nZW5sX2ZhbWlseSwgbmV0LCBtY2FzdF9za2IsIDAsCiYjNDM7CQkJCQlIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpOwogfQogCiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLApAQCAtNDQ2NCw3ICYjNDM7NDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiYjNDM7c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IG5ldCAqbmV0LAomIzQzOwkJCQkgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAJCQkJICBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyAqcGFyYW0pCiB7CiAJc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYjsKQEAgLTQ0ODQsNyAmIzQzOzQ0ODUsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLAogCiAJZ2VubG1zZ19lbmQobWNhc3Rfc2tiLCBkYXRhKTsKIAotCWh3c2ltX21jYXN0X2NvbmZpZ19tc2cobWNhc3Rfc2tiLCBpbmZvKTsKJiM0MzsJaHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7CiAJcmV0dXJuOwogCiBvdXRfZXJyOgpAQCAtNjE2NSw3ICYjNDM7NjE2Niw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAJaHdzaW1fcmFkaW9zX2dlbmVyYXRpb24mIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2JoKCZhbXA7aHdzaW1fcmFkaW9fbG9jayk7CiAKLQlod3NpbV9tY2FzdF9uZXdfcmFkaW8oaWR4LCBpbmZvLCBwYXJhbSk7CiYjNDM7CWh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIHdpcGh5X25ldChkYXRhLSZndDtody0mZ3Q7d2lwaHkpLCBpbmZvLCBwYXJhbSk7CiAKIAlyZXR1cm4gaWR4OwogCkBAIC02MTgzLDcgJiM0Mzs2MTg0LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIH0KIAogc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLAotCQkJCSAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKJiM0MzsJCQkJICBzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAl2b2lkICpkYXRhOwpAQCAtNjIwOSw3ICYjNDM7NjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSwKIAogCWdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7CiAKLQlod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7CiYjNDM7CWh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBuZXQsIGluZm8pOwogCiAJcmV0dXJuOwogCkBAIC02MjIxLDcgJiM0Mzs2MjIyLDcgQEAgc3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLAogCQkJCSAgICAgY29uc3QgY2hhciAqaHduYW1lLAogCQkJCSAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKLQlod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS0mZ3Q7aWR4LCBod25hbWUsIGluZm8pOwomIzQzOwlod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS0mZ3Q7aWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLSZndDtody0mZ3Q7d2lwaHkpLCBpbmZvKTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGF0YS0mZ3Q7ZGVidWdmcyk7CiAJaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS0mZ3Q7aHcpOwogCWRldmljZV9yZWxlYXNlX2RyaXZlcihkYXRhLSZndDtkZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMzQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lyZWxlc3MgVmlydHVhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgZm9jdXNpbmcgb24gaG93IHdlIGhhbmRsZSBtdWx0aWNhc3QgbmV0bGluayBtZXNzYWdlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZW5sbXNnX211bHRpY2FzdGAgdG8gYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbiBhIGZldyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaHdzaW1fbWNhc3RfY29uZmlnX21zZ2AsIGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gLCBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCwgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBjb3JyZWN0bHkgcm91dGVkIHRvIHRoZSBwcm9wZXIgbmV0d29yayBuYW1lc3BhY2UuCgpBIGJpdCBvZiBhIGhlYWQtc2NyYXRjaGVyLi4udGhvc2UgbGFzdCB0d28sIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYCwgYXJlIHN0YXRpYy4gVGhhdCYjMzk7cyBub3QgdGhlIHVzdWFsIHRhcmdldCBmb3IgdGhpcyB0eXBlIG9mIHBhdGNoLCB1c3VhbGx5LiBMZXQgbWUgZG91YmxlLWNoZWNrIC0gSSB3YW50IHRvIHZlcmlmeSBpZiB0aGVyZSYjMzk7cyBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhpcyBtaWdodCBhZmZlY3QuIE9rYXksIHNvIEkgc2VlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIGNhbGxlZCBmcm9tIGBod3NpbV9uZXdfcmFkaW9fbmxgLCB3aGljaCBpcyBhIG5ldGxpbmsgY2FsbGJhY2suIE5vdyBJIGhhdmUgYSBnb29kIGxlYWQgZm9yIGludmVzdGlnYXRpb24uIEkgd2lsbCBqdXN0IGRvIGEgcXVpY2sgZ3JlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NTE6c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTItXHRcdFx0XHQgICAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY3NTM9c3RhdGljIGludCBod3NpbV9uZXdfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjkwNTpcdHJldCA9IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhpbmZvLCBcdTAwMjZwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0NTg9c3RhdGljIGludCBfX2luaXQgaW5pdF9tYWM4MDIxMV9od3NpbSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc1NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NTcyOlx0XHRlcnIgPSBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oTlVMTCwgXHUwMDI2cGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzU3My1cdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTk4CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgYSBtYWM4MDIxMV9od3NpbSBSYWRpbyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2Ugc2ltdWxhdGVkIHJhZGlvcyBhcmUgY3JlYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMV9od3NpbWAgbW9kdWxlLiBNeSBjdXJyZW50IHRyYWluIG9mIHRob3VnaHQgaXMgZm9jdXNlZCBvbiB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgSSYjMzk7dmUgc2VlbiBpdCBjYWxsZWQgZnJvbSB0d28gcGxhY2VzOiBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGluaXRfbWFjODAyMTFfaHdzaW1gLiAgVGhlIGZvcm1lciwgYGh3c2ltX25ld19yYWRpb19ubGAsIHN0cmlrZXMgbWUgYXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIHN1Z2dlc3RzIGFuIGV4dGVybmFsIGNvbnRyb2wgbWVjaGFuaXNtIGZvciB0aGVzZSByYWRpb3MsIHByb2JhYmx5IGZyb20gdXNlcnNwYWNlLiBJdCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCBieSB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0cmFjayBkb3duIHRoaXMgbmV0bGluayBmYW1pbHkuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBuZXRsaW5rIGZhbWlseSB0byB1bmRlcnN0YW5kIHRoZSBleHRlcm5hbCBjb250cm9sIG9mIGBtYWM4MDIxMV9od3NpbWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fbmV3X3JhZGlvX25sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjcxND1zdGF0aWMgaW50IHBhcnNlX3Btc3JfY2FwYShjb25zdCBzdHJ1Y3QgbmxhdHRyICpwbXNyX2NhcGEsIHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqb3V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTY3NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2NzUzOnN0YXRpYyBpbnQgaHdzaW1fbmV3X3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02NzU0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA3Mi1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA3MzpcdFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDc0LVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzAKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGVsdmluZyBpbnRvIHRoZSBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8gZnVuY3Rpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpb2AuIFJpZ2h0LCBzbyB0aGlzIGZ1bmN0aW9uIGlzIGNsZWFybHkgYWJvdXQgcmVtb3ZpbmcgYSBzaW11bGF0ZWQgcmFkaW8gaW50ZXJmYWNlIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBmcmFtZXdvcmsuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgdW5kZXJzdGFuZCB0aGUgY29yZSBjb25jZXB0IGlzIGhvdyB0aGlzIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFuZGxlcyB0aGUgbGlmZWN5Y2xlIG9mIHRoZXNlIHNpbXVsYXRlZCBkZXZpY2VzLiBJdCYjMzk7cyB0aGUgZXF1aXZhbGVudCBvZiAmIzM0O3RlYXJpbmcgZG93biYjMzQ7IGEgdmlydHVhbCByYWRpby4gTm93LCB3aGF0JiMzOTtzIHNwZWNpZmljYWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoaXMgJiMzNDt0ZWFyZG93biYjMzQ7IGlzIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIElzIGl0IHNpbXBseSBmcmVlaW5nIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gdGhlIHZpcnR1YWwgcmFkaW8/IE9yIGlzIGl0IGhhbmRsaW5nIG1vcmUgaW50cmljYXRlIHRoaW5ncz8gVGhpbmtpbmcgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQsIEkmIzM5O2QgZXhwZWN0IGl0IGhhcyB0byBmcmVlIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmFkaW8sIHBlcmhhcHMgZGUtcmVnaXN0ZXIgaXQgZnJvbSB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIElzIGl0IHRha2luZyBjYXJlIG9mIGNsZWFuaW5nIHVwIGFueSBhc3NvY2lhdGVkIHF1ZXVlcyBvciBsaXN0cz8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciBzdWJzeXN0ZW1zIG9yIGRyaXZlcnM/IFRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGludGVyYWN0aW9uIHdpdGggdGhlICYjMzQ7aG9zdCYjMzQ7IHNpZGUgLSB0aGUgc2ltdWxhdGVkIGhvc3QgYW5kIHRoZSBrZXJuZWwuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBnZXQgaW50byB0aGUgc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxODY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjIxOnN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMjItXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MjgwPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2ZyZWUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mjg5LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYyOTA6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjI5MS1cdFx0XHRcdFx0IE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY5MTM9c3RhdGljIGludCBod3NpbV9kZWxfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTQ4LVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjY5NDk6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjk1MC1cdFx0XHRcdFx0IGluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMDk9c3RhdGljIHZvaWQgcmVtb3ZlX3VzZXJfcmFkaW9zKHUzMiBwb3J0aWQsIGludCBuZXRncm91cClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI3LVx0XHRsaXN0X2RlbChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMjg6XHRcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhlbnRyeSwgd2lwaHlfbmFtZShlbnRyeS1cdTAwM2Vody1cdTAwM2V3aXBoeSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI5LVx0XHRcdFx0XHQgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzE4NT1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGh3c2ltX2V4aXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA3LVx0XHRsaXN0X2RlbChcdTAwMjZkYXRhLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzIwODpcdFx0bWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvKGRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA5LVx0XHRcdFx0XHQgd2lwaHlfbmFtZShkYXRhLVx1MDAzZWh3LVx1MDAzZXdpcGh5KSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY0CgkJCQkJCQlvdXRwdXQ6IDY0CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0bGluayBNdWx0aWNhc3QgQ2hhbmdlIGluIG1hYzgwMjExX2h3c2ltKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGNhbGxiYWNrcywgYW5kIHRoZXkmIzM5O3JlIHN0YXRpYy4mIzM0OyAgVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGJlaGF2aW9yLiAgSXQgdXNlZCB0byBzZW5kIHRvIGVpdGhlciB0aGUgaW5pdGlhbCBuZXR3b3JrIG5hbWVzcGFjZSwgYGluaXRfbmV0YCwgb3IgcG9zc2libHkgKmFsbCogbmFtZXNwYWNlcy4gIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEhtbSwgSSBuZWVkIHRvIGpvZyBteSBtZW1vcnksIGRvZXMgYGdlbmxtc2dfbXVsdGljYXN0YCB1c2UgYGluaXRfbmV0YD8KCkFoLCByaWdodCwgYGdlbmxtc2dfbXVsdGljYXN0YCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zKCZhbXA7aW5pdF9uZXQsIC4uLilgLiAgU28sIGl0ICp3YXMqIHNlbmRpbmcgb25seSB0byBgaW5pdF9uZXRgLiAgTm93LCBpdCYjMzk7cyBjaGFuZ2VkIHRvIGB3aXBoeV9uZXQoZGF0YS0mZ3Q7aHctJmd0O3dpcGh5KWAuICBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGZpeGluZyB0aGUgbmV0bGluayBub3RpZmljYXRpb25zIGZvciBgbWFjODAyMTFfaHdzaW1gIGluIG5ldHdvcmsgbmFtZXNwYWNlcy4gVGhpcyBpcyBpbXBvcnRhbnQsIGl0IGZpeGVzIGEga25vd24gaXNzdWUuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbCBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzICpoZWF2aWx5KiByZWxpZWQgdXBvbiBmb3IgdGVzdGluZywgaW5jbHVkaW5nIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLiAgVGhhdCBtYWtlcyB0aGlzIGEgaGlnaC1wcmlvcml0eSB0YXJnZXQuCgpUaGUgc3BlY2lmaWMgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSB0aG9zZSBjYWxsYmFja3MsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYC4gIEhvd2V2ZXIsIHRoZXkmIzM5O3JlIHN0YXRpYywgc28gSSB3b24mIzM5O3QgYmUgYWJsZSB0byBjYWxsIHRoZW0gZGlyZWN0bHkuIEkgbmVlZCB0byBzZWUgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYXJvdW5kLiBMZXQmIzM5O3MgZGlnIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jYCB0byBsb29rIGZvciB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Mjk3PXN0YXRpYyB1bnNpZ25lZCBpbnQgaHdzaW1fbmV0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA1OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaHdzaW1fdmlydGlvX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo5MDg6c3RhdGljIERFQ0xBUkVfV09SSyhod3NpbV92aXJ0aW9fcngsIGh3c2ltX3ZpcnRpb19yeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xMjY1PXN0YXRpYyBpbmxpbmUgdTY0IG1hYzgwMjExX2h3c2ltX2dldF9zaW1fdHNmKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzA6a3RpbWVfdCBtYWM4MDIxMV9od3NpbV90c2ZfdG9fYm9vdHRpbWUoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjcxLVx0XHRcdFx0ICAgICAgIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzktXHRcdFx0XHQgICBrdGltZV90IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjg2OnU2NCBtYWM4MDIxMV9od3NpbV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIxMDQ9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIyODg6dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM5OS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTMKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTWFjODAyMTEgSFdTaW0gTW9kdWxlJiMzOTtzIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGBtYWM4MDIxMV9od3NpbWAgY29kZSBhZ2Fpbi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gSSYjMzk7dmUgbm90aWNlZCBzb21ldGhpbmcgdGhhdCYjMzk7cyBtYWtpbmcgbWUgcGF1c2UuIFNldmVyYWwga2V5IGZ1bmN0aW9ucywgbGlrZSBgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lYCwgYG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZmAsIGBtYWM4MDIxMV9od3NpbV9nZXRfdHNmYCwgYGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlYCwgYW5kIGBtYWM4MDIxMV9od3NpbV90eF9mcmFtZWAsIGFyZSAqbm90KiBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZCBhYm91dCB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGV4dGVybmFsIGludGVyYWN0aW9ucy4gVGhleSBzZWVtIHRvIGJlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24gaXRzZWxmLgoKVGhlbiBJIGxvb2sgYXQgdGhlIG5ldGxpbmsgZnVuY3Rpb25zLCB3aGljaCBoYW5kbGUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB1c2Vyc3BhY2UuIFRob3NlLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGVzaWduLCBhcyBuZXRsaW5rIGlzIGhvdyBvdXRzaWRlIGVudGl0aWVzIGNvbm5lY3QgdG8gYW5kIGNvbnRyb2wgdGhlIG1vZHVsZS4KClNvLCB0aGUgcXVlc3Rpb24gaXMsICphcmUqIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBuZXRsaW5rIGludGVyZmFjZSBvciB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcz8gSWYgc28sIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBkZXNpZ24/IE15IG1lbnRhbCBtb2RlbCBzZWVzIHBvdGVudGlhbCBhcmVhcyBmb3IgY2xvc2VyIGluc3BlY3Rpb24gd2hlcmUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgb3IgYXJlIGludGVydHdpbmVkIHdpdGggdGhlIG5ldGxpbmsgZnVuY3Rpb25zLiBJIHdpbGwgbmVlZCB0byBsb29rIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Mjk3PXN0YXRpYyB1bnNpZ25lZCBpbnQgaHdzaW1fbmV0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA1OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaHdzaW1fdmlydGlvX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo5MDg6c3RhdGljIERFQ0xBUkVfV09SSyhod3NpbV92aXJ0aW9fcngsIGh3c2ltX3ZpcnRpb19yeF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xMjY1PXN0YXRpYyBpbmxpbmUgdTY0IG1hYzgwMjExX2h3c2ltX2dldF9zaW1fdHNmKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzA6a3RpbWVfdCBtYWM4MDIxMV9od3NpbV90c2ZfdG9fYm9vdHRpbWUoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjcxLVx0XHRcdFx0ICAgICAgIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzktXHRcdFx0XHQgICBrdGltZV90IHRzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjg2OnU2NCBtYWM4MDIxMV9od3NpbV9nZXRfdHNmKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIxMDQ9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIyODg6dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM5OS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50IENob2ljZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBkaXJlY3RseSB1c2UgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgIGFzIEZvY3VzU3ltYm9scywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLiBUaGUgcHJvbXB0LCB0aG91Z2gsIHRocm93cyBhIGN1cnZlYmFsbCwgc3RhdGluZyBhIHByZWZlcmVuY2UgZm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiBpbmxpbmVkIGZ1bmN0aW9ucyBsYWNrIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGFyZW4mIzM5O3QgdGhlc2UgbmV0bGluayBjYWxsYmFja3M/IElmIHRoZXkmIzM5O3JlIGJlaW5nIHBvaW50ZWQgdG8gaW4gdGhlIGBod3NpbV9vcHNgIGFycmF5LCB0aGV5ICpzaG91bGRuJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCAqc2hvdWxkKiBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyBjb3JyZWN0LCB0aG91Z2guIEl0JiMzOTtzIGJlc3QgdG8gdmVyaWZ5IHRoaXMgYXNzdW1wdGlvbiBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQyNTA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9zZXRfcmFkYXJfYmFja2dyb3VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDMxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbWFjODAyMTFfaHdzaW1fb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMxNy1cdEhXU0lNX0NPTU1PTl9PUFNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjUxPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1OC1cdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU5Olx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyA9IFx1MDAyNm1hYzgwMjExX2h3c2ltX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjAtXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzAwMT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDUyLS8qIEdlbmVyaWMgTmV0bGluayBvcGVyYXRpb25zIGFycmF5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDU0LVx0e1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwOTU9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEwMS1cdC5tb2R1bGUgPSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMDI6XHQuc21hbGxfb3BzID0gaHdzaW1fb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEwMzpcdC5uX3NtYWxsX29wcyA9IEFSUkFZX1NJWkUoaHdzaW1fb3BzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxMDQtXHQucmVzdl9zdGFydF9vcCA9IEhXU0lNX0NNRF9SRVBPUlRfUE1TUiAmIzQzOyAxLCAvLyBtYXRjaCB3aXRoIF9fSFdTSU1fQ01EX01BWFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk4MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEtjb25maWcgZm9yIG1hYzgwMjExX2h3c2ltKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYC4gUmlnaHQsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgTmV0bGluayBjYWxsYmFja3MsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEl0IG1ha2VzIHNlbnNlIHRvIGZvbGQgdGhvc2UgaW50byBGb2N1c1N5bWJvbHM7IHRoYXQgc2VlbXMgbG9naWNhbC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLiBUaGUgbWFpbiBzb3VyY2UgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQgcmVzaWRlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBUaGVyZWZvcmUsIHRoZSBjb3JyZXNwb25kaW5nIEtjb25maWcgZmlsZSBuZWVkcyB0byBiZSB2ZXJpZmllZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2Agb3IsIHBlcmhhcHMgbW9yZSBicm9hZGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgdG8gY29uZmlybSB3aGVyZSBgbWFjODAyMTFfaHdzaW1gIGlzIGRlZmluZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gaXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQwOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipEaXZpbmcgaW50byB0aGUgVmlydHVhbCBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBnZXQgaW50byB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgYmVpbmcgY29uZmlndXJlZCBmb3IgdGhlc2UgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXJzLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdGFuZGFyZCBLY29uZmlnIHN0cnVjdHVyZSwgYnV0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMuIEkgd2FudCB0byBzZWUgd2hhdCBvcHRpb25zIHRoZXkmIzM5O3ZlIGV4cG9zZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZSwgYW5kIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzZW5zZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHZpcnR1YWwgZHJpdmVycyBjYW4gYmUgbm90b3Jpb3VzbHkgdHJpY2t5IHdoZW4gZGVhbGluZyB3aXRoIGludGVyYWN0aW9ucyB3aXRoIHRoZSBoYXJkd2FyZSBkcml2ZXJzLiBJJiMzOTttIGhvcGluZyB0byB1bmRlcnN0YW5kIGhvdyByb2J1c3RseSB0aGUgY29uZmlndXJhdGlvbiBpcyBjcmFmdGVkIGFuZCB3aGV0aGVyIGl0IHRha2VzIGludG8gY29uc2lkZXJhdGlvbiBob3cgdGhlIHZpcnR1YWwgbGF5ZXIgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIGlmIGl0IG1ha2VzIHNvbWUgYXNzdW1wdGlvbnMgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGFkZHJlc3MuIFRoaXMgbWlnaHQgYWxzbyBwcm92aWRlIGNsdWVzIHJlZ2FyZGluZyB0aGUgdGFyZ2V0IHVzZSBjYXNlLiBMZXQmIzM5O3Mgc3RhcnQgcGFyc2luZyBhbmQgc2VlIHdoYXQgdGhlIGF1dGhvcnMgd2VyZSB0aGlua2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRjb25maWcgTUFDODAyMTFfSFdTSU1cbiAgIDI6XHRcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA0Olx0XHRoZWxwXG4gICA1Olx0XHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcbiAgIDY6XHRcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XG4gICA3Olx0XHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXG4gICA4Olx0XHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcbiAgIDk6XHRcdCAgdG8gdXNlIHRoaXMgdG9vbC5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gIDEyOlx0XHQgIGNhbGxlZCBtYWM4MDIxMV9od3NpbS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFZJUlRfV0lGSVxuICAxNTpcdFx0dHJpc3RhdGUgXCYjMzQ7V2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZXRoZXJuZXQgY29ubmVjdGlvbnMgdG8gYXBwZWFyIGFzIGlmIHRoZXlcbiAgMTk6XHRcdCAgYXJlIHdpZmkgY29ubmVjdGlvbnMgdGhyb3VnaCBhIHNwZWNpYWwgcnRuZXRsaW5rIGRldmljZS5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwMDAKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMTQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGFuZCBgTUFDODAyMTFgIGFyZSBlc3NlbnRpYWwuIGBNQUM4MDIxMWAgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBzbyB0aGF0JiMzOTtzIGltcGxpY2l0LiBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYm90aC4gTm93LCB3YWl0IGEgbWludXRlLCB0aGUgcHJvbXB0IHRocm93cyBhIGN1cnZlYmFsbC4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBgbWFjODAyMTFfaHdzaW1gLgoKQnV0Li4uIGhvbGQgb24uIElzbiYjMzk7dCBgbWFjODAyMTFfaHdzaW1gIGl0c2VsZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZT8gVGhlIHBocmFzZSAmIzM0O2V2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0OyBtZWFucyBpZiBhIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuICp3aXRoKiBgbWFjODAyMTFfaHdzaW1gLCB0aGVuIGRvbiYjMzk7dCBib3RoZXIuIEhvd2V2ZXIsIHRoaXMgY29kZSBpcyAqaW4qIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoICppcyogcmVhY2hhYmxlIGluIFFFTVUuICBTbyB0aGUgY2xhdXNlIHRoYXQgKnNlZW1zKiBsaWtlIGFuIGV4Y2VwdGlvbiB0byB0aGUgZXhjZXB0aW9uIGRvZXMgbm90IGFwcGx5IGhlcmUuIFRoZSBjb2RlIGlzICpyZWFjaGFibGUqIGluIFFFTVUuIFRodXMsIGl0IHdhcnJhbnRzIGZ1enppbmcuIGBXb3J0aEZ1enppbmdgIGlzIGB0cnVlYC4KCkxldCYjMzk7cyBxdWlja2x5IGlkZW50aWZ5IHRoZSBuZXRsaW5rIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gSSBzZWUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiBUaGVyZSYjMzk7cyBhbHNvIGBod3NpbV9tY2FzdF9jb25maWdfbXNnYCwgYnV0IHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gIGFuZCBgaHdzaW1fbWNhc3RfZGVsX3JhZGlvYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGZyb20gdGhlIHByaW1hcnkgZnVuY3Rpb25zLiAgU28gdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGFyZSBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGh3c2ltX2RlbF9yYWRpb19ubGAuICBPbmx5IGBNQUM4MDIxMV9IV1NJTWAgaXMgbmVjZXNzYXJ5LgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZi4gSXQmIzM5O3MgYSBtb2RpZmljYXRpb24gdG8gYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBtdWx0aWNhc3QgbWVzc2FnZXMgYXJlIGhhbmRsZWQgd2hlbiBgaW5mb2AgaXMgTlVMTC4gVGhpcyBoYXBwZW5zIGluIG1vZHVsZSBpbml0IGFuZCBleGl0LiBUaGlzIGZpeCBlbnN1cmVzIHRoYXQgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlLCBldmVuIHdoZW4gbm8gbmV0bGluayByZXF1ZXN0IHRyaWdnZXJlZCB0aGVpciBjcmVhdGlvbiBvciBkZWxldGlvbiAoZS5nLiwgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbi9leGl0IG9yIGEgbmV0bnMgZXhpdCkuIFRoZSBwcmlvciBjb2RlIHdhcyBzZW5kaW5nIGl0IHRvIHRoZSB3cm9uZyBuYW1lc3BhY2UuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgY29ycmVjdGluZyBhIG5ldHdvcmsgbmFtZXNwYWNlIGJ1ZyBpbiBgbWFjODAyMTFfaHdzaW1gLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudC4gSSYjMzk7bGwgc2V0OgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBbJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywgJiMzNDtod3NpbV9kZWxfcmFkaW9fbmwmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywgJiMzNDtNQUM4MDIxMSYjMzQ7XWAKKiAgIGBSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDtgCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h3c2ltX25ld19yYWRpb19ubCYjMzQ7LAogICAgJiMzNDtod3NpbV9kZWxfcmFkaW9fbmwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSB3aGVuIHJhZGlvcyBhcmUgY3JlYXRlZCBvciBkZWxldGVkIHdpdGhvdXQgYSBuZXRsaW5rIHJlcXVlc3QgKGUuZy4gZHVyaW5nIG1vZHVsZSBpbml0L2V4aXQgb3IgbmV0bnMgZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtYWM4MDIxMV9od3NpbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtod3NpbV9uZXdfcmFkaW9fbmwmIzM0OywKICAgICYjMzQ7aHdzaW1fZGVsX3JhZGlvX25sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEyOjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTI6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwppbmRleCA3NWNhYTk3YmVjYzhkLi40YTY4Y2FlMjViN2RiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwpAQCAtNDM3MiwxNSAmIzQzOzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgewogCWJvb2wgYmFja2dyb3VuZF9yYWRhcjsKIH07CiAKLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwKJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsIHN0cnVjdCBuZXQgKm5ldCwKIAkJCQkgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogewogCWlmIChpbmZvKQogCQlnZW5sX25vdGlmeSgmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBtY2FzdF9za2IsIGluZm8sCiAJCQkgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTsKIAllbHNlCi0JCWdlbmxtc2dfbXVsdGljYXN0KCZhbXA7aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCwKLQkJCQkgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiYjNDM7CQlnZW5sbXNnX211bHRpY2FzdF9uZXRucygmYW1wO2h3c2ltX2dlbmxfZmFtaWx5LCBuZXQsIG1jYXN0X3NrYiwgMCwKJiM0MzsJCQkJCUhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7CiB9CiAKIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsCkBAIC00NDY0LDcgJiM0Mzs0NDY0LDggQEAgc3RhdGljIGludCBhcHBlbmRfcmFkaW9fbXNnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpZCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKJiM0MztzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsCiYjNDM7CQkJCSAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAkJCQkgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSkKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiOwpAQCAtNDQ4NCw3ICYjNDM7NDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sCiAKIAlnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpOwogCi0JaHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pOwomIzQzOwlod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgbmV0LCBpbmZvKTsKIAlyZXR1cm47CiAKIG91dF9lcnI6CkBAIC02MTY1LDcgJiM0Mzs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAlod3NpbV9yYWRpb3NfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtod3NpbV9yYWRpb19sb2NrKTsKIAotCWh3c2ltX21jYXN0X25ld19yYWRpbyhpZHgsIGluZm8sIHBhcmFtKTsKJiM0MzsJaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtJmd0O2h3LSZndDt3aXBoeSksIGluZm8sIHBhcmFtKTsKIAogCXJldHVybiBpZHg7CiAKQEAgLTYxODMsNyAmIzQzOzYxODQsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLAogfQogCiBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsCi0JCQkJICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQomIzQzOwkJCQkgIHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXZvaWQgKmRhdGE7CkBAIC02MjA5LDcgJiM0Mzs2MjEwLDcgQEAgc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLAogCiAJZ2VubG1zZ19lbmQoc2tiLCBkYXRhKTsKIAotCWh3c2ltX21jYXN0X2NvbmZpZ19tc2coc2tiLCBpbmZvKTsKJiM0MzsJaHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIG5ldCwgaW5mbyk7CiAKIAlyZXR1cm47CiAKQEAgLTYyMjEsNyAmIzQzOzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsCiAJCQkJICAgICBjb25zdCBjaGFyICpod25hbWUsCiAJCQkJICAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogewotCWh3c2ltX21jYXN0X2RlbF9yYWRpbyhkYXRhLSZndDtpZHgsIGh3bmFtZSwgaW5mbyk7CiYjNDM7CWh3c2ltX21jYXN0X2RlbF9yYWRpbyhkYXRhLSZndDtpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtJmd0O2h3LSZndDt3aXBoeSksIGluZm8pOwogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLSZndDtkZWJ1Z2ZzKTsKIAlpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhkYXRhLSZndDtodyk7CiAJZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRhdGEtJmd0O2Rldik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JrIE5hbWVzcGFjZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gc2VlaW5nLiBJdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtYWM4MDIxMV9od3NpbV9tYWluLmNgIGRyaXZlcjogc3BlY2lmaWNhbGx5LCB0aGUgbXVsdGljYXN0IGNvbmZpZ3VyYXRpb24sIG5ldyByYWRpbywgYW5kIGRlbGV0ZSByYWRpbyBmdW5jdGlvbnMgKGBod3NpbV9tY2FzdF9jb25maWdfbXNnYCwgYGh3c2ltX21jYXN0X25ld19yYWRpb2AsIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gLCBgaHdzaW1fbWNhc3RfZGVsX3JhZGlvYCwgYW5kIGBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW9gKS4gVGhlIHByaW1hcnkgbW9kaWZpY2F0aW9uIGhlcmUgaW52b2x2ZXMgYWRkaW5nIGEgYHN0cnVjdCBuZXQgKm5ldGAgYXJndW1lbnQgdG8gdGhlc2UgZnVuY3Rpb25zLiBUaGlzIGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBzaGlmdCB0b3dhcmRzIG5ldHdvcmsgbmFtZXNwYWNlIGF3YXJlbmVzcy4KClRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZXBsYWNlbWVudCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgIHdpdGggYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYC4gVGhpcyBjb25maXJtcyB0aGF0IHRoZSBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyBhcmUgbm93IHNjb3BlZCB0byBhIHBhcnRpY3VsYXIgbmV0d29yayBuYW1lc3BhY2UsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIGV4cGVjdGVkIGdpdmVuIHRoZSBhZGRlZCBgc3RydWN0IG5ldCAqbmV0YCBhcmd1bWVudC4KCkkmIzM5O20gbm90IHNlZWluZyBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gYWRkaXRpb25zIG9mIG5ldyBzdHJ1Y3QgZmllbGRzLCBhbmQgdGhlIG1lbW9yeSBpbml0aWFsaXphdGlvbiBzZWVtcyB1bmFmZmVjdGVkLiBUaGF04oCZcyBnb29kLiBUaGlzIHBhdGNoIGlzIHB1cmVseSBhIGNoYW5nZSBpbiB0aGUgcm91dGluZyBvZiB0aGUgbmV0bGluayBtZXNzYWdlIGJhc2VkIG9uIHRoZSBuZXR3b3JrIG5hbWVzcGFjZS4KCkdpdmVuIHRoaXMgZm9jdXNlZCBzY29wZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IEkgc2VlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IGludG8gY29udHJvbCBmbG93LiBJdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBkaXJlY3RpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBjb3JyZWN0IG5hbWVzcGFjZS4gU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0bGluayBtdWx0aWNhc3QgZnVuY3Rpb25zIGluIG1hYzgwMjExX2h3c2ltIHRvIHVzZSBgZ2VubG1zZ19tdWx0aWNhc3RfbmV0bnNgIGluc3RlYWQgb2YgYGdlbmxtc2dfbXVsdGljYXN0YCwgYWRkaW5nIGEgYHN0cnVjdCBuZXQgKm5ldGAgcGFyYW1ldGVyIHRvIGNvcnJlY3RseSByb3V0ZSBtZXNzYWdlcyB0byB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBuYW1lc3BhY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IGJ1ZmZlciBsZW5ndGhzLCBvciBjaGFuZ2UgaG93IG1lbW9yeSBpcyBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowMzoyMy44MzkyMDk1OTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDY3MjA5NTE3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fbmV3X3JhZGlvX25sXCIsXG4gICAgXCJod3NpbV9kZWxfcmFkaW9fbmxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjAzOjIzLjgzOTIyMTI1MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA5MjAzNjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWZhYmI2MTI3YjY1YzVhYzM1MTQ5ZTk5NWU4YmU3M2JiZDZkYjZiZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5pbmRleCA3NWNhYTk3YmVjYzhkLi40YTY4Y2FlMjViN2RiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5AQCAtNDM3MiwxNSArNDM3MiwxNSBAQCBzdHJ1Y3QgaHdzaW1fbmV3X3JhZGlvX3BhcmFtcyB7XFxuIFxcdGJvb2wgYmFja2dyb3VuZF9yYWRhcjtcXG4gfTtcXG4gXFxuLXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYixcXG4rc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLCBzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIHtcXG4gXFx0aWYgKGluZm8pXFxuIFxcdFxcdGdlbmxfbm90aWZ5KFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxcbiBcXHRcXHRcXHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRnZW5sbXNnX211bHRpY2FzdChcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcXG4tXFx0XFx0XFx0XFx0ICBIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xcbitcXHRcXHRnZW5sbXNnX211bHRpY2FzdF9uZXRucyhcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxcbitcXHRcXHRcXHRcXHRcXHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxcbkBAIC00NDY0LDcgKzQ0NjQsOCBAQCBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4rc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IG5ldCAqbmV0LFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICptY2FzdF9za2I7XFxuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIFxcbiBcXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKG1jYXN0X3NrYiwgbmV0LCBpbmZvKTtcXG4gXFx0cmV0dXJuO1xcbiBcXG4gb3V0X2VycjpcXG5AQCAtNjE2NSw3ICs2MTY2LDcgQEAgc3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gXFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xcbitcXHRod3NpbV9tY2FzdF9uZXdfcmFkaW8oaWR4LCB3aXBoeV9uZXQoZGF0YS1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KSwgaW5mbywgcGFyYW0pO1xcbiBcXG4gXFx0cmV0dXJuIGlkeDtcXG4gXFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcXG4tXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXHR2b2lkICpkYXRhO1xcbkBAIC02MjA5LDcgKzYyMTAsNyBAQCBzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9kZWxfcmFkaW8oaW50IGlkLCBjb25zdCBjaGFyICpod25hbWUsXFxuIFxcbiBcXHRnZW5sbXNnX2VuZChza2IsIGRhdGEpO1xcbiBcXG4tXFx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhza2IsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcXG4gXFxuIFxcdHJldHVybjtcXG4gXFxuQEAgLTYyMjEsNyArNjIyMiw3IEBAIHN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG4gXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpod25hbWUsXFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4ge1xcbi1cXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cXHUwMDNlaWR4LCBod25hbWUsIGluZm8pO1xcbitcXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cXHUwMDNlaWR4LCBod25hbWUsIHdpcGh5X25ldChkYXRhLVxcdTAwM2Vody1cXHUwMDNld2lwaHkpLCBpbmZvKTtcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGRhdGEtXFx1MDAzZWRlYnVnZnMpO1xcbiBcXHRpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhkYXRhLVxcdTAwM2Vodyk7XFxuIFxcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkYXRhLVxcdTAwM2VkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowMzoyNC4yNDkxNDQyNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMwMDMxMjU4NTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV9uZXdfcmFkaW9fbmxcIixcbiAgICBcImh3c2ltX2RlbF9yYWRpb19ubFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgKzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMge1xuIFx0Ym9vbCBiYWNrZ3JvdW5kX3JhZGFyO1xuIH07XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxuK3N0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRcdFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRpZiAoaW5mbylcbiBcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbiBcdFx0XHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiBcdGVsc2Vcbi1cdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbi1cdFx0XHRcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbitcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuK1x0XHRcdFx0XHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxuQEAgLTQ0NjQsNyArNDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbitzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4rXHRcdFx0XHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXHRcdFx0XHQgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiO1xuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXG4gXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xuK1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuK1x0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvLCBwYXJhbSk7XG4gXG4gXHRyZXR1cm4gaWR4O1xuIFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gfVxuIFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi1cdFx0XHRcdCAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbitcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyArNjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcbiBcdGdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcbiBcbiBcdHJldHVybjtcbiBcbkBAIC02MjIxLDcgKzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvKTtcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLVx1MDAzZWRlYnVnZnMpO1xuIFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS1cdTAwM2Vodyk7XG4gXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGF0YS1cdTAwM2VkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDM6MjQuMjQ5MTQ1NTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTA3MDc3Njc2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCwgZm9jdXNpbmcgb24gaG93IHdlIGhhbmRsZSBtdWx0aWNhc3QgbmV0bGluayBtZXNzYWdlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHVzaW5nIGBnZW5sbXNnX211bHRpY2FzdGAgdG8gYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbiBhIGZldyBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgaHdzaW1fbWNhc3RfY29uZmlnX21zZ2AsIGBod3NpbV9tY2FzdF9uZXdfcmFkaW9gLCBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCwgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIGFuZCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBjb3JyZWN0bHkgcm91dGVkIHRvIHRoZSBwcm9wZXIgbmV0d29yayBuYW1lc3BhY2UuXG5cbkEgYml0IG9mIGEgaGVhZC1zY3JhdGNoZXIuLi50aG9zZSBsYXN0IHR3bywgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AgYW5kIGBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW9gLCBhcmUgc3RhdGljLiBUaGF0J3Mgbm90IHRoZSB1c3VhbCB0YXJnZXQgZm9yIHRoaXMgdHlwZSBvZiBwYXRjaCwgdXN1YWxseS4gTGV0IG1lIGRvdWJsZS1jaGVjayAtIEkgd2FudCB0byB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhpcyBtaWdodCBhZmZlY3QuIE9rYXksIHNvIEkgc2VlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGlzIGNhbGxlZCBmcm9tIGBod3NpbV9uZXdfcmFkaW9fbmxgLCB3aGljaCBpcyBhIG5ldGxpbmsgY2FsbGJhY2suIE5vdyBJIGhhdmUgYSBnb29kIGxlYWQgZm9yIGludmVzdGlnYXRpb24uIEkgd2lsbCBqdXN0IGRvIGEgcXVpY2sgZ3JlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA2OjU0Ljk1NjkxNjY2OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ1NDQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYzOT1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjUxOnN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY1Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMgKnBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Njc1Mz1zdGF0aWMgaW50IGh3c2ltX25ld19yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjkwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2OTA1OlxcdHJldCA9IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhpbmZvLCBcXHUwMDI2cGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTY5MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDU4PXN0YXRpYyBpbnQgX19pbml0IGluaXRfbWFjODAyMTFfaHdzaW0odm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc1NzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzU3MjpcXHRcXHRlcnIgPSBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oTlVMTCwgXFx1MDAyNnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NTczLVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNjo1NS4wMDEzODA1NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQxMTQyNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIGEgbWFjODAyMTFfaHdzaW0gUmFkaW8qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSBzaW11bGF0ZWQgcmFkaW9zIGFyZSBjcmVhdGVkIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBtb2R1bGUuIE15IGN1cnJlbnQgdHJhaW4gb2YgdGhvdWdodCBpcyBmb2N1c2VkIG9uIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MuIEl0IGxvb2tzIGxpa2UgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBJJ3ZlIHNlZW4gaXQgY2FsbGVkIGZyb20gdHdvIHBsYWNlczogYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBpbml0X21hYzgwMjExX2h3c2ltYC4gIFRoZSBmb3JtZXIsIGBod3NpbV9uZXdfcmFkaW9fbmxgLCBzdHJpa2VzIG1lIGFzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIHN1Z2dlc3RzIGFuIGV4dGVybmFsIGNvbnRyb2wgbWVjaGFuaXNtIGZvciB0aGVzZSByYWRpb3MsIHByb2JhYmx5IGZyb20gdXNlcnNwYWNlLiBJdCBpcyBhbHNvIHN0YXRpYywgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCBieSB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0cmFjayBkb3duIHRoaXMgbmV0bGluayBmYW1pbHkuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBuZXRsaW5rIGZhbWlseSB0byB1bmRlcnN0YW5kIHRoZSBleHRlcm5hbCBjb250cm9sIG9mIGBtYWM4MDIxMV9od3NpbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzowMC45NDI1MjY1OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMzMTI1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbV9uZXdfcmFkaW9fbmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjcxND1zdGF0aWMgaW50IHBhcnNlX3Btc3JfY2FwYShjb25zdCBzdHJ1Y3QgbmxhdHRyICpwbXNyX2NhcGEsIHN0cnVjdCBjZmc4MDIxMV9wbXNyX2NhcGFiaWxpdGllcyAqb3V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjc1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2NzUzOnN0YXRpYyBpbnQgaHdzaW1fbmV3X3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjc1NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDcyLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDczOlxcdFxcdC5kb2l0ID0gaHdzaW1fbmV3X3JhZGlvX25sLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNzQtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDc6MDAuOTg3ODYyMzE5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MzAyMjAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWx2aW5nIGludG8gdGhlIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyBmdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBgbWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvYC4gUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24gaXMgY2xlYXJseSBhYm91dCByZW1vdmluZyBhIHNpbXVsYXRlZCByYWRpbyBpbnRlcmZhY2Ugd2l0aGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGZyYW1ld29yay4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSB1bmRlcnN0YW5kIHRoZSBjb3JlIGNvbmNlcHQgaXMgaG93IHRoaXMgdmlydHVhbCBlbnZpcm9ubWVudCBoYW5kbGVzIHRoZSBsaWZlY3ljbGUgb2YgdGhlc2Ugc2ltdWxhdGVkIGRldmljZXMuIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgXCJ0ZWFyaW5nIGRvd25cIiBhIHZpcnR1YWwgcmFkaW8uIE5vdywgd2hhdCdzIHNwZWNpZmljYWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoaXMgXCJ0ZWFyZG93blwiIGlzIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIElzIGl0IHNpbXBseSBmcmVlaW5nIHJlc291cmNlcyBhbGxvY2F0ZWQgdG8gdGhlIHZpcnR1YWwgcmFkaW8/IE9yIGlzIGl0IGhhbmRsaW5nIG1vcmUgaW50cmljYXRlIHRoaW5ncz8gVGhpbmtpbmcgYWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQsIEknZCBleHBlY3QgaXQgaGFzIHRvIGZyZWUgc29tZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByYWRpbywgcGVyaGFwcyBkZS1yZWdpc3RlciBpdCBmcm9tIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXMgaXQgdGFraW5nIGNhcmUgb2YgY2xlYW5pbmcgdXAgYW55IGFzc29jaWF0ZWQgcXVldWVzIG9yIGxpc3RzPyBEb2VzIGl0IGludGVyYWN0IHdpdGggYW55IG90aGVyIHN1YnN5c3RlbXMgb3IgZHJpdmVycz8gVGhlcmUncyBsaWtlbHkgc29tZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBcImhvc3RcIiBzaWRlIC0gdGhlIHNpbXVsYXRlZCBob3N0IGFuZCB0aGUga2VybmVsLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgaW50byB0aGUgc3BlY2lmaWNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMwLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDc6MTcuNTE4MDg0ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MDg3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTFfaHdzaW1fZGVsX3JhZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxODY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjIxOnN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MjIyLVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjI4MD1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9mcmVlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mjg5LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjkwOlxcdFxcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjI5MS1cXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTEzPXN0YXRpYyBpbnQgaHdzaW1fZGVsX3JhZGlvX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02OTQ4LVxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZod3NpbV9yYWRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2OTQ5OlxcdFxcdG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpbyhkYXRhLCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjk1MC1cXHRcXHRcXHRcXHRcXHQgaW5mbyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTA5PXN0YXRpYyB2b2lkIHJlbW92ZV91c2VyX3JhZGlvcyh1MzIgcG9ydGlkLCBpbnQgbmV0Z3JvdXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTI3LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZlbnRyeS1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEyODpcXHRcXHRtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oZW50cnksIHdpcGh5X25hbWUoZW50cnktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEyOS1cXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTg1PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaHdzaW1fZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzIwNy1cXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGF0YS1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzIwODpcXHRcXHRtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjA5LVxcdFxcdFxcdFxcdFxcdCB3aXBoeV9uYW1lKGRhdGEtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjE3LjU2MTQ5NzQ4OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0ODYyODQzMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIE11bHRpY2FzdCBDaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiUmlnaHQsIGBod3NpbV9uZXdfcmFkaW9fbmxgIGFuZCBgaHdzaW1fZGVsX3JhZGlvX25sYCDigJMgdGhvc2UgYXJlIHRoZSBuZXRsaW5rIGNhbGxiYWNrcywgYW5kIHRoZXkncmUgc3RhdGljLlwiICBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCB0aGUgbmV0bGluayBtdWx0aWNhc3QgYmVoYXZpb3IuICBJdCB1c2VkIHRvIHNlbmQgdG8gZWl0aGVyIHRoZSBpbml0aWFsIG5ldHdvcmsgbmFtZXNwYWNlLCBgaW5pdF9uZXRgLCBvciBwb3NzaWJseSAqYWxsKiBuYW1lc3BhY2VzLiAgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSG1tLCBJIG5lZWQgdG8gam9nIG15IG1lbW9yeSwgZG9lcyBgZ2VubG1zZ19tdWx0aWNhc3RgIHVzZSBgaW5pdF9uZXRgP1xuXG5BaCwgcmlnaHQsIGBnZW5sbXNnX211bHRpY2FzdGAgaXMganVzdCBhIHdyYXBwZXIgZm9yIGBnZW5sbXNnX211bHRpY2FzdF9uZXRucyhcdTAwMjZpbml0X25ldCwgLi4uKWAuICBTbywgaXQgKndhcyogc2VuZGluZyBvbmx5IHRvIGBpbml0X25ldGAuICBOb3csIGl0J3MgY2hhbmdlZCB0byBgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpYC4gIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBmaXhpbmcgdGhlIG5ldGxpbmsgbm90aWZpY2F0aW9ucyBmb3IgYG1hYzgwMjExX2h3c2ltYCBpbiBuZXR3b3JrIG5hbWVzcGFjZXMuIFRoaXMgaXMgaW1wb3J0YW50LCBpdCBmaXhlcyBhIGtub3duIGlzc3VlLlxuXG5Ob3cgdGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmlydHVhbCBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzICpoZWF2aWx5KiByZWxpZWQgdXBvbiBmb3IgdGVzdGluZywgaW5jbHVkaW5nIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLiAgVGhhdCBtYWtlcyB0aGlzIGEgaGlnaC1wcmlvcml0eSB0YXJnZXQuXG5cblRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIHRob3NlIGNhbGxiYWNrcywgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiAgSG93ZXZlciwgdGhleSdyZSBzdGF0aWMsIHNvIEkgd29uJ3QgYmUgYWJsZSB0byBjYWxsIHRoZW0gZGlyZWN0bHkuIEkgbmVlZCB0byBzZWUgd2hhdCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYXJvdW5kLiBMZXQncyBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgIHRvIGxvb2sgZm9yIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTY0LCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjI2LjA0Nzc4NDI4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjMxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTI5Nz1zdGF0aWMgdW5zaWduZWQgaW50IGh3c2ltX25ldF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwNTpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGh3c2ltX3ZpcnRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA4OnN0YXRpYyBERUNMQVJFX1dPUksoaHdzaW1fdmlydGlvX3J4LCBod3NpbV92aXJ0aW9fcnhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTI2NT1zdGF0aWMgaW5saW5lIHU2NCBtYWM4MDIxMV9od3NpbV9nZXRfc2ltX3RzZih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjcwOmt0aW1lX3QgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0c2YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc5LVxcdFxcdFxcdFxcdCAgIGt0aW1lX3QgdHMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyODY6dTY0IG1hYzgwMjExX2h3c2ltX2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjEwND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjI4ODp2b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzoyNi4wOTQ3NTM0MDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY3NzczMjY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIE1hYzgwMjExIEhXU2ltIE1vZHVsZSdzIEFyY2hpdGVjdHVyZSoqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0aHJvdWdoIHRoZSBgbWFjODAyMTFfaHdzaW1gIGNvZGUgYWdhaW4uIEknbSBmb2N1c2luZyBvbiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gYW5kIHRoZSBuZXRsaW5rIGludGVyZmFjZS4gSSd2ZSBub3RpY2VkIHNvbWV0aGluZyB0aGF0J3MgbWFraW5nIG1lIHBhdXNlLiBTZXZlcmFsIGtleSBmdW5jdGlvbnMsIGxpa2UgYG1hYzgwMjExX2h3c2ltX3RzZl90b19ib290dGltZWAsIGBtYWM4MDIxMV9od3NpbV9ib290dGltZV90b190c2ZgLCBgbWFjODAyMTFfaHdzaW1fZ2V0X3RzZmAsIGBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZWAsIGFuZCBgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVgLCBhcmUgKm5vdCogZGVjbGFyZWQgc3RhdGljLiBUaGF0IHJhaXNlcyBhIHF1ZXN0aW9uIGluIG15IG1pbmQgYWJvdXQgdGhlaXIgc2NvcGUgYW5kIHBvdGVudGlhbCBleHRlcm5hbCBpbnRlcmFjdGlvbnMuIFRoZXkgc2VlbSB0byBiZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3Mgd2l0aGluIHRoZSBzaW11bGF0aW9uIGl0c2VsZi5cblxuVGhlbiBJIGxvb2sgYXQgdGhlIG5ldGxpbmsgZnVuY3Rpb25zLCB3aGljaCBoYW5kbGUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB1c2Vyc3BhY2UuIFRob3NlLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGVzaWduLCBhcyBuZXRsaW5rIGlzIGhvdyBvdXRzaWRlIGVudGl0aWVzIGNvbm5lY3QgdG8gYW5kIGNvbnRyb2wgdGhlIG1vZHVsZS5cblxuU28sIHRoZSBxdWVzdGlvbiBpcywgKmFyZSogdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIG5ldGxpbmsgaW50ZXJmYWNlIG9yIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzPyBJZiBzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGRlc2lnbj8gTXkgbWVudGFsIG1vZGVsIHNlZXMgcG90ZW50aWFsIGFyZWFzIGZvciBjbG9zZXIgaW5zcGVjdGlvbiB3aGVyZSBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgdXNlZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvciBhcmUgaW50ZXJ0d2luZWQgd2l0aCB0aGUgbmV0bGluayBmdW5jdGlvbnMuIEkgd2lsbCBuZWVkIHRvIGxvb2sgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTUzLCJPdXRwdXRUb2tlbnMiOjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjMyLjc3MjQ4ODI1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNzkxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTI5Nz1zdGF0aWMgdW5zaWduZWQgaW50IGh3c2ltX25ldF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mjk5OnN0YXRpYyBERUZJTkVfSURBKGh3c2ltX25ldGdyb3VwX2lkYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA0PXN0YXRpYyBib29sIGh3c2ltX3ZpcnRpb19lbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwNTpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGh3c2ltX3ZpcnRpb19sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9OTA3PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTA4OnN0YXRpYyBERUNMQVJFX1dPUksoaHdzaW1fdmlydGlvX3J4LCBod3NpbV92aXJ0aW9fcnhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTI2NT1zdGF0aWMgaW5saW5lIHU2NCBtYWM4MDIxMV9od3NpbV9nZXRfc2ltX3RzZih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxMjcwOmt0aW1lX3QgbWFjODAyMTFfaHdzaW1fdHNmX3RvX2Jvb3R0aW1lKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0c2YpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyNzg6dTY0IG1hYzgwMjExX2h3c2ltX2Jvb3R0aW1lX3RvX3RzZihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjc5LVxcdFxcdFxcdFxcdCAgIGt0aW1lX3QgdHMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjEyODY6dTY0IG1hYzgwMjExX2h3c2ltX2dldF90c2Yoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTI4Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjEwND1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjI4ODp2b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIyODktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTIzODY9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fcmVtb3ZlX2ludGVyZmFjZShcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM5ODp2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzOTktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozMi44MTg4NzMwNTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNTU2MTA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnQgQ2hvaWNlcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBJIGNhbiBkaXJlY3RseSB1c2UgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgIGFzIEZvY3VzU3ltYm9scywgZXZlbiB0aG91Z2ggdGhleSdyZSBzdGF0aWMuIFRoZSBwcm9tcHQsIHRob3VnaCwgdGhyb3dzIGEgY3VydmViYWxsLCBzdGF0aW5nIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IGlubGluZWQgZnVuY3Rpb25zIGxhY2sgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IHdhaXQgYSBtaW51dGUuLi4gYXJlbid0IHRoZXNlIG5ldGxpbmsgY2FsbGJhY2tzPyBJZiB0aGV5J3JlIGJlaW5nIHBvaW50ZWQgdG8gaW4gdGhlIGBod3NpbV9vcHNgIGFycmF5LCB0aGV5ICpzaG91bGRuJ3QqIGJlIGlubGluZWQgYW5kICpzaG91bGQqIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQncyBjb3JyZWN0LCB0aG91Z2guIEl0J3MgYmVzdCB0byB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozOS42NTQ0MzcwMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzgzMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz00MjUwPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjQzMTY6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG1hYzgwMjExX2h3c2ltX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzE3LVxcdEhXU0lNX0NPTU1PTl9PUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NTE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NTgtXFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjU5OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHMgPSBcXHUwMDI2bWFjODAyMTFfaHdzaW1fb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjAtXFx0c3RydWN0IG5ldCAqbmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzAwMT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNTItLyogR2VuZXJpYyBOZXRsaW5rIG9wZXJhdGlvbnMgYXJyYXkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA1NC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDk1PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzEwMS1cXHQubW9kdWxlID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzEwMjpcXHQuc21hbGxfb3BzID0gaHdzaW1fb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxMDM6XFx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9vcHMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxMDQtXFx0LnJlc3Zfc3RhcnRfb3AgPSBIV1NJTV9DTURfUkVQT1JUX1BNU1IgKyAxLCAvLyBtYXRjaCB3aXRoIF9fSFdTSU1fQ01EX01BWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowNzozOS42OTg4MjU3NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUyNDMwMDE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0bGluayBDYWxsYmFja3MgYW5kIEtjb25maWcgZm9yIG1hYzgwMjExX2h3c2ltKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBgaHdzaW1fbmV3X3JhZGlvX25sYCBhbmQgYGh3c2ltX2RlbF9yYWRpb19ubGAuIFJpZ2h0LCB0aGV5J3JlIGRlZmluaXRlbHkgTmV0bGluayBjYWxsYmFja3MsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEl0IG1ha2VzIHNlbnNlIHRvIGZvbGQgdGhvc2UgaW50byBGb2N1c1N5bWJvbHM7IHRoYXQgc2VlbXMgbG9naWNhbC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgS2NvbmZpZyBjb25maWd1cmF0aW9uLiBUaGUgbWFpbiBzb3VyY2UgY29kZSBJJ20gbG9va2luZyBhdCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY2AuIFRoZXJlZm9yZSwgdGhlIGNvcnJlc3BvbmRpbmcgS2NvbmZpZyBmaWxlIG5lZWRzIHRvIGJlIHZlcmlmaWVkLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIG9yLCBwZXJoYXBzIG1vcmUgYnJvYWRseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gd2hlcmUgYG1hYzgwMjExX2h3c2ltYCBpcyBkZWZpbmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBidWlsZCBvcHRpb25zIGFyZSByZWxhdGVkIHRvIGl0LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTgzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjQ3LjIyMzEyODExMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI2NDU0NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA3OjQ3LjI5NTc4MTM3OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjU1MjExNzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaXJ0dWFsIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYC4gVGltZSB0byBzZWUgd2hhdCdzIGJlaW5nIGNvbmZpZ3VyZWQgZm9yIHRoZXNlIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycy4gSSdtIGV4cGVjdGluZyB0byBzZWUgYSBzdGFuZGFyZCBLY29uZmlnIHN0cnVjdHVyZSwgYnV0IEknbSBsb29raW5nIGZvciB0aGUgbnVhbmNlcy4gSSB3YW50IHRvIHNlZSB3aGF0IG9wdGlvbnMgdGhleSd2ZSBleHBvc2VkLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzZW5zZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHZpcnR1YWwgZHJpdmVycyBjYW4gYmUgbm90b3Jpb3VzbHkgdHJpY2t5IHdoZW4gZGVhbGluZyB3aXRoIGludGVyYWN0aW9ucyB3aXRoIHRoZSBoYXJkd2FyZSBkcml2ZXJzLiBJJ20gaG9waW5nIHRvIHVuZGVyc3RhbmQgaG93IHJvYnVzdGx5IHRoZSBjb25maWd1cmF0aW9uIGlzIGNyYWZ0ZWQgYW5kIHdoZXRoZXIgaXQgdGFrZXMgaW50byBjb25zaWRlcmF0aW9uIGhvdyB0aGUgdmlydHVhbCBsYXllciBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgb3IgaWYgaXQgbWFrZXMgc29tZSBhc3N1bXB0aW9ucyB0aGF0IEknbGwgbmVlZCB0byBhZGRyZXNzLiBUaGlzIG1pZ2h0IGFsc28gcHJvdmlkZSBjbHVlcyByZWdhcmRpbmcgdGhlIHRhcmdldCB1c2UgY2FzZS4gTGV0J3Mgc3RhcnQgcGFyc2luZyBhbmQgc2VlIHdoYXQgdGhlIGF1dGhvcnMgd2VyZSB0aGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowODowMy44NDc5MDEyODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gICA2OlxcdFxcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuICAgNzpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXFxuICAgODpcXHRcXHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcXG4gICA5OlxcdFxcdCAgdG8gdXNlIHRoaXMgdG9vbC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZJUlRfV0lGSVxcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxcbiAgMTk6XFx0XFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA4OjAzLjg0Nzk2ODU5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYzNTk5OTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBhbmQgYE1BQzgwMjExYCBhcmUgZXNzZW50aWFsLiBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gdGhhdCdzIGltcGxpY2l0LiBJJ20gZ29pbmcgdG8gaW5jbHVkZSBib3RoLiBOb3csIHdhaXQgYSBtaW51dGUsIHRoZSBwcm9tcHQgdGhyb3dzIGEgY3VydmViYWxsLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGBtYWM4MDIxMV9od3NpbWAuXG5cbkJ1dC4uLiBob2xkIG9uLiBJc24ndCBgbWFjODAyMTFfaHdzaW1gIGl0c2VsZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZT8gVGhlIHBocmFzZSBcImV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIiBtZWFucyBpZiBhIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuICp3aXRoKiBgbWFjODAyMTFfaHdzaW1gLCB0aGVuIGRvbid0IGJvdGhlci4gSG93ZXZlciwgdGhpcyBjb2RlIGlzICppbiogYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggKmlzKiByZWFjaGFibGUgaW4gUUVNVS4gIFNvIHRoZSBjbGF1c2UgdGhhdCAqc2VlbXMqIGxpa2UgYW4gZXhjZXB0aW9uIHRvIHRoZSBleGNlcHRpb24gZG9lcyBub3QgYXBwbHkgaGVyZS4gVGhlIGNvZGUgaXMgKnJlYWNoYWJsZSogaW4gUUVNVS4gVGh1cywgaXQgd2FycmFudHMgZnV6emluZy4gYFdvcnRoRnV6emluZ2AgaXMgYHRydWVgLlxuXG5MZXQncyBxdWlja2x5IGlkZW50aWZ5IHRoZSBuZXRsaW5rIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdC4gSSBzZWUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiBUaGVyZSdzIGFsc28gYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLCBidXQgdGhhdCdzIGNhbGxlZCBieSBgaHdzaW1fbWNhc3RfbmV3X3JhZGlvYCBhbmQgYGh3c2ltX21jYXN0X2RlbF9yYWRpb2AsIHdoaWNoIGluIHR1cm4gYXJlIGNhbGxlZCBmcm9tIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucy4gIFNvIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcmUgYGh3c2ltX25ld19yYWRpb19ubGAgYW5kIGBod3NpbV9kZWxfcmFkaW9fbmxgLiAgT25seSBgTUFDODAyMTFfSFdTSU1gIGlzIG5lY2Vzc2FyeS5cblxuQWxyaWdodCwgbGV0J3MgcmUtZXhhbWluZSB0aGUgY29kZSBjaGFuZ2UgaXRzZWxmLiBJdCdzIGEgbW9kaWZpY2F0aW9uIHRvIGBod3NpbV9tY2FzdF9jb25maWdfbXNnYC4gVGhlIGNydWNpYWwgcGFydCBpcyBob3cgbXVsdGljYXN0IG1lc3NhZ2VzIGFyZSBoYW5kbGVkIHdoZW4gYGluZm9gIGlzIE5VTEwuIFRoaXMgaGFwcGVucyBpbiBtb2R1bGUgaW5pdCBhbmQgZXhpdC4gVGhpcyBmaXggZW5zdXJlcyB0aGF0IG11bHRpY2FzdCBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSwgZXZlbiB3aGVuIG5vIG5ldGxpbmsgcmVxdWVzdCB0cmlnZ2VyZWQgdGhlaXIgY3JlYXRpb24gb3IgZGVsZXRpb24gKGUuZy4sIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24vZXhpdCBvciBhIG5ldG5zIGV4aXQpLiBUaGUgcHJpb3IgY29kZSB3YXMgc2VuZGluZyBpdCB0byB0aGUgd3JvbmcgbmFtZXNwYWNlLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGNvcnJlY3RpbmcgYSBuZXR3b3JrIG5hbWVzcGFjZSBidWcgaW4gYG1hYzgwMjExX2h3c2ltYC5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50LiBJJ2xsIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogW1wiaHdzaW1fbmV3X3JhZGlvX25sXCIsIFwiaHdzaW1fZGVsX3JhZGlvX25sXCJdYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXCJNQUM4MDIxMV9IV1NJTVwiLCBcIk1BQzgwMjExXCJdYFxuKiAgIGBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIG5ldGxpbmsgbXVsdGljYXN0IG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGNvcnJlY3QgbmV0d29yayBuYW1lc3BhY2Ugd2hlbiByYWRpb3MgYXJlIGNyZWF0ZWQgb3IgZGVsZXRlZCB3aXRob3V0IGEgbmV0bGluayByZXF1ZXN0IChlLmcuIGR1cmluZyBtb2R1bGUgaW5pdC9leGl0IG9yIG5ldG5zIGV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWFjODAyMTFfaHdzaW0sIHdoaWNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCJgXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDAwLCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0ODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMjowODoyNC40ODM5NzIyOTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc1NDU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fbmV3X3JhZGlvX25sXCIsXG4gICAgXCJod3NpbV9kZWxfcmFkaW9fbmxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBuZXRsaW5rIG11bHRpY2FzdCBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBjb3JyZWN0IG5ldHdvcmsgbmFtZXNwYWNlIHdoZW4gcmFkaW9zIGFyZSBjcmVhdGVkIG9yIGRlbGV0ZWQgd2l0aG91dCBhIG5ldGxpbmsgcmVxdWVzdCAoZS5nLiBkdXJpbmcgbW9kdWxlIGluaXQvZXhpdCBvciBuZXRucyBleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1hYzgwMjExX2h3c2ltLCB3aGljaCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExX0hXU0lNXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh3c2ltX25ld19yYWRpb19ubFwiLFxuICAgIFwiaHdzaW1fZGVsX3JhZGlvX25sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgY29ycmVjdCBuZXR3b3JrIG5hbWVzcGFjZSB3aGVuIHJhZGlvcyBhcmUgY3JlYXRlZCBvciBkZWxldGVkIHdpdGhvdXQgYSBuZXRsaW5rIHJlcXVlc3QgKGUuZy4gZHVyaW5nIG1vZHVsZSBpbml0L2V4aXQgb3IgbmV0bnMgZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtYWM4MDIxMV9od3NpbSwgd2hpY2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYxNzMzNzA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk4NDE2MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYyMjMyNjc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU5OTc4OTM3NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIG11bHRpY2FzdCBmdW5jdGlvbnMgaW4gbWFjODAyMTFfaHdzaW0gdG8gdXNlIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AgaW5zdGVhZCBvZiBgZ2VubG1zZ19tdWx0aWNhc3RgLCBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBwYXJhbWV0ZXIgdG8gY29ycmVjdGx5IHJvdXRlIG1lc3NhZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIG5hbWVzcGFjZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgYnVmZmVyIGxlbmd0aHMsIG9yIGNoYW5nZSBob3cgbWVtb3J5IGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFmYWJiNjEyN2I2NWM1YWMzNTE0OWU5OTVlOGJlNzNiYmQ2ZGI2YmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDEyOjAzOjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggNzVjYWE5N2JlY2M4ZC4uNGE2OGNhZTI1YjdkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuQEAgLTQzNzIsMTUgKzQzNzIsMTUgQEAgc3RydWN0IGh3c2ltX25ld19yYWRpb19wYXJhbXMge1xuIFx0Ym9vbCBiYWNrZ3JvdW5kX3JhZGFyO1xuIH07XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxuK3N0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2NvbmZpZ19tc2coc3RydWN0IHNrX2J1ZmYgKm1jYXN0X3NrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRcdFx0ICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRpZiAoaW5mbylcbiBcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbiBcdFx0XHQgICAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbiBcdGVsc2Vcbi1cdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbi1cdFx0XHRcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcbitcdFx0Z2VubG1zZ19tdWx0aWNhc3RfbmV0bnMoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG5ldCwgbWNhc3Rfc2tiLCAwLFxuK1x0XHRcdFx0XHRIV1NJTV9NQ0dSUF9DT05GSUcsIEdGUF9LRVJORUwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGlkLFxuQEAgLTQ0NjQsNyArNDQ2NCw4IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaWQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbitzdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgbmV0ICpuZXQsXG4rXHRcdFx0XHQgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXHRcdFx0XHQgIHN0cnVjdCBod3NpbV9uZXdfcmFkaW9fcGFyYW1zICpwYXJhbSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiO1xuQEAgLTQ0ODQsNyArNDQ4NSw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhpbnQgaWQsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gXG4gXHRnZW5sbXNnX2VuZChtY2FzdF9za2IsIGRhdGEpO1xuIFxuLVx0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIGluZm8pO1xuK1x0aHdzaW1fbWNhc3RfY29uZmlnX21zZyhtY2FzdF9za2IsIG5ldCwgaW5mbyk7XG4gXHRyZXR1cm47XG4gXG4gb3V0X2VycjpcbkBAIC02MTY1LDcgKzYxNjYsNyBAQCBzdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0aHdzaW1fcmFkaW9zX2dlbmVyYXRpb24rKztcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmh3c2ltX3JhZGlvX2xvY2spO1xuIFxuLVx0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgaW5mbywgcGFyYW0pO1xuK1x0aHdzaW1fbWNhc3RfbmV3X3JhZGlvKGlkeCwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvLCBwYXJhbSk7XG4gXG4gXHRyZXR1cm4gaWR4O1xuIFxuQEAgLTYxODMsNyArNjE4NCw3IEBAIHN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gfVxuIFxuIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbi1cdFx0XHRcdCAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbitcdFx0XHRcdCAgc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHR2b2lkICpkYXRhO1xuQEAgLTYyMDksNyArNjIxMCw3IEBAIHN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X2RlbF9yYWRpbyhpbnQgaWQsIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcbiBcdGdlbmxtc2dfZW5kKHNrYiwgZGF0YSk7XG4gXG4tXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9jb25maWdfbXNnKHNrYiwgbmV0LCBpbmZvKTtcbiBcbiBcdHJldHVybjtcbiBcbkBAIC02MjIxLDcgKzYyMjIsNyBAQCBzdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9kZWxfcmFkaW8oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXG4gXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmh3bmFtZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4tXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgaW5mbyk7XG4rXHRod3NpbV9tY2FzdF9kZWxfcmFkaW8oZGF0YS1cdTAwM2VpZHgsIGh3bmFtZSwgd2lwaHlfbmV0KGRhdGEtXHUwMDNlaHctXHUwMDNld2lwaHkpLCBpbmZvKTtcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkYXRhLVx1MDAzZWRlYnVnZnMpO1xuIFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGF0YS1cdTAwM2Vodyk7XG4gXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGF0YS1cdTAwM2VkZXYpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTI6MDg6MjQuNTYyMjMzNjA2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTc4NjEwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29yayBOYW1lc3BhY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nLiBJdCdzIHRvdWNoaW5nIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG1hYzgwMjExX2h3c2ltX21haW4uY2AgZHJpdmVyOiBzcGVjaWZpY2FsbHksIHRoZSBtdWx0aWNhc3QgY29uZmlndXJhdGlvbiwgbmV3IHJhZGlvLCBhbmQgZGVsZXRlIHJhZGlvIGZ1bmN0aW9ucyAoYGh3c2ltX21jYXN0X2NvbmZpZ19tc2dgLCBgaHdzaW1fbWNhc3RfbmV3X3JhZGlvYCwgYG1hYzgwMjExX2h3c2ltX25ld19yYWRpb2AsIGBod3NpbV9tY2FzdF9kZWxfcmFkaW9gLCBhbmQgYG1hYzgwMjExX2h3c2ltX2RlbF9yYWRpb2ApLiBUaGUgcHJpbWFyeSBtb2RpZmljYXRpb24gaGVyZSBpbnZvbHZlcyBhZGRpbmcgYSBgc3RydWN0IG5ldCAqbmV0YCBhcmd1bWVudCB0byB0aGVzZSBmdW5jdGlvbnMuIFRoaXMgaW1tZWRpYXRlbHkgc2lnbmFscyBhIHNoaWZ0IHRvd2FyZHMgbmV0d29yayBuYW1lc3BhY2UgYXdhcmVuZXNzLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGdlbmxtc2dfbXVsdGljYXN0YCB3aXRoIGBnZW5sbXNnX211bHRpY2FzdF9uZXRuc2AuIFRoaXMgY29uZmlybXMgdGhhdCB0aGUgbmV0bGluayBtdWx0aWNhc3QgbWVzc2FnZXMgYXJlIG5vdyBzY29wZWQgdG8gYSBwYXJ0aWN1bGFyIG5ldHdvcmsgbmFtZXNwYWNlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgYWRkZWQgYHN0cnVjdCBuZXQgKm5ldGAgYXJndW1lbnQuXG5cbkknbSBub3Qgc2VlaW5nIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBhZGRpdGlvbnMgb2YgbmV3IHN0cnVjdCBmaWVsZHMsIGFuZCB0aGUgbWVtb3J5IGluaXRpYWxpemF0aW9uIHNlZW1zIHVuYWZmZWN0ZWQuIFRoYXTigJlzIGdvb2QuIFRoaXMgcGF0Y2ggaXMgcHVyZWx5IGEgY2hhbmdlIGluIHRoZSByb3V0aW5nIG9mIHRoZSBuZXRsaW5rIG1lc3NhZ2UgYmFzZWQgb24gdGhlIG5ldHdvcmsgbmFtZXNwYWNlLlxuXG5HaXZlbiB0aGlzIGZvY3VzZWQgc2NvcGUsIHRoZXJlJ3Mgbm8gd2F5IEkgc2VlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG1ha2luZyBpdHMgd2F5IGludG8gY29udHJvbCBmbG93LiBJdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMganVzdCBkaXJlY3RpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBjb3JyZWN0IG5hbWVzcGFjZS4gU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5LCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEyOjA4OjMwLjU2MDA5ODI0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgbXVsdGljYXN0IGZ1bmN0aW9ucyBpbiBtYWM4MDIxMV9od3NpbSB0byB1c2UgYGdlbmxtc2dfbXVsdGljYXN0X25ldG5zYCBpbnN0ZWFkIG9mIGBnZW5sbXNnX211bHRpY2FzdGAsIGFkZGluZyBhIGBzdHJ1Y3QgbmV0ICpuZXRgIHBhcmFtZXRlciB0byBjb3JyZWN0bHkgcm91dGUgbWVzc2FnZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgbmFtZXNwYWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBidWZmZXIgbGVuZ3Rocywgb3IgY2hhbmdlIGhvdyBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow46nwl[1] Phase: Succeeded StartedAt: 2026-08-09 12:08:41 +0000 UTC FinishedAt: 2026-08-09 12:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-09 12:08:41 +0000 UTC FinishedAt: 2026-08-09 12:08:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2] Phase: Succeeded StartedAt: 2026-08-09 12:08:41 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-09 12:08:42 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-09 12:08:42 +0000 UTC FinishedAt: 2026-08-09 12:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-09 12:08:42 +0000 UTC FinishedAt: 2026-08-09 12:08:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow46nwl/series-workflow46nwl-convert-artifact-3266689473/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-09 12:08:52 +0000 UTC FinishedAt: 2026-08-09 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-09 12:08:52 +0000 UTC FinishedAt: 2026-08-09 12:24:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*80efcea5-861a-40a3-a3bc-6d289a64fbc0,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-workflow46nwl/series-workflow46nwl-convert-artifact-3266689473/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": "bf85dffb-3825-40e7-b2fd-cff5c0e95f09", "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-workflow46nwl/series-workflow46nwl-build-action-2093146095/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-09 12:08:52 +0000 UTC FinishedAt: 2026-08-09 12:24:48 +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:*80efcea5-861a-40a3-a3bc-6d289a64fbc0,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-workflow46nwl/series-workflow46nwl-convert-artifact-3266689473/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": "bf85dffb-3825-40e7-b2fd-cff5c0e95f09", "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-workflow46nwl/series-workflow46nwl-build-action-2093146095/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-09 12:24:58 +0000 UTC FinishedAt: 2026-08-09 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-09 12:24:58 +0000 UTC FinishedAt: 2026-08-09 12:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-09 12:24:58 +0000 UTC FinishedAt: 2026-08-09 12:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-09 12:24:58 +0000 UTC FinishedAt: 2026-08-09 12:25:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow46nwl/series-workflow46nwl-convert-artifact-3258486932/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-09 12:25:08 +0000 UTC FinishedAt: 2026-08-09 12:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-09 12:25:08 +0000 UTC FinishedAt: 2026-08-09 12:27:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bf85dffb-3825-40e7-b2fd-cff5c0e95f09,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-workflow46nwl/series-workflow46nwl-build-action-2093146095/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-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-09 12:27:11 +0000 UTC FinishedAt: 2026-08-09 12:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-09 12:27:11 +0000 UTC FinishedAt: 2026-08-09 12:27:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-09 12:27:11 +0000 UTC FinishedAt: 2026-08-09 12:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-09 12:27:11 +0000 UTC FinishedAt: 2026-08-09 12:43:10 +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:*80efcea5-861a-40a3-a3bc-6d289a64fbc0,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-workflow46nwl/series-workflow46nwl-convert-artifact-3258486932/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": "207f99a2-aaea-46fb-b3ca-669322a63bf7", "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-workflow46nwl/series-workflow46nwl-build-action-931199328/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-09 12:27:11 +0000 UTC FinishedAt: 2026-08-09 12:43:00 +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:*80efcea5-861a-40a3-a3bc-6d289a64fbc0,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-workflow46nwl/series-workflow46nwl-convert-artifact-3258486932/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": "207f99a2-aaea-46fb-b3ca-669322a63bf7", "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-workflow46nwl/series-workflow46nwl-build-action-931199328/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 12:43:10 +0000 UTC FinishedAt: 2026-08-09 12:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 12:43:10 +0000 UTC FinishedAt: 2026-08-09 12:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 12:43:10 +0000 UTC FinishedAt: 2026-08-09 12:45:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 12:43:10 +0000 UTC FinishedAt: 2026-08-09 12:45:00 +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:*207f99a2-aaea-46fb-b3ca-669322a63bf7,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-workflow46nwl/series-workflow46nwl-build-action-931199328/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-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"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:*bf85dffb-3825-40e7-b2fd-cff5c0e95f09,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*207f99a2-aaea-46fb-b3ca-669322a63bf7,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-workflow46nwl/series-workflow46nwl-build-action-2093146095/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-workflow46nwl/series-workflow46nwl-build-action-931199328/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 12:45:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 12:45:14 +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":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"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-workflow46nwl/series-workflow46nwl-convert-artifact-2554763197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 12:45:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 12:45:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 12:45:10 +0000 UTC FinishedAt: 2026-08-09 12:45:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 12:45:20 +0000 UTC FinishedAt: 2026-08-09 15:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46nwl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_new_radio_nl","hwsim_del_radio_nl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"06cf61899d6498b33e4b7c87d99d5bd471ccc375","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM","MAC80211"],"series_id":"b8c16aee-1d57-4ede-87eb-ca86618e4d7e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 12:45:20 +0000 UTC FinishedAt: 2026-08-09 15:50:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bf85dffb-3825-40e7-b2fd-cff5c0e95f09,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*207f99a2-aaea-46fb-b3ca-669322a63bf7,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-workflow46nwl/series-workflow46nwl-build-action-2093146095/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-workflow46nwl/series-workflow46nwl-build-action-931199328/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-workflow46nwl/series-workflow46nwl-convert-artifact-2554763197/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,}