Name: series-workflowwglgp Phase: Succeeded StartedAt: 2026-07-30 08:25:44 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[0] Phase: Succeeded StartedAt: 2026-07-30 08:25:44 +0000 UTC FinishedAt: 2026-07-30 08:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 08:25:44 +0000 UTC FinishedAt: 2026-07-30 08:53:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d326f83e819c53aa05c40d64f5805d6237b6aa1b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d326f83e819c53aa05c40d64f5805d6237b6aa1b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "09913a07-b2bb-4fec-9f2a-94c84d53e847" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_nat_keepalive_state_updated" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzN2U0MWVkNzUxZmM4OWRmMzY1OTdjMjhiNDhiODdiZGM1MjNlYTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggZWIxYjZmNjc3MzllMS4uNzE0M2M3YTExYzE4NiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTE3Myw3ICYjNDM7MTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRpZiAoIWludGVydmFsKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdHNwaW5fbG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4mIzQzO1x0ICogaGVsZCwgd2hpbGUgdGhlIHJlc3Qgb2YgeGZybSB0YWtlcyB4LVx1MDAzZWxvY2sgZmlyc3QgYW5kXG4mIzQzO1x0ICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC1cdTAwM2VcbiYjNDM7XHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4mIzQzO1x0ICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtXHUwMDNlbG9ja1xuJiM0MztcdCAqIGhlcmUgd291bGQgaW52ZXJ0IHRoYXQgb3JkZXIgYW5kIGRlYWRsb2NrLiAgQSBrZWVwYWxpdmUgaXNcbiYjNDM7XHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuJiM0MztcdCAqIHRoZSBuZXh0IHJ1bi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4mIzQzO1x0XHRuZXh0X3J1biA9IGN0eC1cdTAwM2Vub3cgJiM0MzsgMTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE5Miw2ICYjNDM7MjA0LDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbiYjNDM7b3V0OlxuIFx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM3ZTQxZWQ3NTFmYzg5ZGYzNjU5N2MyOGI0OGI4N2JkYzUyM2VhNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwODo1MTo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKaW5kZXggZWIxYjZmNjc3MzllMS4uNzE0M2M3YTExYzE4NiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTE3Myw3ICYjNDM7MTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJaWYgKCFpbnRlcnZhbCkKIAkJcmV0dXJuIDA7CiAKLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJLyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtJmd0O3hmcm0ueGZybV9zdGF0ZV9sb2NrCiYjNDM7CSAqIGhlbGQsIHdoaWxlIHRoZSByZXN0IG9mIHhmcm0gdGFrZXMgeC0mZ3Q7bG9jayBmaXJzdCBhbmQKJiM0MzsJICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC0mZ3Q7CiYjNDM7CSAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHMKJiM0MzsJICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtJmd0O2xvY2sKJiM0MzsJICogaGVyZSB3b3VsZCBpbnZlcnQgdGhhdCBvcmRlciBhbmQgZGVhZGxvY2suICBBIGtlZXBhbGl2ZSBpcwomIzQzOwkgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvbgomIzQzOwkgKiB0aGUgbmV4dCBydW4uCiYjNDM7CSAqLwomIzQzOwlpZiAoIXNwaW5fdHJ5bG9jaygmYW1wO3gtJmd0O2xvY2spKSB7CiYjNDM7CQluZXh0X3J1biA9IGN0eC0mZ3Q7bm93ICYjNDM7IDE7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTkyLDYgJiM0MzsyMDQsNyBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCiYjNDM7b3V0OgogCWlmICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFNlY3VyaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBtYWRlIGEga2V5IGNoYW5nZSBpbiB0aGUgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1bmN0aW9uLCBzd2FwcGluZyBvdXQgYHNwaW5fbG9ja2AgZm9yIGBzcGluX3RyeWxvY2tgIG9uIGB4LSZndDtsb2NrYC4gIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIGRlYWRsb2NrIGlzc3VlIHRoZXkmIzM5O3JlIGFpbWluZyB0byByZXNvbHZlLCB3aGljaCBpcyBnb29kLiAgVGhpcyBraW5kIG9mIGNoYW5nZSBpbiBsb2NraW5nIHN0cmF0ZWd5IGNhbiBiZSB0cmlja3ksIGFuZCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB0byBiZSBzdXJlIGl0JiMzOTtzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMsIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlncyB3b3VsZCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4gIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlscyBvZiB0aGF0IGZ1bmN0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvZGUuICBUaGUgZmlsZSwganVzdCB0byBiZSBzdXJlLCBpcyBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIHRoZSBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9uKioKClJpZ2h0LCB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHdoZXRoZXIgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGVsdmUgaW50byB0aGlzLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHRoZSByaWdodCBmdW5jdGlvbiB0byByZWFsbHkgZm9jdXMgb24/IEkgaGF2ZSBhIGZlZWxpbmcgaXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHN1c3BpY2lvbiBiZWZvcmUgSSB3YXN0ZSB0b28gbXVjaCB0aW1lIGNoYXNpbmcgcmVkIGhlcnJpbmdzLiBUaGlzIGlzIGFsbCBhYm91dCBwcmVjaXNpb24gYW5kIGVmZmljaWVudCB0cm91Ymxlc2hvb3RpbmcuIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGF0IGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTU4PXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjM6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2NC17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjEzPXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVx0eGZybV9zdGF0ZV93YWxrX2luaXQoXHUwMDI2d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0Olx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNS1cdHhmcm1fc3RhdGVfd2Fsa19kb25lKFx1MDAyNndhbGssIG5ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEtlZXBhbGl2ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBzZWVtcyB0byBiZSBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IHJ1bm5pbmcgYXN5bmNocm9ub3VzbHksIHdoaWNoIGlzIGEga2V5IGNvbnNpZGVyYXRpb24gd2hlbiBkZWJ1Z2dpbmcuIEkga25vdyB0aGF0IGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSB3aXRoaW4gYHhmcm1fc3RhdGVfd2Fsa2AsIHdoaWNoIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgYnkgdGhlIG1haW4gd29yayBmdW5jdGlvbi4KCk5vdywgSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiAqd2hlcmUqIHRoaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBpdHMgZXhlY3V0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjb250ZXh0IHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBhbmQgdGhlIG9yaWdpbiBvZiB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTE4PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTU3LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTU4OnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1OS1cdHRpbWU2NF90IG5leHRfcnVuO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2MzpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY0LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NTpcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjYtXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjEyLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjEzOnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMTQte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjE1Olx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjE2LVx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyMjpcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMy1cdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNDpcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUtXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LVx0aWYgKGN0eC5uZXh0X3J1bilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNzpcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cdFx0XHRcdCAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNjE9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjgtXHRuZXQgPSB4c19uZXQoeCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjk6XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3MC19XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzMte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc1LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjc4PWludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc5LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4MDpcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4MS1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5BVCBLZWVwYWxpdmUgU3RhdGUgVXBkYXRlKioKCkFscmlnaHQsIHNvIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgY2xlYXJseSB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIE5BVCBrZWVwYWxpdmUgc3RhdGUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gaXRzIHNjaGVkdWxpbmcgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIHNjaGVkdWxlZCBhbmQgd2hhdCB0aGF0IG1lYW5zIGZvciB0aW1pbmcgYW5kIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0IHNjaGVkdWxpbmcgaXMga2V5LgoKTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyAqd2hlcmUqIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgaW52b2tlZCBnaXZlcyBtZSB0aGUgY3JpdGljYWwgY29udGV4dCBJIG5lZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBldmVudHMgb3IgcHJvY2Vzc2VzIHRoYXQgdHJpZ2dlciB0aGVzZSBzdGF0ZSB1cGRhdGVzLiBXaGF0IHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGlzLCB1bmRlciB3aGF0IGNvbmRpdGlvbnM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc2hhcGUgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGltZSB0byB0cmFjayBkb3duIHRob3NlIGNhbGwgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2Nrcylcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjAtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODMyLVx0XHRuZXQtXHUwMDNleGZybS5zdGF0ZV9udW0tLTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XHRcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMz1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY3LVx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVx1MDAzZWJ5ZHN0Lm5leHQgIT0gTlVMTCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTc2ODpcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDAwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBYRlJNIERlYWRsb2NrIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgcmVsYXRlZCB0byBYRlJNIHN0YXRlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggYXJlIHByZXR0eSBmdW5kYW1lbnRhbC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIGEgZGVhZGxvY2sgd2l0aGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG5hdF9rZWVwYWxpdmVfd29ya2AuIE5vdywgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgYSBkZWxheWVkIHdvcmsgZnVuY3Rpb24sIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4gaW4gdGhlIGtlcm5lbCwgc28gdGhpcyBuZWVkcyB0byBiZSBsb29rZWQgYXQgY2xvc2VseS4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlIGFyZSBkZWZpbml0ZWx5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtgLiBIYW5nIG9uLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBzdGF0aWMuLi4gc28gaXQgd29uJiMzOTt0IGJlIGV4cG9zZWQgYXMgYSBtb2R1bGUgc3ltYm9sLiBOZXh0IEkmIzM5O2xsIGNoZWNrIGlmIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgZXhwb3J0ZWQgb3Igbm9uLXN0YXRpYy4uLiBhbmQgeWVwLCBpdCYjMzk7cyBub24tc3RhdGljLCBzbyB3ZSBjYW4gdXNlIGl0LiBJdCBsb29rcyBsaWtlIGB4ZnJtX3N0YXRlX3dhbGtgIGlzIGFsc28gaW52b2x2ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0ZXMgYXJlIGJlaW5nIGFjY2Vzc2VkLgoKQWxyaWdodCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgZG9pbmcsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHdvcmsgcXVldWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBpbnRlcmFjdGlvbiB3aXRoIGB4ZnJtX3N0YXRlX3dhbGtgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgZGVhZGxvY2sgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNTM9c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9za19maW5pKHN0cnVjdCBzb2NrX2JoX2xvY2tlZCBfX3BlcmNwdSAqc29ja3MpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjYwLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjYxOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04MTE9aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzMi1cdFx0bmV0LVx1MDAzZXhmcm0uc3RhdGVfbnVtLS07XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODMzOlx0XHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzQtXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE3MjM9c3RhdGljIHZvaWQgX194ZnJtX3N0YXRlX2luc2VydChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2Ny1cdHhmcm1faGFzaF9ncm93X2NoZWNrKG5ldCwgeC1cdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE3Njg6XHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NgoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRlJNIE5BVCBLZWVwYWxpdmUgTW9kdWxlIERlZXAgRGl2ZSoqCgpIbW0sIGludGVyZXN0aW5nLiBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIGZpbGUgYWdhaW4uIEkmIzM5O20gdHJ5aW5nIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IHNjcnV0aW55LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNrIG15c2VsZiwgYmV5b25kIHRoZSBjb3JlIGZ1bmN0aW9ucywgYXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IG90aGVyIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbnMgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBiZXlvbmQgdGhlIGV4cGVjdGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGF0dGFjayBzdXJmYWNlIGFuZCBob3cgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIFhGUk0gZnJhbWV3b3JrLiBJIHdhbnQgdG8gYnVpbGQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgZGVzaWduIGFuZCBpbnRlcmFjdGlvbiBvZiB0aGlzIE5BVCBrZWVwYWxpdmUgbW9kdWxlLiBJIG5lZWQgdG8ga25vdyB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGFuZCBwb3RlbnRpYWxseSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBzbyBJJiMzOTttIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgdG8gZ2V0IGEgZnVsbCB2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTEtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxMjpzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHNvY2tfYmhfbG9ja2VkLCBuYXRfa2VlcGFsaXZlX3NrX2lwdjQpID0ge1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTMtXHQuYmhfbG9jayA9IElOSVRfTE9DQUxfTE9DSyhiaF9sb2NrKSxcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNS0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2OnN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQsIG5hdF9rZWVwYWxpdmVfc2tfaXB2NikgPSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNy1cdC5iaF9sb2NrID0gSU5JVF9MT0NBTF9MT0NLKGJoX2xvY2spLFxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2Nrcylcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjAtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc3LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc4OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc5LXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODMtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyODQ6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4NS17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MzAzPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwNTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pKHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOQVQgS2VlcGFsaXZlIFBhdGNoKioKCk9rYXksIHNvIHRoZSBmaXggZm9yIHRoaXMgZGVhZGxvY2sgaXMgbG9jYXRlZCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1c2luZyBgc3Bpbl90cnlsb2NrKCZhbXA7eC0mZ3Q7bG9jaylgLiBTbWFydCBtb3ZlLCB1c2luZyBhIHRyeSBsb2NrIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGF2b2lkaW5nIGJsb2NraW5nIGFuZCBob3BlZnVsbHkgcHJldmVudGluZyB0aGUgZGVhZGxvY2sgYnkgaGFuZGxpbmcgY29udGVudGlvbiBncmFjZWZ1bGx5LiAgVGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtLCBiYXNlZCBvbiB0aGUgbm90ZXMsIGlzIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAsIHdoaWNoIHRoZW4gc2NoZWR1bGVzIHRoZSB3b3JrIHRvIHJ1biBhc3luY2hyb25vdXNseS4gTWFrZXMgc2Vuc2UsIGRvbiYjMzk7dCB3YW50IHRvIGJsb2NrIHRoZSBjYWxsaW5nIGNvbnRleHQuICBUbyByZXByb2R1Y2UgdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVsbCBsaWZlY3ljbGUsIEkmIzM5O2xsIG5lZWQgdG8gY3JlYXRlIGFuIFhGUk0gc3RhdGUgKndpdGgqIE5BVCBrZWVwYWxpdmUgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIHRvIHJlYWxseSBncmFzcCB0aGlzIGNoYW5nZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgd2hhdCBhY3R1YWxseSAqdHJpZ2dlcnMqIHRoYXQga2VlcGFsaXZlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgYmVpbmcgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYwOlx0XHR0aW1lNjRfdCBub3c7XG4gMTYxOlx0fTtcbiAxNjI6XHRcbiAxNjM6XHRzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIDE2NDpcdHtcbiAxNjU6XHRcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4gMTY2Olx0XHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4gMTY3Olx0XHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcbiAxNjg6XHRcdHRpbWU2NF90IG5leHRfcnVuO1xuIDE2OTpcdFx0dTMyIGludGVydmFsO1xuIDE3MDpcdFx0aW50IGRlbHRhO1xuIDE3MTpcdFxuIDE3MjpcdFx0aW50ZXJ2YWwgPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XG4gMTczOlx0XHRpZiAoIWludGVydmFsKVxuIDE3NDpcdFx0XHRyZXR1cm4gMDtcbiAxNzU6XHRcbiAxNzY6XHRcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4gMTc3Olx0XHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXHUwMDNlbG9jayBmaXJzdCBhbmRcbiAxNzg6XHRcdCAqIHhmcm1fc3RhdGVfbG9jayBzZWNvbmQgKHNlZSB4ZnJtX3RpbWVyX2hhbmRsZXIoKSAtXHUwMDNlXG4gMTc5Olx0XHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4gMTgwOlx0XHQgKiB4ZnJtX3N0YXRlX2xvY2sgYmVmb3JlIGRlbGV0aW5nIGEgc3RhdGUpLiAgQmxvY2tpbmcgb24geC1cdTAwM2Vsb2NrXG4gMTgxOlx0XHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXG4gMTgyOlx0XHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuIDE4MzpcdFx0ICogdGhlIG5leHQgcnVuLlxuIDE4NDpcdFx0ICovXG4gMTg1Olx0XHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4gMTg2Olx0XHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyAmIzQzOyAxO1xuIDE4NzpcdFx0XHRnb3RvIG91dDtcbiAxODg6XHRcdH1cbiAxODk6XHRcbiAxOTA6XHRcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIDE5MTpcdFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuIDE5MjpcdFx0XHR4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbiA9IGN0eC1cdTAwM2Vub3cgJiM0MzsgaW50ZXJ2YWwgLSBkZWx0YTtcbiAxOTM6XHRcdFx0bmV4dF9ydW4gPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcbiAxOTQ6XHRcdH0gZWxzZSBpZiAoeC1cdTAwM2VuYXRfa2VlcGFsaXZlX2V4cGlyYXRpb24gXHUwMDNlIGN0eC1cdTAwM2Vub3cpIHtcbiAxOTU6XHRcdFx0bmV4dF9ydW4gPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcbiAxOTY6XHRcdH0gZWxzZSB7XG4gMTk3Olx0XHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyAmIzQzOyBpbnRlcnZhbDtcbiAxOTg6XHRcdFx0bmF0X2tlZXBhbGl2ZV9pbml0KFx1MDAyNmthLCB4KTtcbiAxOTk6XHRcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIDIwMDpcdFx0fVxuIDIwMTpcdFxuIDIwMjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiAyMDM6XHRcbiAyMDQ6XHRcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiAyMDU6XHRcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiAyMDY6XHRcbiAyMDc6XHRvdXQ6XG4gMjA4Olx0XHRpZiAoIWN0eC1cdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcdTAwM2MgY3R4LVx1MDAzZW5leHRfcnVuKVxuIDIwOTpcdFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ4NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBNZWNoYW5pc20qKgoKT2theSwgc28gdGhlIGtlZXBhbGl2ZSBtZWNoYW5pc20gaW4gWEZSTSBpcyBkcml2ZW4gYnkgYHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWxgIC0gdGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4gVGhpcyBpbnRlcnZhbCBnZXRzIHNldCB3aGVuIGFuIFhGUk0gc3RhdGUgaXMgY3JlYXRlZCBvciBtb2RpZmllZC4gU28sIGNvbmNlcHR1YWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgZnVuY3Rpb25zIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgYW5kIGB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdGAgYXMgdGhlIGtleSBwbGF5ZXJzLCB0aGUgZmlyc3QgdXBkYXRlcyB0aGUga2VlcGFsaXZlIHN0YXRlIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBpbml0aWFsaXplci4KCkhhbmcgb24gYSBzZWNvbmQuIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIHByaW1hcnkgcG9pbnQgd2hlcmUgdGhlIGtlZXBhbGl2ZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoaXMgZmVhdHVyZS4gQWxyaWdodCwgYmVzaWRlcyB0aGUgaW5pdCBhbmQgZmluaSBmdW5jdGlvbnMgKGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXRgLCBgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0YCwgYW5kIGB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaWApLCBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGludGVyYWN0aW5nIHdpdGggdGhlIFhGUk0gc3RhdGUuIFRoYXQgb25lIG5lZWRzIHRvIGJlIGRyaWxsZWQgZG93biBtb3JlLiBBbHNvLCBgeGZybV9zdGF0ZV93YWxrYCBpcyBjYWxsZWQgYnkgYG5hdF9rZWVwYWxpdmVfd29ya2AuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kgbm93LiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLCBidXQgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGEgbW9yZSBzcGVjaWZpYyBvcHRpb24gbGlrZSBgQ09ORklHX1hGUk1fTkFUYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgc3BlY2lmaWMga2VlcGFsaXZlIGZ1bmN0aW9uYWxpdHkuIE5lZWQgdG8gY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTAzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqWEZSTSBNb2R1bGUgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX1hGUk1gLi4uIHRoYXQmIzM5O3MgYSBib29sZWFuLCBhbmQgZ2VuZXJhbGx5IEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIGxpbmtlZCB1cCB3aXRoIGBJTkVUYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGltZSB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBvbmUgbW9yZSB0aW1lLiBHb3R0YSBlbnN1cmUgSSYjMzk7bSBnZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGJ1aWxkcyByaWdodCwgeW91IGtub3cgaG93IGl0IGdvZXMuIEFsd2F5cyBnb29kIHRvIHJlZnJlc2ggdGhlIG1lbnRhbCBtYXAgYmVmb3JlIGRpdmluZyBpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBjZXJ0YWluIHRoYXQgbXkgYXJjaGl0ZWN0dXJlIGlzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbi0tXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlOjE3Olx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xubmV0L3hmcm0vTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1hGUk1fU1RBVElTVElDUykgJiM0Mzs9IHhmcm1fcHJvYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjQ1CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDUxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBYRlJNIE5BVCBLZWVwYWxpdmUgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmVkIHRoYXQgYENPTkZJR19YRlJNYCBpcyBkZWZpbml0ZWx5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEkgbWFkZSBzdXJlIHRoYXQgaXQgaXNuJiMzOTt0IHRoZSBvbmx5IGZ1bmN0aW9uOyBob3dldmVyIHRoZSBvdGhlciBmdW5jdGlvbnMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0YCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdGAsIGFuZCBgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pYCwgYXJlIG1vZHVsZSBhbmQgcGVyLW5ldCBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24sIHNvIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQuCgpJIGFsc28gc2VlIHRoYXQgYHhmcm1fc3RhdGVfd2Fsa2AgaXMgdXNlZCBieSB0aGUgd29ya3F1ZXVlLCBhbmQgd2hpbGUgaXQmIzM5O3MgZ2VuZXJpYywgdGhlIHBhdGNoIG1vZGlmaWVzIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYHhmcm1fc3RhdGVfd2Fsa2AuIEltcG9ydGFudGx5LCBiZWNhdXNlIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpcyBzdGF0aWMsIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBpdC4gSG93ZXZlciwgaWYgSSBmb2N1cyBvbiBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgLCBJIGtub3cgdGhhdCBpdCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSB3aGljaCB0aGVuIGV4ZWN1dGVzIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4KCkkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQgYENPTkZJR19YRlJNYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSBCb29sZWFuIG9wdGlvbiBzZWxlY3RlZCBieSBhIHdpZGUgdmFyaWV0eSBvZiBvdGhlciBvcHRpb25zIHJlbGF0ZWQgdG8gSVAgcHJvdG9jb2xzIGFuZCBYRlJNIGl0c2VsZiwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gZW5hYmxlLgoKVGhlcmVmb3JlLCBteSBzdHJhdGVneSBpcyBzaW1wbGUgYW5kIGRpcmVjdDogSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLCBteSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBbJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7XWAsIGFuZCBJJiMzOTtsbCBlbmFibGUgYFsmIzM0O1hGUk0mIzM0O11gLiBUaGUgYFJlYXNvbmluZ2AgZm9yIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGVhZGxvY2sgaXNzdWUgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHdpdGhpbiB0aGUgWEZSTSBzdGF0ZSB3YWxrLiBGdXp6aW5nIHRoZSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGVudHJ5IHBvaW50IGlzIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdHJpZ2dlciB0aGUgd29ya3F1ZXVlLCBhbmQgdGVzdCB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MTo1OC43MjY4NzU3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTYwMDIyNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTE6NTguNzI2ODgzNDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzkyOTI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM3ZTQxZWQ3NTFmYzg5ZGYzNjU5N2MyOGI0OGI4N2JkYzUyM2VhNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbmluZGV4IGViMWI2ZjY3NzM5ZTEuLjcxNDNjN2ExMWMxODYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbkBAIC0xNzMsNyArMTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIFxcdGlmICghaW50ZXJ2YWwpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXFxuK1xcdCAqIGhlbGQsIHdoaWxlIHRoZSByZXN0IG9mIHhmcm0gdGFrZXMgeC1cXHUwMDNlbG9jayBmaXJzdCBhbmRcXG4rXFx0ICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC1cXHUwMDNlXFxuK1xcdCAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHNcXG4rXFx0ICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtXFx1MDAzZWxvY2tcXG4rXFx0ICogaGVyZSB3b3VsZCBpbnZlcnQgdGhhdCBvcmRlciBhbmQgZGVhZGxvY2suICBBIGtlZXBhbGl2ZSBpc1xcbitcXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxcbitcXHQgKiB0aGUgbmV4dCBydW4uXFxuK1xcdCAqL1xcbitcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jaykpIHtcXG4rXFx0XFx0bmV4dF9ydW4gPSBjdHgtXFx1MDAzZW5vdyArIDE7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuIFxcbiBcXHRkZWx0YSA9IChpbnQpKGN0eC1cXHUwMDNlbm93IC0geC1cXHUwMDNlbGFzdHVzZWQpO1xcbiBcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbkBAIC0xOTIsNiArMjA0LDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4gXFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxcbiBcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gXFxuK291dDpcXG4gXFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4gXFx0XFx0Y3R4LVxcdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTE6NTkuMjM1NzYxNTYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTMwNTExMjI5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkZWFkbG9jayBpbiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAgZHVyaW5nIFhGUk0gc3RhdGUgd2Fsay4gVGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIHZpYSBhIGRlbGF5ZWQgd29ya3F1ZXVlIHNjaGVkdWxlZCBieSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgLiBGdXp6aW5nIHRoaXMgZW50cnkgcG9pbnQgd2lsbCB0cmlnZ2VyIHRoZSB3b3JrcXVldWUgYW5kIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2NraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U0MWVkNzUxZmM4OWRmMzY1OTdjMjhiNDhiODdiZGM1MjNlYTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi43MTQzYzdhMTFjMTg2IDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTczLDcgKzE3MywxOSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIFx0aWYgKCFpbnRlcnZhbClcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4rXHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXHUwMDNlbG9jayBmaXJzdCBhbmRcbitcdCAqIHhmcm1fc3RhdGVfbG9jayBzZWNvbmQgKHNlZSB4ZnJtX3RpbWVyX2hhbmRsZXIoKSAtXHUwMDNlXG4rXHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4rXHQgKiB4ZnJtX3N0YXRlX2xvY2sgYmVmb3JlIGRlbGV0aW5nIGEgc3RhdGUpLiAgQmxvY2tpbmcgb24geC1cdTAwM2Vsb2NrXG4rXHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXG4rXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuK1x0ICogdGhlIG5leHQgcnVuLlxuK1x0ICovXG4rXHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4rXHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyArIDE7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTkyLDYgKzIwNCw3IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRpZiAoc2VuZF9rZWVwYWxpdmUpXG4gXHRcdG5hdF9rZWVwYWxpdmVfc2VuZChcdTAwMjZrYSk7XG4gXG4rb3V0OlxuIFx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUxOjU5LjIzNTc2MzkxMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTMxMTYxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AuIEl0IHNlZW1zIHRoZXkndmUgbWFkZSBhIGtleSBjaGFuZ2UgaW4gdGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBmdW5jdGlvbiwgc3dhcHBpbmcgb3V0IGBzcGluX2xvY2tgIGZvciBgc3Bpbl90cnlsb2NrYCBvbiBgeC1cdTAwM2Vsb2NrYC4gIFRoYXQncyBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgZGVhZGxvY2sgaXNzdWUgdGhleSdyZSBhaW1pbmcgdG8gcmVzb2x2ZSwgd2hpY2ggaXMgZ29vZC4gIFRoaXMga2luZCBvZiBjaGFuZ2UgaW4gbG9ja2luZyBzdHJhdGVneSBjYW4gYmUgdHJpY2t5LCBhbmQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gYmUgc3VyZSBpdCdzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucywgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWdzIHdvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiAgTGV0J3MgZGlnIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLiAgVGhlIGZpbGUsIGp1c3QgdG8gYmUgc3VyZSwgaXMgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjAzLjYyODg4MjQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDU0MTQ1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9uYXRfa2VlcGFsaXZlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSArPSB4ZnJtX3Byb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjowMy44MzQzMDIyMDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc5MzcyOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgdGhlIE5BVCBLZWVwYWxpdmUgRnVuY3Rpb24qKlxuXG5SaWdodCwgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB3aGV0aGVyIGBDT05GSUdfWEZSTWAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGVsdmUgaW50byB0aGlzLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHRoZSByaWdodCBmdW5jdGlvbiB0byByZWFsbHkgZm9jdXMgb24/IEkgaGF2ZSBhIGZlZWxpbmcgaXQncyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIGJlZm9yZSBJIHdhc3RlIHRvbyBtdWNoIHRpbWUgY2hhc2luZyByZWQgaGVycmluZ3MuIFRoaXMgaXMgYWxsIGFib3V0IHByZWNpc2lvbiBhbmQgZWZmaWNpZW50IHRyb3VibGVzaG9vdGluZy4gSSdsbCBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBmdW5jdGlvbiB0byBzZWUgaWYgaXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MDYuOTEzNjc3OTQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODI4NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTE1OD1zdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTYzOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTIxMz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0OlxcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcXHUwMDI2Y3R4KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUtXFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXFx1MDAyNndhbGssIG5ldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjA3LjAwNDUxMjE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDQxNjAzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgS2VlcGFsaXZlIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBzZWVtcyB0byBiZSBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgcnVubmluZyBhc3luY2hyb25vdXNseSwgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiB3aGVuIGRlYnVnZ2luZy4gSSBrbm93IHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHdpdGhpbiBgeGZybV9zdGF0ZV93YWxrYCwgd2hpY2ggaXRzZWxmIGlzIGJlaW5nIGNhbGxlZCBieSB0aGUgbWFpbiB3b3JrIGZ1bmN0aW9uLlxuXG5Ob3csIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiAqd2hlcmUqIHRoaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBpdHMgZXhlY3V0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjb250ZXh0IHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBhbmQgdGhlIG9yaWdpbiBvZiB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjEwLjYwODY3NDM1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAwOTU2NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xMTg9c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1Ny1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNTg6c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1OS1cXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjM6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NTpcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Ni1cXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMTItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjEzOnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjE0LXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMTU6XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIxNi1cXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjEtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjIyOlxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjMtXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjQ6XFx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFxcdTAwMjZjdHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNS1cXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYtXFx0aWYgKGN0eC5uZXh0X3J1bilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjc6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cXHRcXHRcXHRcXHQgICAgICAoY3R4Lm5leHRfcnVuIC0gY3R4Lm5vdykgKiBIWik7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNjE9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2OC1cXHRuZXQgPSB4c19uZXQoeCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjY5OlxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjcwLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3Mj1pbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3My17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3NS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3OD1pbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzkte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4MDpcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODEtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjEwLjc3ODc3Nzc0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTM5NDY5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTkFUIEtlZXBhbGl2ZSBTdGF0ZSBVcGRhdGUqKlxuXG5BbHJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyB1cGRhdGVzIHRvIHRoZSBOQVQga2VlcGFsaXZlIHN0YXRlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGl0cyBzY2hlZHVsaW5nIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIHNjaGVkdWxlZCBhbmQgd2hhdCB0aGF0IG1lYW5zIGZvciB0aW1pbmcgYW5kIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0IHNjaGVkdWxpbmcgaXMga2V5LlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYsIGlzIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nICp3aGVyZSogYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBpbnZva2VkIGdpdmVzIG1lIHRoZSBjcml0aWNhbCBjb250ZXh0IEkgbmVlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50cyBvciBwcm9jZXNzZXMgdGhhdCB0cmlnZ2VyIHRoZXNlIHN0YXRlIHVwZGF0ZXMuIFdoYXQgcGFydHMgb2YgdGhlIG5ldHdvcmsgc3RhY2sgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoaXMsIHVuZGVyIHdoYXQgY29uZGl0aW9ucz8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzaGFwZSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjE1LjEzMjcyOTYxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE3NDY4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2MC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XFx0XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMz1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjctXFx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVxcdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY4OlxcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MTUuMjE0NDgzMjI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MDI1MDgyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFhGUk0gRGVhZGxvY2sgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyByZWxhdGVkIHRvIFhGUk0gc3RhdGUgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBhbmQgYF9feGZybV9zdGF0ZV9pbnNlcnRgLCB3aGljaCBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgYSBkZWFkbG9jayB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gTm93LCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBhIGRlbGF5ZWQgd29yayBmdW5jdGlvbiwgd2hpY2ggaXMgYSBjb21tb24gcGF0dGVybiBpbiB0aGUga2VybmVsLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGxvb2tlZCBhdCBjbG9zZWx5LlxuXG5UaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUgZGVmaW5pdGVseSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gSGFuZyBvbiwgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgc3RhdGljLi4uIHNvIGl0IHdvbid0IGJlIGV4cG9zZWQgYXMgYSBtb2R1bGUgc3ltYm9sLiBOZXh0IEknbGwgY2hlY2sgaWYgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBleHBvcnRlZCBvciBub24tc3RhdGljLi4uIGFuZCB5ZXAsIGl0J3Mgbm9uLXN0YXRpYywgc28gd2UgY2FuIHVzZSBpdC4gSXQgbG9va3MgbGlrZSBgeGZybV9zdGF0ZV93YWxrYCBpcyBhbHNvIGludm9sdmVkLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3RhdGVzIGFyZSBiZWluZyBhY2Nlc3NlZC5cblxuQWxyaWdodCwgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBkb2luZywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgd29yayBxdWV1ZS4gVW5kZXJzdGFuZGluZyB0aGlzIGludGVyYWN0aW9uIHdpdGggYHhmcm1fc3RhdGVfd2Fsa2Agd2lsbCBiZSBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhpcyBkZWFkbG9jayBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MjMuMDE2OTk1NzI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTAyNTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjUzPXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2tfZmluaShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQgX19wZXJjcHUgKnNvY2tzKVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjYwLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI2MTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODExPWludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzMi1cXHRcXHRuZXQtXFx1MDAzZXhmcm0uc3RhdGVfbnVtLS07XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzMzpcXHRcXHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xNzIzPXN0YXRpYyB2b2lkIF9feGZybV9zdGF0ZV9pbnNlcnQoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2Ny1cXHR4ZnJtX2hhc2hfZ3Jvd19jaGVjayhuZXQsIHgtXFx1MDAzZWJ5ZHN0Lm5leHQgIT0gTlVMTCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE3Njg6XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjoyMy4xMDYwMjY4MzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0NTE3MjUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlhGUk0gTkFUIEtlZXBhbGl2ZSBNb2R1bGUgRGVlcCBEaXZlKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIGZpbGUgYWdhaW4uIEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIG91dCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgc2NydXRpbnkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc2sgbXlzZWxmLCBiZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25zLCBhcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgd2l0aGluIHRoYXQgZmlsZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgb3RoZXIgcHVibGljbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucyBvciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGJleW9uZCB0aGUgZXhwZWN0ZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgYXR0YWNrIHN1cmZhY2UgYW5kIGhvdyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgWEZSTSBmcmFtZXdvcmsuIEkgd2FudCB0byBidWlsZCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSBkZXNpZ24gYW5kIGludGVyYWN0aW9uIG9mIHRoaXMgTkFUIGtlZXBhbGl2ZSBtb2R1bGUuIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIHNvIEknbSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHRvIGdldCBhIGZ1bGwgdmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjI4LjQ1MTIwMzMyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NzQ2NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xMS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxMjpzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHNvY2tfYmhfbG9ja2VkLCBuYXRfa2VlcGFsaXZlX3NrX2lwdjQpID0ge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTEzLVxcdC5iaF9sb2NrID0gSU5JVF9MT0NBTF9MT0NLKGJoX2xvY2spLFxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTUtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTY6c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBzb2NrX2JoX2xvY2tlZCwgbmF0X2tlZXBhbGl2ZV9za19pcHY2KSA9IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNy1cXHQuYmhfbG9jayA9IElOSVRfTE9DQUxfTE9DSyhiaF9sb2NrKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2MC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzctXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc4OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3OS17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODMtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjg0OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjg1LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTMwMz1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwNTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pKHVuc2lnbmVkIHNob3J0IGZhbWlseSlcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjoyOC41Nzc5NTU2MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI3NTc0NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkFUIEtlZXBhbGl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBmaXggZm9yIHRoaXMgZGVhZGxvY2sgaXMgbG9jYXRlZCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1c2luZyBgc3Bpbl90cnlsb2NrKFx1MDAyNngtXHUwMDNlbG9jaylgLiBTbWFydCBtb3ZlLCB1c2luZyBhIHRyeSBsb2NrIHN1Z2dlc3RzIHRoZXkncmUgYXZvaWRpbmcgYmxvY2tpbmcgYW5kIGhvcGVmdWxseSBwcmV2ZW50aW5nIHRoZSBkZWFkbG9jayBieSBoYW5kbGluZyBjb250ZW50aW9uIGdyYWNlZnVsbHkuICBUaGUgdHJpZ2dlcmluZyBtZWNoYW5pc20sIGJhc2VkIG9uIHRoZSBub3RlcywgaXMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCwgd2hpY2ggdGhlbiBzY2hlZHVsZXMgdGhlIHdvcmsgdG8gcnVuIGFzeW5jaHJvbm91c2x5LiBNYWtlcyBzZW5zZSwgZG9uJ3Qgd2FudCB0byBibG9jayB0aGUgY2FsbGluZyBjb250ZXh0LiAgVG8gcmVwcm9kdWNlIHRoaXMgYW5kIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlLCBJJ2xsIG5lZWQgdG8gY3JlYXRlIGFuIFhGUk0gc3RhdGUgKndpdGgqIE5BVCBrZWVwYWxpdmUgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIHRvIHJlYWxseSBncmFzcCB0aGlzIGNoYW5nZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgd2hhdCBhY3R1YWxseSAqdHJpZ2dlcnMqIHRoYXQga2VlcGFsaXZlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgYmVpbmcgY2hlY2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjozMy4wMDU1MzMyOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MDpcXHRcXHR0aW1lNjRfdCBub3c7XFxuIDE2MTpcXHR9O1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbiAxNjQ6XFx0e1xcbiAxNjU6XFx0XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4gMTY2OlxcdFxcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcXG4gMTY3OlxcdFxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xcbiAxNjg6XFx0XFx0dGltZTY0X3QgbmV4dF9ydW47XFxuIDE2OTpcXHRcXHR1MzIgaW50ZXJ2YWw7XFxuIDE3MDpcXHRcXHRpbnQgZGVsdGE7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdGludGVydmFsID0geC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcXG4gMTczOlxcdFxcdGlmICghaW50ZXJ2YWwpXFxuIDE3NDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0LyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXFxuIDE3NzpcXHRcXHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXFx1MDAzZWxvY2sgZmlyc3QgYW5kXFxuIDE3ODpcXHRcXHQgKiB4ZnJtX3N0YXRlX2xvY2sgc2Vjb25kIChzZWUgeGZybV90aW1lcl9oYW5kbGVyKCkgLVxcdTAwM2VcXG4gMTc5OlxcdFxcdCAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHNcXG4gMTgwOlxcdFxcdCAqIHhmcm1fc3RhdGVfbG9jayBiZWZvcmUgZGVsZXRpbmcgYSBzdGF0ZSkuICBCbG9ja2luZyBvbiB4LVxcdTAwM2Vsb2NrXFxuIDE4MTpcXHRcXHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXFxuIDE4MjpcXHRcXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxcbiAxODM6XFx0XFx0ICogdGhlIG5leHQgcnVuLlxcbiAxODQ6XFx0XFx0ICovXFxuIDE4NTpcXHRcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jaykpIHtcXG4gMTg2OlxcdFxcdFxcdG5leHRfcnVuID0gY3R4LVxcdTAwM2Vub3cgKyAxO1xcbiAxODc6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE4ODpcXHRcXHR9XFxuIDE4OTpcXHRcXG4gMTkwOlxcdFxcdGRlbHRhID0gKGludCkoY3R4LVxcdTAwM2Vub3cgLSB4LVxcdTAwM2VsYXN0dXNlZCk7XFxuIDE5MTpcXHRcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbiAxOTI6XFx0XFx0XFx0eC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9leHBpcmF0aW9uID0gY3R4LVxcdTAwM2Vub3cgKyBpbnRlcnZhbCAtIGRlbHRhO1xcbiAxOTM6XFx0XFx0XFx0bmV4dF9ydW4gPSB4LVxcdTAwM2VuYXRfa2VlcGFsaXZlX2V4cGlyYXRpb247XFxuIDE5NDpcXHRcXHR9IGVsc2UgaWYgKHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbiBcXHUwMDNlIGN0eC1cXHUwMDNlbm93KSB7XFxuIDE5NTpcXHRcXHRcXHRuZXh0X3J1biA9IHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcXG4gMTk2OlxcdFxcdH0gZWxzZSB7XFxuIDE5NzpcXHRcXHRcXHRuZXh0X3J1biA9IGN0eC1cXHUwMDNlbm93ICsgaW50ZXJ2YWw7XFxuIDE5ODpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX2luaXQoXFx1MDAyNmthLCB4KTtcXG4gMTk5OlxcdFxcdFxcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcXG4gMjAwOlxcdFxcdH1cXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbiAyMDM6XFx0XFxuIDIwNDpcXHRcXHRpZiAoc2VuZF9rZWVwYWxpdmUpXFxuIDIwNTpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0b3V0OlxcbiAyMDg6XFx0XFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4gMjA5OlxcdFxcdFxcdGN0eC1cXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MzMuMDA1Njk3MTUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTMyMjA3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIE5BVCBLZWVwYWxpdmUgTWVjaGFuaXNtKipcblxuT2theSwgc28gdGhlIGtlZXBhbGl2ZSBtZWNoYW5pc20gaW4gWEZSTSBpcyBkcml2ZW4gYnkgYHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbGAgLSB0aGF0J3MgdGhlIHRyaWdnZXIuIFRoaXMgaW50ZXJ2YWwgZ2V0cyBzZXQgd2hlbiBhbiBYRlJNIHN0YXRlIGlzIGNyZWF0ZWQgb3IgbW9kaWZpZWQuIFNvLCBjb25jZXB0dWFsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9ucyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGFuZCBgeGZybV9uYXRfa2VlcGFsaXZlX2luaXRgIGFzIHRoZSBrZXkgcGxheWVycywgdGhlIGZpcnN0IHVwZGF0ZXMgdGhlIGtlZXBhbGl2ZSBzdGF0ZSBhbmQgdGhlIGxhdHRlciBpcyB0aGUgaW5pdGlhbGl6ZXIuXG5cbkhhbmcgb24gYSBzZWNvbmQuIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIHByaW1hcnkgcG9pbnQgd2hlcmUgdGhlIGtlZXBhbGl2ZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBUaGF0J3MgdGhlIGNvcmUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBmZWF0dXJlLiBBbHJpZ2h0LCBiZXNpZGVzIHRoZSBpbml0IGFuZCBmaW5pIGZ1bmN0aW9ucyAoYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdGAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2ZpbmlgLCBgeGZybV9uYXRfa2VlcGFsaXZlX2luaXRgLCBhbmQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pYCksIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIG1haW4gZnVuY3Rpb24gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgWEZSTSBzdGF0ZS4gVGhhdCBvbmUgbmVlZHMgdG8gYmUgZHJpbGxlZCBkb3duIG1vcmUuIEFsc28sIGB4ZnJtX3N0YXRlX3dhbGtgIGlzIGNhbGxlZCBieSBgbmF0X2tlZXBhbGl2ZV93b3JrYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5IG5vdy4gSSdtIHByZXR0eSBzdXJlIGl0IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLCBidXQgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlJ3MgYSBtb3JlIHNwZWNpZmljIG9wdGlvbiBsaWtlIGBDT05GSUdfWEZSTV9OQVRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBzcGVjaWZpYyBrZWVwYWxpdmUgZnVuY3Rpb25hbGl0eS4gTmVlZCB0byBjaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDg3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MzkuMTk4OTIwNDg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ4NDU1MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjozOS4zNzM3NzIyNjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDE4MzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBNb2R1bGUgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfWEZSTWAuLi4gdGhhdCdzIGEgYm9vbGVhbiwgYW5kIGdlbmVyYWxseSBJJ2QgZXhwZWN0IGl0IHRvIGJlIGxpbmtlZCB1cCB3aXRoIGBJTkVUYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGltZSB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBvbmUgbW9yZSB0aW1lLiBHb3R0YSBlbnN1cmUgSSdtIGdldHRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgYnVpbGRzIHJpZ2h0LCB5b3Uga25vdyBob3cgaXQgZ29lcy4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCB0aGUgbWVudGFsIG1hcCBiZWZvcmUgZGl2aW5nIGluLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIGNlcnRhaW4gdGhhdCBteSBhcmNoaXRlY3R1cmUgaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1Mjo0My4yNTM5NTk0MTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODYxNDk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG4tLVxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVxcdFxcdCAgICAgIHhmcm1fc3lzY3RsLm8geGZybV9yZXBsYXkubyB4ZnJtX2RldmljZS5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNzpcXHRcXHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xcbm5ldC94ZnJtL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19YRlJNX1NUQVRJU1RJQ1MpICs9IHhmcm1fcHJvYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjQzLjUwMjU3OTU1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTM0MjM4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgWEZSTSBOQVQgS2VlcGFsaXZlIEZpeCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGRlZmluaXRlbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIGlzIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEl0J3MgY2FsbGVkIGZyb20gYm90aCBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gSSBtYWRlIHN1cmUgdGhhdCBpdCBpc24ndCB0aGUgb25seSBmdW5jdGlvbjsgaG93ZXZlciB0aGUgb3RoZXIgZnVuY3Rpb25zIGB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdGAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaWAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXRgLCBhbmQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaWAsIGFyZSBtb2R1bGUgYW5kIHBlci1uZXQgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uLCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIHRoZSBjZW50cmFsIGVudHJ5IHBvaW50LlxuXG5JIGFsc28gc2VlIHRoYXQgYHhmcm1fc3RhdGVfd2Fsa2AgaXMgdXNlZCBieSB0aGUgd29ya3F1ZXVlLCBhbmQgd2hpbGUgaXQncyBnZW5lcmljLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCB3aGljaCBpcyBhIGNhbGxiYWNrIGZvciBgeGZybV9zdGF0ZV93YWxrYC4gSW1wb3J0YW50bHksIGJlY2F1c2UgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGlzIHN0YXRpYywgSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIEhvd2V2ZXIsIGlmIEkgZm9jdXMgb24gYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCwgSSBrbm93IHRoYXQgaXQgd2lsbCB0cmlnZ2VyIHRoZSB3b3JrcXVldWUgd2hpY2ggdGhlbiBleGVjdXRlcyBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAuXG5cbkkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgQ09ORklHX1hGUk1gIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBJdCdzIGEgQm9vbGVhbiBvcHRpb24gc2VsZWN0ZWQgYnkgYSB3aWRlIHZhcmlldHkgb2Ygb3RoZXIgb3B0aW9ucyByZWxhdGVkIHRvIElQIHByb3RvY29scyBhbmQgWEZSTSBpdHNlbGYsIHNvIGl0IHNob3VsZCBiZSBlYXN5IHRvIGVuYWJsZS5cblxuVGhlcmVmb3JlLCBteSBzdHJhdGVneSBpcyBzaW1wbGUgYW5kIGRpcmVjdDogSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYFtcInhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkXCJdYCwgYW5kIEknbGwgZW5hYmxlIGBbXCJYRlJNXCJdYC4gVGhlIGBSZWFzb25pbmdgIGZvciB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRlYWRsb2NrIGlzc3VlIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCB3aXRoaW4gdGhlIFhGUk0gc3RhdGUgd2Fsay4gRnV6emluZyB0aGUgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBlbnRyeSBwb2ludCBpcyB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSwgYW5kIHRlc3QgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjQ1LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1Mjo1Mi4wOTYwMDY1MDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA4NzM5MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwglgp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 08:25:44 +0000 UTC FinishedAt: 2026-07-30 08:52:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d326f83e819c53aa05c40d64f5805d6237b6aa1b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "d326f83e819c53aa05c40d64f5805d6237b6aa1b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "09913a07-b2bb-4fec-9f2a-94c84d53e847" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_nat_keepalive_state_updated" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzN2U0MWVkNzUxZmM4OWRmMzY1OTdjMjhiNDhiODdiZGM1MjNlYTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggZWIxYjZmNjc3MzllMS4uNzE0M2M3YTExYzE4NiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTE3Myw3ICYjNDM7MTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRpZiAoIWludGVydmFsKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdHNwaW5fbG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4mIzQzO1x0ICogaGVsZCwgd2hpbGUgdGhlIHJlc3Qgb2YgeGZybSB0YWtlcyB4LVx1MDAzZWxvY2sgZmlyc3QgYW5kXG4mIzQzO1x0ICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC1cdTAwM2VcbiYjNDM7XHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4mIzQzO1x0ICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtXHUwMDNlbG9ja1xuJiM0MztcdCAqIGhlcmUgd291bGQgaW52ZXJ0IHRoYXQgb3JkZXIgYW5kIGRlYWRsb2NrLiAgQSBrZWVwYWxpdmUgaXNcbiYjNDM7XHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuJiM0MztcdCAqIHRoZSBuZXh0IHJ1bi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4mIzQzO1x0XHRuZXh0X3J1biA9IGN0eC1cdTAwM2Vub3cgJiM0MzsgMTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE5Miw2ICYjNDM7MjA0LDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbiYjNDM7b3V0OlxuIFx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM3ZTQxZWQ3NTFmYzg5ZGYzNjU5N2MyOGI0OGI4N2JkYzUyM2VhNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAwODo1MTo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKaW5kZXggZWIxYjZmNjc3MzllMS4uNzE0M2M3YTExYzE4NiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTE3Myw3ICYjNDM7MTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJaWYgKCFpbnRlcnZhbCkKIAkJcmV0dXJuIDA7CiAKLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJLyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtJmd0O3hmcm0ueGZybV9zdGF0ZV9sb2NrCiYjNDM7CSAqIGhlbGQsIHdoaWxlIHRoZSByZXN0IG9mIHhmcm0gdGFrZXMgeC0mZ3Q7bG9jayBmaXJzdCBhbmQKJiM0MzsJICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC0mZ3Q7CiYjNDM7CSAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHMKJiM0MzsJICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtJmd0O2xvY2sKJiM0MzsJICogaGVyZSB3b3VsZCBpbnZlcnQgdGhhdCBvcmRlciBhbmQgZGVhZGxvY2suICBBIGtlZXBhbGl2ZSBpcwomIzQzOwkgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvbgomIzQzOwkgKiB0aGUgbmV4dCBydW4uCiYjNDM7CSAqLwomIzQzOwlpZiAoIXNwaW5fdHJ5bG9jaygmYW1wO3gtJmd0O2xvY2spKSB7CiYjNDM7CQluZXh0X3J1biA9IGN0eC0mZ3Q7bm93ICYjNDM7IDE7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTkyLDYgJiM0MzsyMDQsNyBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCiYjNDM7b3V0OgogCWlmICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFNlY3VyaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBtYWRlIGEga2V5IGNoYW5nZSBpbiB0aGUgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1bmN0aW9uLCBzd2FwcGluZyBvdXQgYHNwaW5fbG9ja2AgZm9yIGBzcGluX3RyeWxvY2tgIG9uIGB4LSZndDtsb2NrYC4gIFRoYXQmIzM5O3MgYSBwcmV0dHkgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIGRlYWRsb2NrIGlzc3VlIHRoZXkmIzM5O3JlIGFpbWluZyB0byByZXNvbHZlLCB3aGljaCBpcyBnb29kLiAgVGhpcyBraW5kIG9mIGNoYW5nZSBpbiBsb2NraW5nIHN0cmF0ZWd5IGNhbiBiZSB0cmlja3ksIGFuZCBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB0byBiZSBzdXJlIGl0JiMzOTtzIGNvcnJlY3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMsIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlncyB3b3VsZCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4gIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGV0YWlscyBvZiB0aGF0IGZ1bmN0aW9uIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvZGUuICBUaGUgZmlsZSwganVzdCB0byBiZSBzdXJlLCBpcyBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIHRoZSBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9uKioKClJpZ2h0LCB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIHdoZXRoZXIgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGVsdmUgaW50byB0aGlzLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHRoZSByaWdodCBmdW5jdGlvbiB0byByZWFsbHkgZm9jdXMgb24/IEkgaGF2ZSBhIGZlZWxpbmcgaXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHN1c3BpY2lvbiBiZWZvcmUgSSB3YXN0ZSB0b28gbXVjaCB0aW1lIGNoYXNpbmcgcmVkIGhlcnJpbmdzLiBUaGlzIGlzIGFsbCBhYm91dCBwcmVjaXNpb24gYW5kIGVmZmljaWVudCB0cm91Ymxlc2hvb3RpbmcuIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGF0IGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTU4PXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjM6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2NC17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjEzPXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVx0eGZybV9zdGF0ZV93YWxrX2luaXQoXHUwMDI2d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0Olx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNS1cdHhmcm1fc3RhdGVfd2Fsa19kb25lKFx1MDAyNndhbGssIG5ldCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEtlZXBhbGl2ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBzZWVtcyB0byBiZSBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IHJ1bm5pbmcgYXN5bmNocm9ub3VzbHksIHdoaWNoIGlzIGEga2V5IGNvbnNpZGVyYXRpb24gd2hlbiBkZWJ1Z2dpbmcuIEkga25vdyB0aGF0IGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSB3aXRoaW4gYHhmcm1fc3RhdGVfd2Fsa2AsIHdoaWNoIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgYnkgdGhlIG1haW4gd29yayBmdW5jdGlvbi4KCk5vdywgSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiAqd2hlcmUqIHRoaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBpdHMgZXhlY3V0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjb250ZXh0IHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBhbmQgdGhlIG9yaWdpbiBvZiB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTE4PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTU3LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTU4OnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1OS1cdHRpbWU2NF90IG5leHRfcnVuO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2MzpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY0LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NTpcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjYtXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjEyLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjEzOnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMTQte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjE1Olx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjE2LVx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyMjpcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMy1cdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNDpcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUtXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LVx0aWYgKGN0eC5uZXh0X3J1bilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNzpcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cdFx0XHRcdCAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNjE9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjgtXHRuZXQgPSB4c19uZXQoeCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjk6XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3MC19XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzMte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc0Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc1LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjc4PWludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc5LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4MDpcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4MS1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIE5BVCBLZWVwYWxpdmUgU3RhdGUgVXBkYXRlKioKCkFscmlnaHQsIHNvIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgY2xlYXJseSB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIHVwZGF0ZXMgdG8gdGhlIE5BVCBrZWVwYWxpdmUgc3RhdGUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gaXRzIHNjaGVkdWxpbmcgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIHNjaGVkdWxlZCBhbmQgd2hhdCB0aGF0IG1lYW5zIGZvciB0aW1pbmcgYW5kIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0IHNjaGVkdWxpbmcgaXMga2V5LgoKTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyAqd2hlcmUqIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgaW52b2tlZCBnaXZlcyBtZSB0aGUgY3JpdGljYWwgY29udGV4dCBJIG5lZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBldmVudHMgb3IgcHJvY2Vzc2VzIHRoYXQgdHJpZ2dlciB0aGVzZSBzdGF0ZSB1cGRhdGVzLiBXaGF0IHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGlzLCB1bmRlciB3aGF0IGNvbmRpdGlvbnM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc2hhcGUgbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGltZSB0byB0cmFjayBkb3duIHRob3NlIGNhbGwgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2Nrcylcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjAtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODMyLVx0XHRuZXQtXHUwMDNleGZybS5zdGF0ZV9udW0tLTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XHRcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMz1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY3LVx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVx1MDAzZWJ5ZHN0Lm5leHQgIT0gTlVMTCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTc2ODpcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjktfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDAwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBYRlJNIERlYWRsb2NrIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQmIzM5O3MgcmVsYXRlZCB0byBYRlJNIHN0YXRlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggYXJlIHByZXR0eSBmdW5kYW1lbnRhbC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIGEgZGVhZGxvY2sgd2l0aGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG5hdF9rZWVwYWxpdmVfd29ya2AuIE5vdywgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgYSBkZWxheWVkIHdvcmsgZnVuY3Rpb24sIHdoaWNoIGlzIGEgY29tbW9uIHBhdHRlcm4gaW4gdGhlIGtlcm5lbCwgc28gdGhpcyBuZWVkcyB0byBiZSBsb29rZWQgYXQgY2xvc2VseS4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlIGFyZSBkZWZpbml0ZWx5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtgLiBIYW5nIG9uLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBzdGF0aWMuLi4gc28gaXQgd29uJiMzOTt0IGJlIGV4cG9zZWQgYXMgYSBtb2R1bGUgc3ltYm9sLiBOZXh0IEkmIzM5O2xsIGNoZWNrIGlmIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgZXhwb3J0ZWQgb3Igbm9uLXN0YXRpYy4uLiBhbmQgeWVwLCBpdCYjMzk7cyBub24tc3RhdGljLCBzbyB3ZSBjYW4gdXNlIGl0LiBJdCBsb29rcyBsaWtlIGB4ZnJtX3N0YXRlX3dhbGtgIGlzIGFsc28gaW52b2x2ZWQuIFRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzdGF0ZXMgYXJlIGJlaW5nIGFjY2Vzc2VkLgoKQWxyaWdodCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgZG9pbmcsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHdvcmsgcXVldWUuIFVuZGVyc3RhbmRpbmcgdGhpcyBpbnRlcmFjdGlvbiB3aXRoIGB4ZnJtX3N0YXRlX3dhbGtgIHdpbGwgYmUgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgZGVhZGxvY2sgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNTM9c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9za19maW5pKHN0cnVjdCBzb2NrX2JoX2xvY2tlZCBfX3BlcmNwdSAqc29ja3MpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjYwLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjYxOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04MTE9aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzMi1cdFx0bmV0LVx1MDAzZXhmcm0uc3RhdGVfbnVtLS07XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODMzOlx0XHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzQtXHRcdHNwaW5fdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE3MjM9c3RhdGljIHZvaWQgX194ZnJtX3N0YXRlX2luc2VydChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2Ny1cdHhmcm1faGFzaF9ncm93X2NoZWNrKG5ldCwgeC1cdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE3Njg6XHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NgoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipYRlJNIE5BVCBLZWVwYWxpdmUgTW9kdWxlIERlZXAgRGl2ZSoqCgpIbW0sIGludGVyZXN0aW5nLiBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIGZpbGUgYWdhaW4uIEkmIzM5O20gdHJ5aW5nIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IHNjcnV0aW55LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNrIG15c2VsZiwgYmV5b25kIHRoZSBjb3JlIGZ1bmN0aW9ucywgYXJlIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGZpbGUgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IG90aGVyIHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbnMgb3IgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBiZXlvbmQgdGhlIGV4cGVjdGVkLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGF0dGFjayBzdXJmYWNlIGFuZCBob3cgdGhpcyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIFhGUk0gZnJhbWV3b3JrLiBJIHdhbnQgdG8gYnVpbGQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgZGVzaWduIGFuZCBpbnRlcmFjdGlvbiBvZiB0aGlzIE5BVCBrZWVwYWxpdmUgbW9kdWxlLiBJIG5lZWQgdG8ga25vdyB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGFuZCBwb3RlbnRpYWxseSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBzbyBJJiMzOTttIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgdG8gZ2V0IGEgZnVsbCB2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTEtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxMjpzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHNvY2tfYmhfbG9ja2VkLCBuYXRfa2VlcGFsaXZlX3NrX2lwdjQpID0ge1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTMtXHQuYmhfbG9jayA9IElOSVRfTE9DQUxfTE9DSyhiaF9sb2NrKSxcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNS0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2OnN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQsIG5hdF9rZWVwYWxpdmVfc2tfaXB2NikgPSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNy1cdC5iaF9sb2NrID0gSU5JVF9MT0NBTF9MT0NLKGJoX2xvY2spLFxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2Nrcylcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjAtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc3LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc4OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjc5LXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODMtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyODQ6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4NS17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MzAzPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwNTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pKHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOQVQgS2VlcGFsaXZlIFBhdGNoKioKCk9rYXksIHNvIHRoZSBmaXggZm9yIHRoaXMgZGVhZGxvY2sgaXMgbG9jYXRlZCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1c2luZyBgc3Bpbl90cnlsb2NrKCZhbXA7eC0mZ3Q7bG9jaylgLiBTbWFydCBtb3ZlLCB1c2luZyBhIHRyeSBsb2NrIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGF2b2lkaW5nIGJsb2NraW5nIGFuZCBob3BlZnVsbHkgcHJldmVudGluZyB0aGUgZGVhZGxvY2sgYnkgaGFuZGxpbmcgY29udGVudGlvbiBncmFjZWZ1bGx5LiAgVGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtLCBiYXNlZCBvbiB0aGUgbm90ZXMsIGlzIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAsIHdoaWNoIHRoZW4gc2NoZWR1bGVzIHRoZSB3b3JrIHRvIHJ1biBhc3luY2hyb25vdXNseS4gTWFrZXMgc2Vuc2UsIGRvbiYjMzk7dCB3YW50IHRvIGJsb2NrIHRoZSBjYWxsaW5nIGNvbnRleHQuICBUbyByZXByb2R1Y2UgdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgZnVsbCBsaWZlY3ljbGUsIEkmIzM5O2xsIG5lZWQgdG8gY3JlYXRlIGFuIFhGUk0gc3RhdGUgKndpdGgqIE5BVCBrZWVwYWxpdmUgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIHRvIHJlYWxseSBncmFzcCB0aGlzIGNoYW5nZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgd2hhdCBhY3R1YWxseSAqdHJpZ2dlcnMqIHRoYXQga2VlcGFsaXZlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgYmVpbmcgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYwOlx0XHR0aW1lNjRfdCBub3c7XG4gMTYxOlx0fTtcbiAxNjI6XHRcbiAxNjM6XHRzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIDE2NDpcdHtcbiAxNjU6XHRcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4gMTY2Olx0XHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4gMTY3Olx0XHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcbiAxNjg6XHRcdHRpbWU2NF90IG5leHRfcnVuO1xuIDE2OTpcdFx0dTMyIGludGVydmFsO1xuIDE3MDpcdFx0aW50IGRlbHRhO1xuIDE3MTpcdFxuIDE3MjpcdFx0aW50ZXJ2YWwgPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XG4gMTczOlx0XHRpZiAoIWludGVydmFsKVxuIDE3NDpcdFx0XHRyZXR1cm4gMDtcbiAxNzU6XHRcbiAxNzY6XHRcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4gMTc3Olx0XHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXHUwMDNlbG9jayBmaXJzdCBhbmRcbiAxNzg6XHRcdCAqIHhmcm1fc3RhdGVfbG9jayBzZWNvbmQgKHNlZSB4ZnJtX3RpbWVyX2hhbmRsZXIoKSAtXHUwMDNlXG4gMTc5Olx0XHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4gMTgwOlx0XHQgKiB4ZnJtX3N0YXRlX2xvY2sgYmVmb3JlIGRlbGV0aW5nIGEgc3RhdGUpLiAgQmxvY2tpbmcgb24geC1cdTAwM2Vsb2NrXG4gMTgxOlx0XHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXG4gMTgyOlx0XHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuIDE4MzpcdFx0ICogdGhlIG5leHQgcnVuLlxuIDE4NDpcdFx0ICovXG4gMTg1Olx0XHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4gMTg2Olx0XHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyAmIzQzOyAxO1xuIDE4NzpcdFx0XHRnb3RvIG91dDtcbiAxODg6XHRcdH1cbiAxODk6XHRcbiAxOTA6XHRcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIDE5MTpcdFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuIDE5MjpcdFx0XHR4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbiA9IGN0eC1cdTAwM2Vub3cgJiM0MzsgaW50ZXJ2YWwgLSBkZWx0YTtcbiAxOTM6XHRcdFx0bmV4dF9ydW4gPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcbiAxOTQ6XHRcdH0gZWxzZSBpZiAoeC1cdTAwM2VuYXRfa2VlcGFsaXZlX2V4cGlyYXRpb24gXHUwMDNlIGN0eC1cdTAwM2Vub3cpIHtcbiAxOTU6XHRcdFx0bmV4dF9ydW4gPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcbiAxOTY6XHRcdH0gZWxzZSB7XG4gMTk3Olx0XHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyAmIzQzOyBpbnRlcnZhbDtcbiAxOTg6XHRcdFx0bmF0X2tlZXBhbGl2ZV9pbml0KFx1MDAyNmthLCB4KTtcbiAxOTk6XHRcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIDIwMDpcdFx0fVxuIDIwMTpcdFxuIDIwMjpcdFx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiAyMDM6XHRcbiAyMDQ6XHRcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiAyMDU6XHRcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiAyMDY6XHRcbiAyMDc6XHRvdXQ6XG4gMjA4Olx0XHRpZiAoIWN0eC1cdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcdTAwM2MgY3R4LVx1MDAzZW5leHRfcnVuKVxuIDIwOTpcdFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ4NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBNZWNoYW5pc20qKgoKT2theSwgc28gdGhlIGtlZXBhbGl2ZSBtZWNoYW5pc20gaW4gWEZSTSBpcyBkcml2ZW4gYnkgYHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWxgIC0gdGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4gVGhpcyBpbnRlcnZhbCBnZXRzIHNldCB3aGVuIGFuIFhGUk0gc3RhdGUgaXMgY3JlYXRlZCBvciBtb2RpZmllZC4gU28sIGNvbmNlcHR1YWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgZnVuY3Rpb25zIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgYW5kIGB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdGAgYXMgdGhlIGtleSBwbGF5ZXJzLCB0aGUgZmlyc3QgdXBkYXRlcyB0aGUga2VlcGFsaXZlIHN0YXRlIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBpbml0aWFsaXplci4KCkhhbmcgb24gYSBzZWNvbmQuIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIHByaW1hcnkgcG9pbnQgd2hlcmUgdGhlIGtlZXBhbGl2ZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JlLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoaXMgZmVhdHVyZS4gQWxyaWdodCwgYmVzaWRlcyB0aGUgaW5pdCBhbmQgZmluaSBmdW5jdGlvbnMgKGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXRgLCBgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0YCwgYW5kIGB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaWApLCBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGludGVyYWN0aW5nIHdpdGggdGhlIFhGUk0gc3RhdGUuIFRoYXQgb25lIG5lZWRzIHRvIGJlIGRyaWxsZWQgZG93biBtb3JlLiBBbHNvLCBgeGZybV9zdGF0ZV93YWxrYCBpcyBjYWxsZWQgYnkgYG5hdF9rZWVwYWxpdmVfd29ya2AuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kgbm93LiBJJiMzOTttIHByZXR0eSBzdXJlIGl0IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLCBidXQgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGEgbW9yZSBzcGVjaWZpYyBvcHRpb24gbGlrZSBgQ09ORklHX1hGUk1fTkFUYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgc3BlY2lmaWMga2VlcGFsaXZlIGZ1bmN0aW9uYWxpdHkuIE5lZWQgdG8gY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTAzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqWEZSTSBNb2R1bGUgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX1hGUk1gLi4uIHRoYXQmIzM5O3MgYSBib29sZWFuLCBhbmQgZ2VuZXJhbGx5IEkmIzM5O2QgZXhwZWN0IGl0IHRvIGJlIGxpbmtlZCB1cCB3aXRoIGBJTkVUYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGltZSB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBvbmUgbW9yZSB0aW1lLiBHb3R0YSBlbnN1cmUgSSYjMzk7bSBnZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGJ1aWxkcyByaWdodCwgeW91IGtub3cgaG93IGl0IGdvZXMuIEFsd2F5cyBnb29kIHRvIHJlZnJlc2ggdGhlIG1lbnRhbCBtYXAgYmVmb3JlIGRpdmluZyBpbi4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSBjZXJ0YWluIHRoYXQgbXkgYXJjaGl0ZWN0dXJlIGlzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwODo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbi0tXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlOjE3Olx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xubmV0L3hmcm0vTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1hGUk1fU1RBVElTVElDUykgJiM0Mzs9IHhmcm1fcHJvYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA4OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjQ1CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDUxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBYRlJNIE5BVCBLZWVwYWxpdmUgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmVkIHRoYXQgYENPTkZJR19YRlJNYCBpcyBkZWZpbml0ZWx5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEkgbWFkZSBzdXJlIHRoYXQgaXQgaXNuJiMzOTt0IHRoZSBvbmx5IGZ1bmN0aW9uOyBob3dldmVyIHRoZSBvdGhlciBmdW5jdGlvbnMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0YCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdGAsIGFuZCBgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pYCwgYXJlIG1vZHVsZSBhbmQgcGVyLW5ldCBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24sIHNvIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIGNlbnRyYWwgZW50cnkgcG9pbnQuCgpJIGFsc28gc2VlIHRoYXQgYHhmcm1fc3RhdGVfd2Fsa2AgaXMgdXNlZCBieSB0aGUgd29ya3F1ZXVlLCBhbmQgd2hpbGUgaXQmIzM5O3MgZ2VuZXJpYywgdGhlIHBhdGNoIG1vZGlmaWVzIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCwgd2hpY2ggaXMgYSBjYWxsYmFjayBmb3IgYHhmcm1fc3RhdGVfd2Fsa2AuIEltcG9ydGFudGx5LCBiZWNhdXNlIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpcyBzdGF0aWMsIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBpdC4gSG93ZXZlciwgaWYgSSBmb2N1cyBvbiBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgLCBJIGtub3cgdGhhdCBpdCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSB3aGljaCB0aGVuIGV4ZWN1dGVzIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4KCkkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIHRoYXQgYENPTkZJR19YRlJNYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4gSXQmIzM5O3MgYSBCb29sZWFuIG9wdGlvbiBzZWxlY3RlZCBieSBhIHdpZGUgdmFyaWV0eSBvZiBvdGhlciBvcHRpb25zIHJlbGF0ZWQgdG8gSVAgcHJvdG9jb2xzIGFuZCBYRlJNIGl0c2VsZiwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gZW5hYmxlLgoKVGhlcmVmb3JlLCBteSBzdHJhdGVneSBpcyBzaW1wbGUgYW5kIGRpcmVjdDogSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLCBteSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBbJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7XWAsIGFuZCBJJiMzOTtsbCBlbmFibGUgYFsmIzM0O1hGUk0mIzM0O11gLiBUaGUgYFJlYXNvbmluZ2AgZm9yIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgZGVhZGxvY2sgaXNzdWUgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHdpdGhpbiB0aGUgWEZSTSBzdGF0ZSB3YWxrLiBGdXp6aW5nIHRoZSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGVudHJ5IHBvaW50IGlzIHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gdHJpZ2dlciB0aGUgd29ya3F1ZXVlLCBhbmQgdGVzdCB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDg6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MTo1OC43MjY4NzU3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTYwMDIyNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTE6NTguNzI2ODgzNDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzkyOTI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM3ZTQxZWQ3NTFmYzg5ZGYzNjU5N2MyOGI0OGI4N2JkYzUyM2VhNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbmluZGV4IGViMWI2ZjY3NzM5ZTEuLjcxNDNjN2ExMWMxODYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbkBAIC0xNzMsNyArMTczLDE5IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIFxcdGlmICghaW50ZXJ2YWwpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFx0LyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXFxuK1xcdCAqIGhlbGQsIHdoaWxlIHRoZSByZXN0IG9mIHhmcm0gdGFrZXMgeC1cXHUwMDNlbG9jayBmaXJzdCBhbmRcXG4rXFx0ICogeGZybV9zdGF0ZV9sb2NrIHNlY29uZCAoc2VlIHhmcm1fdGltZXJfaGFuZGxlcigpIC1cXHUwMDNlXFxuK1xcdCAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHNcXG4rXFx0ICogeGZybV9zdGF0ZV9sb2NrIGJlZm9yZSBkZWxldGluZyBhIHN0YXRlKS4gIEJsb2NraW5nIG9uIHgtXFx1MDAzZWxvY2tcXG4rXFx0ICogaGVyZSB3b3VsZCBpbnZlcnQgdGhhdCBvcmRlciBhbmQgZGVhZGxvY2suICBBIGtlZXBhbGl2ZSBpc1xcbitcXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxcbitcXHQgKiB0aGUgbmV4dCBydW4uXFxuK1xcdCAqL1xcbitcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jaykpIHtcXG4rXFx0XFx0bmV4dF9ydW4gPSBjdHgtXFx1MDAzZW5vdyArIDE7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuIFxcbiBcXHRkZWx0YSA9IChpbnQpKGN0eC1cXHUwMDNlbm93IC0geC1cXHUwMDNlbGFzdHVzZWQpO1xcbiBcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbkBAIC0xOTIsNiArMjA0LDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4gXFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxcbiBcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gXFxuK291dDpcXG4gXFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4gXFx0XFx0Y3R4LVxcdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTE6NTkuMjM1NzYxNTYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTMwNTExMjI5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkZWFkbG9jayBpbiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAgZHVyaW5nIFhGUk0gc3RhdGUgd2Fsay4gVGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIHZpYSBhIGRlbGF5ZWQgd29ya3F1ZXVlIHNjaGVkdWxlZCBieSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgLiBGdXp6aW5nIHRoaXMgZW50cnkgcG9pbnQgd2lsbCB0cmlnZ2VyIHRoZSB3b3JrcXVldWUgYW5kIGV4ZXJjaXNlIHRoZSBtb2RpZmllZCBsb2NraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U0MWVkNzUxZmM4OWRmMzY1OTdjMjhiNDhiODdiZGM1MjNlYTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDg6NTE6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi43MTQzYzdhMTFjMTg2IDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTczLDcgKzE3MywxOSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIFx0aWYgKCFpbnRlcnZhbClcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcdC8qIFRoaXMgcnVucyBmcm9tIHhmcm1fc3RhdGVfd2FsaygpIHdpdGggbmV0LVx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXG4rXHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXHUwMDNlbG9jayBmaXJzdCBhbmRcbitcdCAqIHhmcm1fc3RhdGVfbG9jayBzZWNvbmQgKHNlZSB4ZnJtX3RpbWVyX2hhbmRsZXIoKSAtXHUwMDNlXG4rXHQgKiBfX3hmcm1fc3RhdGVfZGVsZXRlKCksIGFuZCB4ZnJtX3N0YXRlX2ZsdXNoKCksIHdoaWNoIGRyb3BzXG4rXHQgKiB4ZnJtX3N0YXRlX2xvY2sgYmVmb3JlIGRlbGV0aW5nIGEgc3RhdGUpLiAgQmxvY2tpbmcgb24geC1cdTAwM2Vsb2NrXG4rXHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXG4rXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxuK1x0ICogdGhlIG5leHQgcnVuLlxuK1x0ICovXG4rXHRpZiAoIXNwaW5fdHJ5bG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spKSB7XG4rXHRcdG5leHRfcnVuID0gY3R4LVx1MDAzZW5vdyArIDE7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTkyLDYgKzIwNCw3IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRpZiAoc2VuZF9rZWVwYWxpdmUpXG4gXHRcdG5hdF9rZWVwYWxpdmVfc2VuZChcdTAwMjZrYSk7XG4gXG4rb3V0OlxuIFx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUxOjU5LjIzNTc2MzkxMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTMxMTYxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AuIEl0IHNlZW1zIHRoZXkndmUgbWFkZSBhIGtleSBjaGFuZ2UgaW4gdGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBmdW5jdGlvbiwgc3dhcHBpbmcgb3V0IGBzcGluX2xvY2tgIGZvciBgc3Bpbl90cnlsb2NrYCBvbiBgeC1cdTAwM2Vsb2NrYC4gIFRoYXQncyBhIHByZXR0eSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgZGVhZGxvY2sgaXNzdWUgdGhleSdyZSBhaW1pbmcgdG8gcmVzb2x2ZSwgd2hpY2ggaXMgZ29vZC4gIFRoaXMga2luZCBvZiBjaGFuZ2UgaW4gbG9ja2luZyBzdHJhdGVneSBjYW4gYmUgdHJpY2t5LCBhbmQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gYmUgc3VyZSBpdCdzIGNvcnJlY3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucywgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWdzIHdvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiAgTGV0J3MgZGlnIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLiAgVGhlIGZpbGUsIGp1c3QgdG8gYmUgc3VyZSwgaXMgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjAzLjYyODg4MjQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDU0MTQ1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9uYXRfa2VlcGFsaXZlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSArPSB4ZnJtX3Byb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjowMy44MzQzMDIyMDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc5MzcyOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgdGhlIE5BVCBLZWVwYWxpdmUgRnVuY3Rpb24qKlxuXG5SaWdodCwgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiB3aGV0aGVyIGBDT05GSUdfWEZSTWAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGVsdmUgaW50byB0aGlzLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogaXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHRoZSByaWdodCBmdW5jdGlvbiB0byByZWFsbHkgZm9jdXMgb24/IEkgaGF2ZSBhIGZlZWxpbmcgaXQncyB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIGJlZm9yZSBJIHdhc3RlIHRvbyBtdWNoIHRpbWUgY2hhc2luZyByZWQgaGVycmluZ3MuIFRoaXMgaXMgYWxsIGFib3V0IHByZWNpc2lvbiBhbmQgZWZmaWNpZW50IHRyb3VibGVzaG9vdGluZy4gSSdsbCBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBmdW5jdGlvbiB0byBzZWUgaWYgaXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MDYuOTEzNjc3OTQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODI4NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTE1OD1zdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTYzOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTIxMz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0OlxcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcXHUwMDI2Y3R4KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUtXFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXFx1MDAyNndhbGssIG5ldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjA3LjAwNDUxMjE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDQxNjAzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgS2VlcGFsaXZlIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGV4ZWN1dGlvbiBmbG93LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBzZWVtcyB0byBiZSBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgcnVubmluZyBhc3luY2hyb25vdXNseSwgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiB3aGVuIGRlYnVnZ2luZy4gSSBrbm93IHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHdpdGhpbiBgeGZybV9zdGF0ZV93YWxrYCwgd2hpY2ggaXRzZWxmIGlzIGJlaW5nIGNhbGxlZCBieSB0aGUgbWFpbiB3b3JrIGZ1bmN0aW9uLlxuXG5Ob3csIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiAqd2hlcmUqIHRoaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AgZnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQgYW5kIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBpdHMgZXhlY3V0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjb250ZXh0IHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgcHVycG9zZSBhbmQgdGhlIG9yaWdpbiBvZiB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjEwLjYwODY3NDM1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAwOTU2NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xMTg9c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1Ny1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNTg6c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1OS1cXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjM6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NTpcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Ni1cXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMTItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjEzOnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjE0LXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMTU6XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIxNi1cXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjEtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjIyOlxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjMtXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjQ6XFx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFxcdTAwMjZjdHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNS1cXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYtXFx0aWYgKGN0eC5uZXh0X3J1bilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjc6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cXHRcXHRcXHRcXHQgICAgICAoY3R4Lm5leHRfcnVuIC0gY3R4Lm5vdykgKiBIWik7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yNjE9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2OC1cXHRuZXQgPSB4c19uZXQoeCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjY5OlxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjcwLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3Mj1pbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3My17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3NS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3OD1pbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzkte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4MDpcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODEtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjEwLjc3ODc3Nzc0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTM5NDY5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTkFUIEtlZXBhbGl2ZSBTdGF0ZSBVcGRhdGUqKlxuXG5BbHJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIGNsZWFybHkgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyB1cGRhdGVzIHRvIHRoZSBOQVQga2VlcGFsaXZlIHN0YXRlLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGl0cyBzY2hlZHVsaW5nIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIHNjaGVkdWxlZCBhbmQgd2hhdCB0aGF0IG1lYW5zIGZvciB0aW1pbmcgYW5kIHN5bmNocm9uaXphdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0IHNjaGVkdWxpbmcgaXMga2V5LlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYsIGlzIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nICp3aGVyZSogYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBpbnZva2VkIGdpdmVzIG1lIHRoZSBjcml0aWNhbCBjb250ZXh0IEkgbmVlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50cyBvciBwcm9jZXNzZXMgdGhhdCB0cmlnZ2VyIHRoZXNlIHN0YXRlIHVwZGF0ZXMuIFdoYXQgcGFydHMgb2YgdGhlIG5ldHdvcmsgc3RhY2sgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoaXMsIHVuZGVyIHdoYXQgY29uZGl0aW9ucz8gS25vd2luZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBzaGFwZSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjE1LjEzMjcyOTYxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE3NDY4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2MC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XFx0XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMz1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjctXFx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVxcdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY4OlxcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY5LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MTUuMjE0NDgzMjI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4MDI1MDgyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFhGUk0gRGVhZGxvY2sgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQncyByZWxhdGVkIHRvIFhGUk0gc3RhdGUgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBhbmQgYF9feGZybV9zdGF0ZV9pbnNlcnRgLCB3aGljaCBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgYSBkZWFkbG9jayB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gTm93LCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBhIGRlbGF5ZWQgd29yayBmdW5jdGlvbiwgd2hpY2ggaXMgYSBjb21tb24gcGF0dGVybiBpbiB0aGUga2VybmVsLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGxvb2tlZCBhdCBjbG9zZWx5LlxuXG5UaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUgZGVmaW5pdGVseSBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gSGFuZyBvbiwgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgc3RhdGljLi4uIHNvIGl0IHdvbid0IGJlIGV4cG9zZWQgYXMgYSBtb2R1bGUgc3ltYm9sLiBOZXh0IEknbGwgY2hlY2sgaWYgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBleHBvcnRlZCBvciBub24tc3RhdGljLi4uIGFuZCB5ZXAsIGl0J3Mgbm9uLXN0YXRpYywgc28gd2UgY2FuIHVzZSBpdC4gSXQgbG9va3MgbGlrZSBgeGZybV9zdGF0ZV93YWxrYCBpcyBhbHNvIGludm9sdmVkLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3RhdGVzIGFyZSBiZWluZyBhY2Nlc3NlZC5cblxuQWxyaWdodCwgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBpcyBkb2luZywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgd29yayBxdWV1ZS4gVW5kZXJzdGFuZGluZyB0aGlzIGludGVyYWN0aW9uIHdpdGggYHhmcm1fc3RhdGVfd2Fsa2Agd2lsbCBiZSBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhpcyBkZWFkbG9jayBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MjMuMDE2OTk1NzI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTAyNTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjUzPXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2tfZmluaShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQgX19wZXJjcHUgKnNvY2tzKVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjYwLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI2MTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2Mi17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODExPWludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzMi1cXHRcXHRuZXQtXFx1MDAzZXhmcm0uc3RhdGVfbnVtLS07XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzMzpcXHRcXHR4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZCh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xNzIzPXN0YXRpYyB2b2lkIF9feGZybV9zdGF0ZV9pbnNlcnQoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2Ny1cXHR4ZnJtX2hhc2hfZ3Jvd19jaGVjayhuZXQsIHgtXFx1MDAzZWJ5ZHN0Lm5leHQgIT0gTlVMTCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE3Njg6XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjoyMy4xMDYwMjY4MzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0NTE3MjUwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlhGUk0gTkFUIEtlZXBhbGl2ZSBNb2R1bGUgRGVlcCBEaXZlKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgIGZpbGUgYWdhaW4uIEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIG91dCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgc2NydXRpbnkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc2sgbXlzZWxmLCBiZXlvbmQgdGhlIGNvcmUgZnVuY3Rpb25zLCBhcmUgdGhlcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgd2l0aGluIHRoYXQgZmlsZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgb3RoZXIgcHVibGljbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucyBvciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGJleW9uZCB0aGUgZXhwZWN0ZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgYXR0YWNrIHN1cmZhY2UgYW5kIGhvdyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgWEZSTSBmcmFtZXdvcmsuIEkgd2FudCB0byBidWlsZCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSBkZXNpZ24gYW5kIGludGVyYWN0aW9uIG9mIHRoaXMgTkFUIGtlZXBhbGl2ZSBtb2R1bGUuIEkgbmVlZCB0byBrbm93IHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHBvdGVudGlhbGx5IGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIHNvIEknbSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHRvIGdldCBhIGZ1bGwgdmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjI4LjQ1MTIwMzMyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NzQ2NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xMS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxMjpzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHNvY2tfYmhfbG9ja2VkLCBuYXRfa2VlcGFsaXZlX3NrX2lwdjQpID0ge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTEzLVxcdC5iaF9sb2NrID0gSU5JVF9MT0NBTF9MT0NLKGJoX2xvY2spLFxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTUtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTY6c3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBzb2NrX2JoX2xvY2tlZCwgbmF0X2tlZXBhbGl2ZV9za19pcHY2KSA9IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNy1cXHQuYmhfbG9jayA9IElOSVRfTE9DQUxfTE9DSyhiaF9sb2NrKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI1Mz1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI2MC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNjE6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNjIte1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MjcyPWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNzctXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjc4OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI3OS17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODMtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjg0OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjg1LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTMwMz1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwNTp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pKHVuc2lnbmVkIHNob3J0IGZhbWlseSlcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjoyOC41Nzc5NTU2MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI3NTc0NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkFUIEtlZXBhbGl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBmaXggZm9yIHRoaXMgZGVhZGxvY2sgaXMgbG9jYXRlZCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1c2luZyBgc3Bpbl90cnlsb2NrKFx1MDAyNngtXHUwMDNlbG9jaylgLiBTbWFydCBtb3ZlLCB1c2luZyBhIHRyeSBsb2NrIHN1Z2dlc3RzIHRoZXkncmUgYXZvaWRpbmcgYmxvY2tpbmcgYW5kIGhvcGVmdWxseSBwcmV2ZW50aW5nIHRoZSBkZWFkbG9jayBieSBoYW5kbGluZyBjb250ZW50aW9uIGdyYWNlZnVsbHkuICBUaGUgdHJpZ2dlcmluZyBtZWNoYW5pc20sIGJhc2VkIG9uIHRoZSBub3RlcywgaXMgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCwgd2hpY2ggdGhlbiBzY2hlZHVsZXMgdGhlIHdvcmsgdG8gcnVuIGFzeW5jaHJvbm91c2x5LiBNYWtlcyBzZW5zZSwgZG9uJ3Qgd2FudCB0byBibG9jayB0aGUgY2FsbGluZyBjb250ZXh0LiAgVG8gcmVwcm9kdWNlIHRoaXMgYW5kIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlLCBJJ2xsIG5lZWQgdG8gY3JlYXRlIGFuIFhGUk0gc3RhdGUgKndpdGgqIE5BVCBrZWVwYWxpdmUgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIHRvIHJlYWxseSBncmFzcCB0aGlzIGNoYW5nZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBpdHNlbGYuIEkgbmVlZCB0byBzZWUgd2hhdCBhY3R1YWxseSAqdHJpZ2dlcnMqIHRoYXQga2VlcGFsaXZlIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgYmVpbmcgY2hlY2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjozMy4wMDU1MzMyOTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MDpcXHRcXHR0aW1lNjRfdCBub3c7XFxuIDE2MTpcXHR9O1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbiAxNjQ6XFx0e1xcbiAxNjU6XFx0XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4gMTY2OlxcdFxcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcXG4gMTY3OlxcdFxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xcbiAxNjg6XFx0XFx0dGltZTY0X3QgbmV4dF9ydW47XFxuIDE2OTpcXHRcXHR1MzIgaW50ZXJ2YWw7XFxuIDE3MDpcXHRcXHRpbnQgZGVsdGE7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdGludGVydmFsID0geC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcXG4gMTczOlxcdFxcdGlmICghaW50ZXJ2YWwpXFxuIDE3NDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0LyogVGhpcyBydW5zIGZyb20geGZybV9zdGF0ZV93YWxrKCkgd2l0aCBuZXQtXFx1MDAzZXhmcm0ueGZybV9zdGF0ZV9sb2NrXFxuIDE3NzpcXHRcXHQgKiBoZWxkLCB3aGlsZSB0aGUgcmVzdCBvZiB4ZnJtIHRha2VzIHgtXFx1MDAzZWxvY2sgZmlyc3QgYW5kXFxuIDE3ODpcXHRcXHQgKiB4ZnJtX3N0YXRlX2xvY2sgc2Vjb25kIChzZWUgeGZybV90aW1lcl9oYW5kbGVyKCkgLVxcdTAwM2VcXG4gMTc5OlxcdFxcdCAqIF9feGZybV9zdGF0ZV9kZWxldGUoKSwgYW5kIHhmcm1fc3RhdGVfZmx1c2goKSwgd2hpY2ggZHJvcHNcXG4gMTgwOlxcdFxcdCAqIHhmcm1fc3RhdGVfbG9jayBiZWZvcmUgZGVsZXRpbmcgYSBzdGF0ZSkuICBCbG9ja2luZyBvbiB4LVxcdTAwM2Vsb2NrXFxuIDE4MTpcXHRcXHQgKiBoZXJlIHdvdWxkIGludmVydCB0aGF0IG9yZGVyIGFuZCBkZWFkbG9jay4gIEEga2VlcGFsaXZlIGlzXFxuIDE4MjpcXHRcXHQgKiBob3VzZWtlZXBpbmcsIHNvIGlmIHRoZSBzdGF0ZSBpcyBidXN5IGp1c3QgbG9vayBhdCBpdCBhZ2FpbiBvblxcbiAxODM6XFx0XFx0ICogdGhlIG5leHQgcnVuLlxcbiAxODQ6XFx0XFx0ICovXFxuIDE4NTpcXHRcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jaykpIHtcXG4gMTg2OlxcdFxcdFxcdG5leHRfcnVuID0gY3R4LVxcdTAwM2Vub3cgKyAxO1xcbiAxODc6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE4ODpcXHRcXHR9XFxuIDE4OTpcXHRcXG4gMTkwOlxcdFxcdGRlbHRhID0gKGludCkoY3R4LVxcdTAwM2Vub3cgLSB4LVxcdTAwM2VsYXN0dXNlZCk7XFxuIDE5MTpcXHRcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbiAxOTI6XFx0XFx0XFx0eC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9leHBpcmF0aW9uID0gY3R4LVxcdTAwM2Vub3cgKyBpbnRlcnZhbCAtIGRlbHRhO1xcbiAxOTM6XFx0XFx0XFx0bmV4dF9ydW4gPSB4LVxcdTAwM2VuYXRfa2VlcGFsaXZlX2V4cGlyYXRpb247XFxuIDE5NDpcXHRcXHR9IGVsc2UgaWYgKHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbiBcXHUwMDNlIGN0eC1cXHUwMDNlbm93KSB7XFxuIDE5NTpcXHRcXHRcXHRuZXh0X3J1biA9IHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfZXhwaXJhdGlvbjtcXG4gMTk2OlxcdFxcdH0gZWxzZSB7XFxuIDE5NzpcXHRcXHRcXHRuZXh0X3J1biA9IGN0eC1cXHUwMDNlbm93ICsgaW50ZXJ2YWw7XFxuIDE5ODpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX2luaXQoXFx1MDAyNmthLCB4KTtcXG4gMTk5OlxcdFxcdFxcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcXG4gMjAwOlxcdFxcdH1cXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbiAyMDM6XFx0XFxuIDIwNDpcXHRcXHRpZiAoc2VuZF9rZWVwYWxpdmUpXFxuIDIwNTpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0b3V0OlxcbiAyMDg6XFx0XFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4gMjA5OlxcdFxcdFxcdGN0eC1cXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MzMuMDA1Njk3MTUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTMyMjA3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIE5BVCBLZWVwYWxpdmUgTWVjaGFuaXNtKipcblxuT2theSwgc28gdGhlIGtlZXBhbGl2ZSBtZWNoYW5pc20gaW4gWEZSTSBpcyBkcml2ZW4gYnkgYHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbGAgLSB0aGF0J3MgdGhlIHRyaWdnZXIuIFRoaXMgaW50ZXJ2YWwgZ2V0cyBzZXQgd2hlbiBhbiBYRlJNIHN0YXRlIGlzIGNyZWF0ZWQgb3IgbW9kaWZpZWQuIFNvLCBjb25jZXB0dWFsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9ucyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGFuZCBgeGZybV9uYXRfa2VlcGFsaXZlX2luaXRgIGFzIHRoZSBrZXkgcGxheWVycywgdGhlIGZpcnN0IHVwZGF0ZXMgdGhlIGtlZXBhbGl2ZSBzdGF0ZSBhbmQgdGhlIGxhdHRlciBpcyB0aGUgaW5pdGlhbGl6ZXIuXG5cbkhhbmcgb24gYSBzZWNvbmQuIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIHByaW1hcnkgcG9pbnQgd2hlcmUgdGhlIGtlZXBhbGl2ZSB3b3JrIGdldHMgc2NoZWR1bGVkLiBUaGF0J3MgdGhlIGNvcmUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBmZWF0dXJlLiBBbHJpZ2h0LCBiZXNpZGVzIHRoZSBpbml0IGFuZCBmaW5pIGZ1bmN0aW9ucyAoYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdGAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2ZpbmlgLCBgeGZybV9uYXRfa2VlcGFsaXZlX2luaXRgLCBhbmQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9maW5pYCksIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAgaXMgdGhlIG1haW4gZnVuY3Rpb24gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgWEZSTSBzdGF0ZS4gVGhhdCBvbmUgbmVlZHMgdG8gYmUgZHJpbGxlZCBkb3duIG1vcmUuIEFsc28sIGB4ZnJtX3N0YXRlX3dhbGtgIGlzIGNhbGxlZCBieSBgbmF0X2tlZXBhbGl2ZV93b3JrYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBkZXBlbmRlbmN5IG5vdy4gSSdtIHByZXR0eSBzdXJlIGl0IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLCBidXQgSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlJ3MgYSBtb3JlIHNwZWNpZmljIG9wdGlvbiBsaWtlIGBDT05GSUdfWEZSTV9OQVRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBzcGVjaWZpYyBrZWVwYWxpdmUgZnVuY3Rpb25hbGl0eS4gTmVlZCB0byBjaGVjayB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDg3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDg6NTI6MzkuMTk4OTIwNDg3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ4NDU1MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1MjozOS4zNzM3NzIyNjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDE4MzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBNb2R1bGUgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfWEZSTWAuLi4gdGhhdCdzIGEgYm9vbGVhbiwgYW5kIGdlbmVyYWxseSBJJ2QgZXhwZWN0IGl0IHRvIGJlIGxpbmtlZCB1cCB3aXRoIGBJTkVUYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGltZSB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbnMgYXJlIHNvbGlkLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBvbmUgbW9yZSB0aW1lLiBHb3R0YSBlbnN1cmUgSSdtIGdldHRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgYnVpbGRzIHJpZ2h0LCB5b3Uga25vdyBob3cgaXQgZ29lcy4gQWx3YXlzIGdvb2QgdG8gcmVmcmVzaCB0aGUgbWVudGFsIG1hcCBiZWZvcmUgZGl2aW5nIGluLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIGNlcnRhaW4gdGhhdCBteSBhcmNoaXRlY3R1cmUgaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1Mjo0My4yNTM5NTk0MTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODYxNDk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG4tLVxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVxcdFxcdCAgICAgIHhmcm1fc3lzY3RsLm8geGZybV9yZXBsYXkubyB4ZnJtX2RldmljZS5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNzpcXHRcXHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xcbm5ldC94ZnJtL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19YRlJNX1NUQVRJU1RJQ1MpICs9IHhmcm1fcHJvYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA4OjUyOjQzLjUwMjU3OTU1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTM0MjM4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgWEZSTSBOQVQgS2VlcGFsaXZlIEZpeCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGRldGVybWluZWQgdGhhdCBgQ09ORklHX1hGUk1gIGlzIGRlZmluaXRlbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIGlzIGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEl0J3MgY2FsbGVkIGZyb20gYm90aCBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfaW5zZXJ0YCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gSSBtYWRlIHN1cmUgdGhhdCBpdCBpc24ndCB0aGUgb25seSBmdW5jdGlvbjsgaG93ZXZlciB0aGUgb3RoZXIgZnVuY3Rpb25zIGB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdGAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaWAsIGB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXRgLCBhbmQgYHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaWAsIGFyZSBtb2R1bGUgYW5kIHBlci1uZXQgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uLCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRgIGlzIHRoZSBjZW50cmFsIGVudHJ5IHBvaW50LlxuXG5JIGFsc28gc2VlIHRoYXQgYHhmcm1fc3RhdGVfd2Fsa2AgaXMgdXNlZCBieSB0aGUgd29ya3F1ZXVlLCBhbmQgd2hpbGUgaXQncyBnZW5lcmljLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCB3aGljaCBpcyBhIGNhbGxiYWNrIGZvciBgeGZybV9zdGF0ZV93YWxrYC4gSW1wb3J0YW50bHksIGJlY2F1c2UgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGlzIHN0YXRpYywgSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIEhvd2V2ZXIsIGlmIEkgZm9jdXMgb24gYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCwgSSBrbm93IHRoYXQgaXQgd2lsbCB0cmlnZ2VyIHRoZSB3b3JrcXVldWUgd2hpY2ggdGhlbiBleGVjdXRlcyBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAuXG5cbkkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgQ09ORklHX1hGUk1gIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBJdCdzIGEgQm9vbGVhbiBvcHRpb24gc2VsZWN0ZWQgYnkgYSB3aWRlIHZhcmlldHkgb2Ygb3RoZXIgb3B0aW9ucyByZWxhdGVkIHRvIElQIHByb3RvY29scyBhbmQgWEZSTSBpdHNlbGYsIHNvIGl0IHNob3VsZCBiZSBlYXN5IHRvIGVuYWJsZS5cblxuVGhlcmVmb3JlLCBteSBzdHJhdGVneSBpcyBzaW1wbGUgYW5kIGRpcmVjdDogSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIG15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYFtcInhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkXCJdYCwgYW5kIEknbGwgZW5hYmxlIGBbXCJYRlJNXCJdYC4gVGhlIGBSZWFzb25pbmdgIGZvciB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRlYWRsb2NrIGlzc3VlIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCB3aXRoaW4gdGhlIFhGUk0gc3RhdGUgd2Fsay4gRnV6emluZyB0aGUgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYCBlbnRyeSBwb2ludCBpcyB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSwgYW5kIHRlc3QgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjQ1LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwODo1Mjo1Mi4wOTYwMDY1MDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA4NzM5MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGVhZGxvY2sgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGR1cmluZyBYRlJNIHN0YXRlIHdhbGsuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCB2aWEgYSBkZWxheWVkIHdvcmtxdWV1ZSBzY2hlZHVsZWQgYnkgYHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkYC4gRnV6emluZyB0aGlzIGVudHJ5IHBvaW50IHdpbGwgdHJpZ2dlciB0aGUgd29ya3F1ZXVlIGFuZCBleGVyY2lzZSB0aGUgbW9kaWZpZWQgbG9ja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRlYWRsb2NrIGluIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCBkdXJpbmcgWEZSTSBzdGF0ZSB3YWxrLiBUaGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgdmlhIGEgZGVsYXllZCB3b3JrcXVldWUgc2NoZWR1bGVkIGJ5IGB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZGAuIEZ1enppbmcgdGhpcyBlbnRyeSBwb2ludCB3aWxsIHRyaWdnZXIgdGhlIHdvcmtxdWV1ZSBhbmQgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGxvY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwglgp[1] Phase: Succeeded StartedAt: 2026-07-30 08:53:04 +0000 UTC FinishedAt: 2026-07-30 08:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 08:53:04 +0000 UTC FinishedAt: 2026-07-30 08:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2] Phase: Succeeded StartedAt: 2026-07-30 08:53:04 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 08:53:06 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 08:53:06 +0000 UTC FinishedAt: 2026-07-30 08:53:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 08:53:06 +0000 UTC FinishedAt: 2026-07-30 08:53:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwglgp/series-workflowwglgp-convert-artifact-131888344/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 08:53:47 +0000 UTC FinishedAt: 2026-07-30 09:16:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 08:53:47 +0000 UTC FinishedAt: 2026-07-30 09:16:41 +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:*bc827300-2bac-409f-99a7-9c93dd99f4a8,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-workflowwglgp/series-workflowwglgp-convert-artifact-131888344/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": "aec618ec-d510-466e-9a0d-c5d9ba3c15e5", "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-workflowwglgp/series-workflowwglgp-build-action-3351842062/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 08:53:47 +0000 UTC FinishedAt: 2026-07-30 09:16:30 +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:*bc827300-2bac-409f-99a7-9c93dd99f4a8,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-workflowwglgp/series-workflowwglgp-convert-artifact-131888344/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": "aec618ec-d510-466e-9a0d-c5d9ba3c15e5", "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-workflowwglgp/series-workflowwglgp-build-action-3351842062/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 09:16:41 +0000 UTC FinishedAt: 2026-07-30 09:16:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 09:16:41 +0000 UTC FinishedAt: 2026-07-30 09:16:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 09:16:41 +0000 UTC FinishedAt: 2026-07-30 09:17:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 09:16:41 +0000 UTC FinishedAt: 2026-07-30 09:17:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwglgp/series-workflowwglgp-convert-artifact-1172297535/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 09:17:21 +0000 UTC FinishedAt: 2026-07-30 09:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 09:17:21 +0000 UTC FinishedAt: 2026-07-30 09:19:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aec618ec-d510-466e-9a0d-c5d9ba3c15e5,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-workflowwglgp/series-workflowwglgp-build-action-3351842062/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-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 09:19:19 +0000 UTC FinishedAt: 2026-07-30 09:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 09:19:19 +0000 UTC FinishedAt: 2026-07-30 09:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 09:19:19 +0000 UTC FinishedAt: 2026-07-30 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 09:19:19 +0000 UTC FinishedAt: 2026-07-30 09:44:47 +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:*bc827300-2bac-409f-99a7-9c93dd99f4a8,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-workflowwglgp/series-workflowwglgp-convert-artifact-1172297535/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": "83ff7c0d-0934-45df-b378-2cd69e8da761", "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-workflowwglgp/series-workflowwglgp-build-action-2027281235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 09:19:19 +0000 UTC FinishedAt: 2026-07-30 09:44:37 +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:*bc827300-2bac-409f-99a7-9c93dd99f4a8,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-workflowwglgp/series-workflowwglgp-convert-artifact-1172297535/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": "83ff7c0d-0934-45df-b378-2cd69e8da761", "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-workflowwglgp/series-workflowwglgp-build-action-2027281235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 09:44:47 +0000 UTC FinishedAt: 2026-07-30 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 09:44:47 +0000 UTC FinishedAt: 2026-07-30 09:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 09:44:47 +0000 UTC FinishedAt: 2026-07-30 09:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 09:44:47 +0000 UTC FinishedAt: 2026-07-30 09:46:31 +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:*83ff7c0d-0934-45df-b378-2cd69e8da761,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-workflowwglgp/series-workflowwglgp-build-action-2027281235/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-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +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":["xfrm_nat_keepalive_state_updated"],"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:*aec618ec-d510-466e-9a0d-c5d9ba3c15e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*83ff7c0d-0934-45df-b378-2cd69e8da761,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-workflowwglgp/series-workflowwglgp-build-action-3351842062/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-workflowwglgp/series-workflowwglgp-build-action-2027281235/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 09:46:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 09:46:46 +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":["xfrm_nat_keepalive_state_updated"],"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-workflowwglgp/series-workflowwglgp-convert-artifact-1692242392/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 09:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 09:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 09:46:41 +0000 UTC FinishedAt: 2026-07-30 09:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 09:46:51 +0000 UTC FinishedAt: 2026-07-30 12:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwglgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_nat_keepalive_state_updated"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d326f83e819c53aa05c40d64f5805d6237b6aa1b","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"09913a07-b2bb-4fec-9f2a-94c84d53e847","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 09:46:51 +0000 UTC FinishedAt: 2026-07-30 12:50:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aec618ec-d510-466e-9a0d-c5d9ba3c15e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*83ff7c0d-0934-45df-b378-2cd69e8da761,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-workflowwglgp/series-workflowwglgp-build-action-3351842062/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-workflowwglgp/series-workflowwglgp-build-action-2027281235/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-workflowwglgp/series-workflowwglgp-convert-artifact-1692242392/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,}