Name: series-workflowthrnj Phase: Succeeded StartedAt: 2026-08-05 11:02:01 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[0] Phase: Succeeded StartedAt: 2026-08-05 11:02:01 +0000 UTC FinishedAt: 2026-08-05 11:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 11:02:01 +0000 UTC FinishedAt: 2026-08-05 11:21:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_CT", "NET_CLS_ACT", "NF_CONNTRACK", "NF_FLOW_TABLE", "NF_TABLES", "NETFILTER_INGRESS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_CT", "NET_CLS_ACT", "NF_CONNTRACK", "NF_FLOW_TABLE", "NF_TABLES", "NETFILTER_INGRESS" ], "series_id": "7f67d449-69c9-4891-b033-8688fcf719a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_ct_act" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9BQ1RfQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9JTkdSRVNTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2N0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBza2IgbWVtb3J5IGxlYWsgaW4gdGhlIGBhY3RfY3RgIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gd2hlbiBwYWNrZXQgZGVmcmFnbWVudGF0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZy90YyBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBjb25maWd1cmluZyB0YyBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMmVmYzljMjA2NGYxNDIzMWY1MTYwMjk5Y2ExMGRiOTNkYWFhMmI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxMToyMDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2N0LmMgYi9uZXQvc2NoZWQvYWN0X2N0LmNcbmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2N0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfY3QuY1xuQEAgLTg0MCw4ICYjNDM7ODQwLDE1IEBAIHN0YXRpYyBpbnQgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCAqZnJhZylcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7LyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxuJiM0MzsgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0XG4mIzQzOyAqIGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGRlZnJhZ21lbnRhdGlvbiBlbmdpbmU7IG9uY2UgbmZfY3RfaGFuZGxlX1xuJiM0MzsgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xuJiM0MzsgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuXG4mIzQzOyAqL1xuIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdFx0ICAgdTggZmFtaWx5LCB1MTYgem9uZSwgYm9vbCAqZGVmcmFnKVxuJiM0MztcdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZyxcbiYjNDM7XHRcdFx0XHQgICBib29sICpza2JfaXNfb3VycylcbiB7XG4gXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiBcdHN0cnVjdCB0Y19za2JfY2IgY2I7XG5AQCAtODU5LDggJiM0Mzs4NjYsMTIgQEAgc3RhdGljIGludCB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGVyciA9IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHNrYiwgXHUwMDI2ZnJhZyk7XG4gXHRlbHNlXG4gXHRcdGVyciA9IHRjZl9jdF9pcHY2X2lzX2ZyYWdtZW50KHNrYiwgXHUwMDI2ZnJhZyk7XG4tXHRpZiAoZXJyIHx8ICFmcmFnKVxuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdCpza2JfaXNfb3VycyA9IHRydWU7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcdGlmICghZnJhZylcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0Y2IgPSAqdGNfc2tiX2NiKHNrYik7XG4gXHRlcnIgPSBuZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCB6b25lLCBmYW1pbHksIFx1MDAyNnByb3RvLCBcdTAwMjZjYi5tcnUpO1xuQEAgLTk3Nyw2ICYjNDM7OTg4LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbiBcdGludCBuaF9vZnMsIGVyciwgcmV0dmFsO1xuIFx0c3RydWN0IHRjZl9jdF9wYXJhbXMgKnA7XG4gXHRib29sIGFkZF9oZWxwZXIgPSBmYWxzZTtcbiYjNDM7XHRib29sIHNrYl9pc19vdXJzID0gZmFsc2U7XG4gXHRib29sIHNraXBfYWRkID0gZmFsc2U7XG4gXHRib29sIGRlZnJhZyA9IGZhbHNlO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuQEAgLTEwMTIsOSAmIzQzOzEwMjQsMTggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbiBcdCAqL1xuIFx0bmhfb2ZzID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4gXHRza2JfcHVsbF9yY3N1bShza2IsIG5oX29mcyk7XG4tXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVx1MDAzZXpvbmUsIFx1MDAyNmRlZnJhZyk7XG4tXHRpZiAoZXJyKVxuJiM0MztcdGVyciA9IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCBmYW1pbHksIHAtXHUwMDNlem9uZSwgXHUwMDI2ZGVmcmFnLFxuJiM0MztcdFx0XHRcdCAgICAgIFx1MDAyNnNrYl9pc19vdXJzKTtcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHQvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkXG4mIzQzO1x0XHQgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrXG4mIzQzO1x0XHQgKiBpdCwgc2luY2Ugbm8gY2FsbGVyIGZyZWVzIGFuIHNrYiBpdCB3YXMgdG9sZCBpdCBubyBsb25nZXJcbiYjNDM7XHRcdCAqIG93bnMuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChza2JfaXNfb3VycylcbiYjNDM7XHRcdFx0Z290byBkcm9wO1xuIFx0XHRnb3RvIG91dF9mcmFnO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpO1xuIFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0FDVF9DVCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfY3RfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyZWZjOWMyMDY0ZjE0MjMxZjUxNjAyOTljYTEwZGI5M2RhYWEyYjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDExOjIwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9jdC5jIGIvbmV0L3NjaGVkL2FjdF9jdC5jCmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2N0LmMKQEAgLTg0MCw4ICYjNDM7ODQwLDE1IEBAIHN0YXRpYyBpbnQgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCAqZnJhZykKIAlyZXR1cm4gMDsKIH0KIAomIzQzOy8qIE9uIGVycm9yLCB0ZWxscyB0aGUgY2FsbGVyIHdoZXRoZXIgaXQgc3RpbGwgb3ducyBAc2tiIGFuZCBtdXN0IGZyZWUgaXQKJiM0MzsgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0CiYjNDM7ICogYmVmb3JlIGl0IGlzIGhhbmRlZCB0byB0aGUgZGVmcmFnbWVudGF0aW9uIGVuZ2luZTsgb25jZSBuZl9jdF9oYW5kbGVfCiYjNDM7ICogZnJhZ21lbnRzKCkgaGFzIGJlZW4gY2FsbGVkIHRoZSBza2IgaXMgZWl0aGVyIHF1ZXVlZCAoLUVJTlBST0dSRVNTKSBvciBoYXMKJiM0MzsgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuCiYjNDM7ICovCiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCQkgICB1OCBmYW1pbHksIHUxNiB6b25lLCBib29sICpkZWZyYWcpCiYjNDM7CQkJCSAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZywKJiM0MzsJCQkJICAgYm9vbCAqc2tiX2lzX291cnMpCiB7CiAJZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87CiAJc3RydWN0IHRjX3NrYl9jYiBjYjsKQEAgLTg1OSw4ICYjNDM7ODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQllcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsICZhbXA7ZnJhZyk7CiAJZWxzZQogCQllcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsICZhbXA7ZnJhZyk7Ci0JaWYgKGVyciB8fCAhZnJhZykKJiM0MzsJaWYgKGVycikgewomIzQzOwkJKnNrYl9pc19vdXJzID0gdHJ1ZTsKIAkJcmV0dXJuIGVycjsKJiM0MzsJfQomIzQzOwlpZiAoIWZyYWcpCiYjNDM7CQlyZXR1cm4gMDsKIAogCWNiID0gKnRjX3NrYl9jYihza2IpOwogCWVyciA9IG5mX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIHpvbmUsIGZhbWlseSwgJmFtcDtwcm90bywgJmFtcDtjYi5tcnUpOwpAQCAtOTc3LDYgJiM0Mzs5ODgsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCWludCBuaF9vZnMsIGVyciwgcmV0dmFsOwogCXN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwOwogCWJvb2wgYWRkX2hlbHBlciA9IGZhbHNlOwomIzQzOwlib29sIHNrYl9pc19vdXJzID0gZmFsc2U7CiAJYm9vbCBza2lwX2FkZCA9IGZhbHNlOwogCWJvb2wgZGVmcmFnID0gZmFsc2U7CiAJc3RydWN0IG5mX2Nvbm4gKmN0OwpAQCAtMTAxMiw5ICYjNDM7MTAyNCwxOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCSAqLwogCW5oX29mcyA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgbmhfb2ZzKTsKLQllcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLSZndDt6b25lLCAmYW1wO2RlZnJhZyk7Ci0JaWYgKGVycikKJiM0MzsJZXJyID0gdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIGZhbWlseSwgcC0mZ3Q7em9uZSwgJmFtcDtkZWZyYWcsCiYjNDM7CQkJCSAgICAgICZhbXA7c2tiX2lzX291cnMpOwomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQkvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkCiYjNDM7CQkgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrCiYjNDM7CQkgKiBpdCwgc2luY2Ugbm8gY2FsbGVyIGZyZWVzIGFuIHNrYiBpdCB3YXMgdG9sZCBpdCBubyBsb25nZXIKJiM0MzsJCSAqIG93bnMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChza2JfaXNfb3VycykKJiM0MzsJCQlnb3RvIGRyb3A7CiAJCWdvdG8gb3V0X2ZyYWc7CiYjNDM7CX0KIAogCWVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpOwogCWlmIChlcnIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyAoY3QpIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIG1vZGlmeWluZyBgbmV0L3NjaGVkL2FjdF9jdC5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTt2ZSB0d2Vha2VkIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AgdG8gdGVsbCB1cyB3aGV0aGVyIHRoZSBTS0IgKFNvY2tldCBCdWZmZXIpIGlzIHN0aWxsIG93bmVkIGJ5IHRoZSBjYWxsZXIgd2hlbiBhbiBlcnJvciBoYXBwZW5zLiAgVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggdG8gZXJyb3IgaGFuZGxpbmcsIGdlbmVyYWxseS4gSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gdGhhdCBgc2tiX2lzX291cnNgIGZsYWcgbm93LgoKVGhlIG1haW4gY2hhbmdlIGFwcGVhcnMgdG8gYmUgaG93IHRoZSBjb2RlIGhhbmRsZXMgZXJyb3JzIHdpdGhpbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLiBJZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0gYW5kIHRoZSBTS0IgaXMgc3RpbGwgb3VycyBhZnRlciBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLCBgdGNmX2N0X2FjdGAgaXMgbm93IGp1bXBpbmcgdG8gYGRyb3BgIGluc3RlYWQgb2YgYG91dF9mcmFnYC4gIEFoLCByaWdodC4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayBpZiB0aG9zZSBlYXJseSBmcmFnbWVudCBjaGVja3MgaW4gc29tZXRoaW5nIGxpa2UgYHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50YCBvciBgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnRgIGZhaWwuIFRoaXMgbWFrZXMgc2Vuc2U7IGlmIHRoZSBmcmFnbWVudCBoYW5kbGluZyBmYWlscywgd2UgbmVlZCB0byBlbnN1cmUgdGhlIFNLQiBpcyBwcm9wZXJseSByZWxlYXNlZC4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMuIEkmIzM5O2xsIG9wZW4gdXAgYG5ldC9zY2hlZC9hY3RfY3QuY2AgYW5kIGRpZyBpbi4gQWgsIHllcywgYHRjZl9jdF9hY3RgIGlzIHRoZSB0b3AtbGV2ZWwgYWN0aW9uIGZ1bmN0aW9uIGZvciB0aGUgY29ubnRyYWNrIFRDIGFjdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSB2aWEgYHRjYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4KCk5vdywgbGV0IG1lIGZpbmQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBmb3IgYGFjdF9jdC5jYCBhbmQgc2VlIGlmIHRoaXMgbmV3IGJlaGF2aW9yIGlzIGNvbmRpdGlvbmFsIG9yIGFsd2F5cyBlbmFibGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGEgZGVmYXVsdCBmaXggb3IgaWYgdGhlcmUgYXJlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIG5ldyBsb2dpYyBpcyBkaXNhYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RfY3RcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9MzE9b2JqLSQoQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWSkmIzQzOz0gYWN0X3R1bm5lbF9rZXkub1xubmV0L3NjaGVkL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19ORVRfQUNUX0NUKVx0JiM0Mzs9IGFjdF9jdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gSSBzZWUgdGhpcyBgQ09ORklHX05FVF9BQ1RfQ1RgIGZsYWcgbWVudGlvbmVkLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGlzIGFuZCB3aHkgaXQmIzM5O3MgY29taW5nIHVwLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBzbyBJJiMzOTtsbCBkaXZlIGludG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb3IgZXhwbGFuYXRpb25zIGZvciBgTkVUX0FDVF9DVGAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQUNUX0NUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy04NjQtXG5uZXQvc2NoZWQvS2NvbmZpZzo4NjU6Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTkxNi1cbm5ldC9zY2hlZC9LY29uZmlnOjkxNzpjb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE5FVFxfQUNUXF9DVCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJJiMzOTttIGVzc2VudGlhbGx5IGRpdmluZyBpbnRvIGEgc3BlY2lmaWMgZWxlbWVudCwgYE5FVF9BQ1RfQ1RgLiBUaGUgbGFuZ3VhZ2UgaW1wbGllcyB0aGlzIGlzIGEgY29kZSBhcnRpZmFjdCwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIHBlcmhhcHMgYSBtb2R1bGUgbmFtZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgY3JpdGljYWwgbmV4dCBzdGVwOiAqKkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuKiogSXQmIzM5O3MgdGhlIGNvcmUgcHJpbmNpcGxlLCBlc3BlY2lhbGx5IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIG5ldHdvcmtzLiAKCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxheWVycyBpbnZvbHZlZC4gV2hhdCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gYE5FVF9BQ1RfQ1RgPyBXaGF0IGRvZXMgKml0KiByZWx5IG9uPyBJcyBpdCBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgdGhlIHN5c3RlbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgbGlicmFyeSBjYWxsLCBhIGNvbXBsZXggc2V0IG9mIGludGVyYWN0aW9ucyB3aXRoaW4gYW4gaW5mcmFzdHJ1Y3R1cmUsIG9yIHNvbWV0aGluZyBpbi1iZXR3ZWVuPyBGcm9tIGEgZGVzaWduIHBlcnNwZWN0aXZlLCBteSBjb25jZXJuIGlzIGFib3V0ICoqaW1wYWN0IGFuYWx5c2lzKiouIEEgY2hhbmdlIGhlcmUgY2FuIGNhc2NhZGUgb3V0d2FyZHMgaW4gdW5leHBlY3RlZCB3YXlzLCBzbyBJIG5lZWQgdG8gZm9ybSBhIHJvYnVzdCBtZW50YWwgbWFwLgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSB0b29scyBhbmQgbWV0aG9kcyBJJiMzOTtsbCB1c2UgdG8gdW5jb3ZlciB0aGVzZSBkZXBlbmRlbmNpZXMuIEFtIEkgcmVhY2hpbmcgZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wsIGdyZXBwaW5nIHRocm91Z2ggc291cmNlIGNvZGUsIG9yIHJlbHlpbmcgb24gZG9jdW1lbnRhdGlvbj8gRG9lcyB0aGUgYnVpbGQgc3lzdGVtIHByb3ZpZGUgZGVwZW5kZW5jeSBncmFwaHMsIG9yIHdpbGwgSSBuZWVkIHRvIG1hbnVhbGx5IHRyYWNlIHRoaW5ncz8gTXkgZ29hbCBpcyB0byBidWlsZCBhIGRldGFpbGVkIGFuZCBhY2N1cmF0ZSBwaWN0dXJlLCBhIG5ldHdvcmsgb2YgcmVsYXRpb25zaGlwcywgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTE3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MTc6XHRjb25maWcgTkVUX0FDVF9DVFxuIDkxODpcdFx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbiA5MTk6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxuIDkyMDpcdFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbiA5MjE6XHRcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxuIDkyMjpcdFx0aGVscFxuIDkyMzpcdFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHNlbmRpbmcgdGhlIHBhY2tldHMgdG8gY29ubnRyYWNrIG1vZHVsZS5cbiA5MjQ6XHRcbiA5MjU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA5MjY6XHRcbiA5Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDkyODpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0LlxuIDkyOTpcdFxuIDkzMDpcdGNvbmZpZyBORVRfQUNUX0dBVEVcbiA5MzE6XHRcdHRyaXN0YXRlIFwmIzM0O0ZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblwmIzM0O1xuIDkzMjpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDkzMzpcdFx0aGVscFxuIDkzNDpcdFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhlIGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNzZWQgYXRcbiA5MzU6XHRcdCAgc3BlY2lmaWMgdGltZSBzbG90IGFuZCBiZSBkcm9wcGVkIGF0IG90aGVyIHNwZWNpZmljIHRpbWUgc2xvdCBieVxuIDkzNjpcdFx0ICB0aGUgZ2F0ZSBlbnRyeSBsaXN0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgZm9yIE9wdGltYWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZGVwZW5kZW5jaWVzOiBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQsIGJ1dCB0aGlzIGAoIU5GX05BVCB8fCBORl9OQVQpYCBjb25kaXRpb24gaXMgaW50ZXJlc3RpbmcuIEJhc2ljYWxseSwgaXQgYnVpbGRzIHJlZ2FyZGxlc3Mgb2YgYE5GX05BVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIEhvd2V2ZXIsIGlmIGBORl9OQVRgICppcyogYSBtb2R1bGUsIHRoZW4gSSAqYWxzbyogbmVlZCBgTkVUX0FDVF9DVGAgYXMgYSBtb2R1bGUuIEkgbmVlZCB0byBrZWVwIHRoYXQgcmVsYXRpb25zaGlwIGluIG1pbmQgd2hlbiBJIHN0YXJ0IHRyeWluZyB0byBvcHRpbWl6ZSB0aGluZ3MuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNvIGxldCBtZSBkaXZlIGEgbGl0dGxlIGRlZXBlciBhbmQgY2hlY2sgb3V0IGB0Y2ZfY3RfYWN0YCBhbmQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYC4gU2luY2UgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCBpcyBzdGF0aWMsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQmIzM5O3MgaW5saW5lZC4gQnV0IGB0Y2ZfY3RfYWN0YCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpcywgd2hpY2ggd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGZvciBwcm9maWxpbmcgb3IgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5OiB3aGF0IGFib3V0IGB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudGAgYW5kIGB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudGA/IEp1c3QgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gaXMgaGFuZGxpbmcgZnJhZ21lbnRhdGlvbiBwcm9wZXJseSwgSSBzaG91bGQgY2hlY2sgdGhvc2UgYXMgd2VsbC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9jdF9pcHY0X2lzX2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9jdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfY3QuYz03OTE9c3RhdGljIHU4IHRjZl9jdF9za2JfbmZfZmFtaWx5KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTgwOC1cbm5ldC9zY2hlZC9hY3RfY3QuYzo4MDk6c3RhdGljIGludCB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sICpmcmFnKVxubmV0L3NjaGVkL2FjdF9jdC5jLTgxMC17XG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jPTg0OT1zdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtODY1LVx0aWYgKGZhbWlseSA9PSBORlBST1RPX0lQVjQpXG5uZXQvc2NoZWQvYWN0X2N0LmM6ODY2Olx0XHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xubmV0L3NjaGVkL2FjdF9jdC5jLTg2Ny1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29ubmVjdGlvbiBUcmFja2luZyBBY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBzdGFydGluZyBhdCBgdGNmX2N0X2FjdGAsIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgYWN0aW9ucyB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuIExldCBtZSBxdWlja2x5IGpvZyBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgdGhhdCBhcmUgbGlrZWx5IGludm9sdmVkIGhlcmUuIFJpZ2h0LCBJIG5lZWQgdG8gY29uc2lkZXIgYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cy4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGhvdyB0aGlzIGB0Y2ZfY3RfYWN0YCBmdW5jdGlvbiBpcyBtYWRlIGF2YWlsYWJsZS4gSXMgaXQgZXhwb3J0ZWQgZm9yIG1vZHVsZSB1c2UsIG9yIGlzIGl0IGNvbXBpbGVkIHN0YXRpY2FsbHkgaW50byB0aGUgY29yZT8gVW5kZXJzdGFuZGluZyBpdHMgdmlzaWJpbGl0eSB3aWxsIGluZm9ybSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCBhbmQgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9jdF9hY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9jdC5jPTkwOD1zdGF0aWMgdm9pZCB0Y2ZfY3RfcGFyYW1zX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTE1LVxubmV0L3NjaGVkL2FjdF9jdC5jOjkxNjpzdGF0aWMgdm9pZCB0Y2ZfY3RfYWN0X3NldF9tYXJrKHN0cnVjdCBuZl9jb25uICpjdCwgdTMyIG1hcmssIHUzMiBtYXNrKVxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNy17XG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTkzMi1cbm5ldC9zY2hlZC9hY3RfY3QuYzo5MzM6c3RhdGljIHZvaWQgdGNmX2N0X2FjdF9zZXRfbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9zY2hlZC9hY3RfY3QuYy05MzQtXHRcdFx0XHQgIHUzMiAqbGFiZWxzLFxuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYy05NDYtXG5uZXQvc2NoZWQvYWN0X2N0LmM6OTQ3OnN0YXRpYyBpbnQgdGNmX2N0X2FjdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zY2hlZC9hY3RfY3QuYy05NDgtXHRcdFx0ICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTk3OC1cbm5ldC9zY2hlZC9hY3RfY3QuYzo5Nzk6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbm5ldC9zY2hlZC9hY3RfY3QuYy05ODAtXHRcdFx0XHQgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTA3Ny1cbm5ldC9zY2hlZC9hY3RfY3QuYzoxMDc4Olx0ZXJyID0gdGNmX2N0X2FjdF9uYXQoc2tiLCBjdCwgY3RpbmZvLCBwLVx1MDAzZWN0X2FjdGlvbiwgXHUwMDI2cC1cdTAwM2VyYW5nZSwgY29tbWl0KTtcbm5ldC9zY2hlZC9hY3RfY3QuYy0xMDc5LVx0aWYgKGVyciAhPSBORl9BQ0NFUFQpXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTEwOTktXHRpZiAoY29tbWl0KSB7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMDpcdFx0dGNmX2N0X2FjdF9zZXRfbWFyayhjdCwgcC1cdTAwM2VtYXJrLCBwLVx1MDAzZW1hcmtfbWFzayk7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMTpcdFx0dGNmX2N0X2FjdF9zZXRfbGFiZWxzKGN0LCBwLVx1MDAzZWxhYmVscywgcC1cdTAwM2VsYWJlbHNfbWFzayk7XG5uZXQvc2NoZWQvYWN0X2N0LmMtMTEwMi1cbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmM9MTYzNj1zdGF0aWMgaW50IHRjZl9jdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTE2NDYtXHRcdGVudHJ5LVx1MDAzZWlkID0gRkxPV19BQ1RJT05fQ1Q7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTY0NzpcdFx0ZW50cnktXHUwMDNlY3QuYWN0aW9uID0gdGNmX2N0X2FjdGlvbihhY3QpO1xubmV0L3NjaGVkL2FjdF9jdC5jLTE2NDgtXHRcdGVudHJ5LVx1MDAzZWN0LnpvbmUgPSB0Y2ZfY3Rfem9uZShhY3QpO1xuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYz0xNjYwPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfY3Rfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYy0xNjYzLVx0Lm93bmVyXHRcdD1cdFRISVNfTU9EVUxFLFxubmV0L3NjaGVkL2FjdF9jdC5jOjE2NjQ6XHQuYWN0XHRcdD1cdHRjZl9jdF9hY3QsXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY2NS1cdC5kdW1wXHRcdD1cdHRjZl9jdF9kdW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGBhY3RfY3Rfb3BzYCDigJMgbWVhbmluZywgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIHNwZWNpZmljYWxseSB3aXRoaW4gYHRjZl9jdF9hY3RgLiBUaGUgbGVhayBvY2N1cnMgd2hlbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgIHJldHVybnMgYW4gZXJyb3IsIHlldCB0aGUgcGFja2V0IGJ1ZmZlciAoYHNrYmApIHJlbWFpbnMgdW5kZXIgdGhlIGNhbGxlciYjMzk7cyBvd25lcnNoaXAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhIGZ1bmN0aW9uYWwgaXNzdWUuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHRob3JvdWdobHkgZnV6emVkIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIGluIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHVyZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBjdGAgYWN0aW9uLiBUbyByZXByb2R1Y2UgdGhpcywgSSB3b3VsZCBzZXQgdXAgYSB0cmFmZmljIGNvbnRyb2wgcnVsZSB1c2luZyB0aGUgYGN0YCBhY3Rpb24gYW5kIGZlZWQgaXQgZnJhZ21lbnRlZCBwYWNrZXRzLgoKVG8gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUgY2hlY2sgYE5GX0ZMT1dfVEFCTEVgIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGFzIHdlbGwuIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIHRoYXQgdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wgaXMgdGhlIHByaW1hcnkgcG9pbnQgb2YgbW9kaWZpY2F0aW9uLCBhcyBpdCBpcyB0aGUgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoaXMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0ZMT1dfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTcwMT1lbmRpZiAjIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwNC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcxMTpjb25maWcgTkZfRkxPV19UQUJMRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cdGJvb2wgXCYjMzQ7U3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgemVybyBpbiBhcm91bmQgbGluZSA3MTEuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byAqW2luc2VydCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBuZXRmaWx0ZXIgeW91IGFyZSB3b3JraW5nIG9uLCBlLmcuLCBhIG5ldyBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSwgYSBzcGVjaWZpYyBob29rIHBvaW50LCBvciBzb21lIG9ic2N1cmUgdGFibGUgb3B0aW9uXSouIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGxpa2VseSBnb3Zlcm5zICpbbWVudGlvbiB0aGUgZXhwZWN0ZWQgY29uZmlndXJhdGlvbiBpdGVtcyBvciB0aGVpciBnZW5lcmFsIHB1cnBvc2UgYmFzZWQgb24geW91ciBrbm93bGVkZ2Ugb2YgdGhlIGFyZWFdKi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMsIHNlZSBob3cgdGhleSYjMzk7cmUgZ3JvdXBlZCwgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIG9wdGlvbnMgYW5kIGZlYXR1cmVzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yaywgYW5kIGJleW9uZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIHdpdGggY2xlYXIgYGNvbmZpZ2AgYmxvY2tzLCBgZGVwZW5kcyBvbmAgY2xhdXNlcywgYW5kIG1heWJlIHNvbWUgaGVscGZ1bCBjb21tZW50cy4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyBteSBjb2RlJiMzOTtzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgS2NvbmZpZyBjaG9pY2VzIGlzIGNydWNpYWwgZm9yIGJvdGggcGVyZm9ybWFuY2UgYW5kIHBvcnRhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA1Olx0XHRkZXBlbmRzIG9uIE5GX0ZMT1dfVEFCTEVcbiA3MDY6XHRcdGhlbHBcbiA3MDc6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgc3VwcG9ydC5cbiA3MDg6XHRcbiA3MDk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiA3MTA6XHRcbiA3MTE6XHRjb25maWcgTkZfRkxPV19UQUJMRVxuIDcxMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4gNzEzOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9JTkdSRVNTXG4gNzE0Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDcxNTpcdFx0ZGVwZW5kcyBvbiBORl9UQUJMRVNcbiA3MTY6XHRcdGhlbHBcbiA3MTc6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgZmxvdyB0YWJsZSBjb3JlIGluZnJhc3RydWN0dXJlLlxuIDcxODpcdFxuIDcxOTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuIDcyMDpcdFxuIDcyMTpcdGNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xuIDcyMjpcdFx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuIDcyMzpcdFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXG4gNzI0Olx0XHRkZXBlbmRzIG9uIFBST0NfRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGV4cHJlc3NlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jeSBDaGFpbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHVucGFjayB0aGlzLiBJIHNlZSB0aGF0IHRoZSBgTkZfRkxPV19UQUJMRWAgbW9kdWxlIGhpbmdlcyBvbiBhIGZldyBvdGhlciBrZXkgcGxheWVyczogYE5FVEZJTFRFUl9JTkdSRVNTYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkZfVEFCTEVTYC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyBmbG93IHRhYmxlcyBhcmUgaW50aW1hdGVseSB0aWVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsuIE5vdywgdG8gdHJ1bHkgZ3JvayB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYE5GX0ZMT1dfVEFCTEVgIGFuZCBob3cgaXQgb3BlcmF0ZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgaW4gZGV0YWlsLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiBgTkVURklMVEVSX0lOR1JFU1NgLiBJIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgaG93IGluZ3Jlc3MgZmlsdGVyaW5nIGFuZCBwcm9jZXNzaW5nIGZpdHMgaW50byB0aGlzIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7Q29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU6Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGluZ3Jlc3Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCoqCgpPa2F5LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgNS4gSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYW5kIGRlcGVuZGVuY2llcy4gSXMgaXQgc3RydWN0dXJlZCBpbnR1aXRpdmVseT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgY2xlYW51cCB0aGF0IGp1bXAgb3V0PyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgbWFpbiBgTkVURklMVEVSYCBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgKGUuZy4sIGBORVRfQ09SRWAsIGBORVRgKS4KKiAgIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdmFyaW91cyBOZXRmaWx0ZXIgc3Vic3lzdGVtczogaXB0YWJsZXMsIG5mdGFibGVzLCBjb25uZWN0aW9uIHRyYWNraW5nLCBldGMuIFdoYXQgb3B0aW9ucyBhcmUgcHJvdmlkZWQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgaW1wYWN0aW5nIHBlcmZvcm1hbmNlIG9yIGNvbXBhdGliaWxpdHk/CiogICBBbnkgZGVmYXVsdCB2YWx1ZXMgdGhhdCBzZWVtIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIG9yIGNvdWxkIGJlbmVmaXQgZnJvbSBzb21lIHN0cmF0ZWdpYyB0d2Vha2luZy4KKiAgIFRoZSBvdmVyYWxsIG9yZ2FuaXphdGlvbi4gRG9lcyBpdCBmb2xsb3cgYSBsb2dpY2FsIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGdvb2QgY29tbWVudHMgYW5kIGV4cGxhbmF0aW9ucz8KKiAgIEFyZSB0aGVyZSBhbnkgc3ltYm9scyB0aGF0IGFwcGVhciB0byBoYXZlIGJlZW4gZGVwcmVjYXRlZCBvciBhcmUgaW4gYSBzdGF0ZSBvZiB0cmFuc2l0aW9uPwoKSeKAmW0gcmVhbGx5IGxvb2tpbmcgZm9yIGhvdyB3ZWxsIHRoZXNlIGNvbmZpZ3VyYXRpb25zIG1hcCB0byB0aGUgYXZhaWxhYmxlIGtlcm5lbCBmZWF0dXJlcy4gSSYjMzk7bSBhaW1pbmcgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoZXJlIHRoZSAmIzM5O2tub2JzJiMzOTsgYXJlIHRvIG1ha2UgZ3JhbnVsYXIgY2hhbmdlcywgaWYgbmVlZGVkLiBUaGlzIHdpbGwgaGVscCBtZSBpZiBJIGhhdmUgdG8gZGVidWcgc29tZSBpcHRhYmxlcyBiZWhhdmlvciBvciBvcHRpbWl6ZSBzb21lIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWUuIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIHF1aWNrIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiBhbnN3ZXIgcXVlc3Rpb25zIHF1aWNrbHkgb3IgZWZmaWNpZW50bHkuIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xuICAgNjpcdFx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdHNlbGVjdCBORVRfSU5HUkVTU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gY2xhc3NpZnkgcGFja2V0cyBmcm9tIGluZ3Jlc3MgdXNpbmcgdGhlIE5ldGZpbHRlclxuICAxMTpcdFx0ICBpbmZyYXN0cnVjdHVyZS5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTkVURklMVEVSX0VHUkVTU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVuYWJsaW5nIEluZ3Jlc3MgRmlsdGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gcHV0dGluZyB0b2dldGhlciB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYE5FVEZJTFRFUl9JTkdSRVNTYC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZOKAlGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQsIGZvdW5kYXRpb25hbCBzdHVmZi4gQW5kIHRoZW4sIGdvaW5nIHRocm91Z2ggdGhlIGRlcGVuZGVuY2llcywgbGV0JiMzOTtzIGluY2x1ZGU6IGBORVRfQUNUX0NUYCwgYE5FVF9DTFNfQUNUYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9GTE9XX1RBQkxFYCwgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgZXNzZW50aWFscywgcmlnaHQ/IEFuZCwgb2J2aW91c2x5LCB0aGUgYE5FVEZJTFRFUl9JTkdSRVNTYCBpdHNlbGYuCgpJJiMzOTttIGp1c3QgcXVpY2tseSBjb25maXJtaW5nIHRoYXQgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgYmFzaWMgYnV0IHN0aWxsIHJlbGV2YW50LCBnb3R0YSBpbmNsdWRlIHRob3NlIGluIHRoZSBsaXN0LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYE5FVF9DTFNfQUNUYCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgaW5ncmVzcyBwYXRoLiBJJiMzOTt2ZSBnb3QgYSBkZWNlbnQgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZmlsdGVyIGludGVybmFscywgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19BQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgTmV0d29yayBTY2hlZHVsaW5nKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSB3YW50IHRvIHplcm8gaW4gYXJvdW5kIGxpbmUgNzAyLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBwZXJoYXBzIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGlzIHNlY3Rpb24gd2lsbCBsaWtlbHkgZGVhbCB3aXRoIGEgc3BlY2lmaWMgcXVldWluZyBkaXNjaXBsaW5lIG9yIGEgcmVsZXZhbnQgZmVhdHVyZSBzZXQgcmVsYXRlZCB0byB0cmFmZmljIHNoYXBpbmcgb3IgUW9TLiBMZXQmIzM5O3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgY29ubmVjdGlvbnMgd2UgY2FuIHB1bGwgb3V0IG9mIGl0LiBJJiMzOTttIGhvcGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB3aWxsIGluZm9ybSBob3cgd2UgaGFuZGxlIHRyYWZmaWMgc2hhcGluZywgdGhlIG9wdGlvbnMgd2UgaGF2ZSBhbmQgaG93IGl0IGFsbCB3b3JrcyB1bmRlciB0aGUgaG9vZC4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlYWxseSBpbnRlcmVzdGluZywgcGVyaGFwcyBldmVuIG9ic2N1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY5NTpcdFx0ICBtYXRjaGVzLlxuIDY5NjpcdFx0ICBDdXJyZW50IHN1cHBvcnRlZCBtYXRjaCBpcyBcJiMzNDtwb2xpY3lcJiMzNDsgd2hpY2ggYWxsb3dzIHBhY2tldCBjbGFzc2lmaWNhdGlvblxuIDY5NzpcdFx0ICBiYXNlZCBvbiBJUHNlYyBwb2xpY3kgdGhhdCB3YXMgdXNlZCBkdXJpbmcgZGVjYXBzdWxhdGlvblxuIDY5ODpcdFxuIDY5OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzAwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlbV9pcHQuXG4gNzAxOlx0XG4gNzAyOlx0Y29uZmlnIE5FVF9DTFNfQUNUXG4gNzAzOlx0XHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiA3MDQ6XHRcdHNlbGVjdCBORVRfQ0xTXG4gNzA1Olx0XHRzZWxlY3QgTkVUX1hHUkVTU1xuIDcwNjpcdFx0aGVscFxuIDcwNzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gQWN0aW9uc1xuIDcwODpcdFx0ICBnZXQgYXR0YWNoZWQgdG8gY2xhc3NpZmllcnMgYW5kIGFyZSBpbnZva2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bFxuIDcwOTpcdFx0ICBjbGFzc2lmaWNhdGlvbi4gVGhleSBhcmUgdXNlZCB0byBvdmVyd3JpdGUgdGhlIGNsYXNzaWZpY2F0aW9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NDEKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBuZXcgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIGZvciBgTkVUX0NMU19BQ1RgLiBUaGF0JiMzOTtzIGdvb2QuIEtlZXBzIHRoaW5ncyBjbGVhbi4KCkxldCBtZSBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBpbiBteSBoZWFkOiBgTkVUX0FDVF9DVGAsIGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBgTkZfRkxPV19UQUJMRWAsIGBORl9UQUJMRVNgLCBhbmQgYE5FVEZJTFRFUl9JTkdSRVNTYC4gSSBrbm93IHRob3NlIGFyZSBhbGwgcG90ZW50aWFsbHkgaW4gcGxheSBoZXJlLgoKTXkgZm9jdXMgaXMgb24gdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhpcywgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBUaGlzIGlzIHRyaWdnZXJlZCBieSBhIGZhaWx1cmUgZHVyaW5nIHBhY2tldCBkZWZyYWdtZW50YXRpb24sIHNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXggd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtLiAgQW55b25lIHVzaW5nIHRyYWZmaWMgY29udHJvbCBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMgY291bGQgYmUgYWZmZWN0ZWQuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIHNob3VsZCBJIGV4cGxpY2l0bHkgaW5jbHVkZSBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgPyBUaGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBCdXQsIGl0JiMzOTtzIHNhZmVyIHRvIGluY2x1ZGUgaXQganVzdCB0byBiZSBzdXJlLgoKSGFuZyBvbi4gTGV0IG1lIGxvb2sgYXQgdGhpcyBgdGNmX2N0X2FjdGAgZnVuY3Rpb24gYWdhaW4uICBBaCwgcmlnaHQuIEl0JiMzOTtzIG5vdCBzdGF0aWMuIEl0JiMzOTtzIG1hcmtlZCBhcyBgVENfSU5ESVJFQ1RfU0NPUEVgLCB3aGljaCAqdXN1YWxseSogbWVhbnMgaXQmIzM5O3MgYGV4dGVybmAgb3Igc3RhdGljIGRlcGVuZGluZyBvbiByZXRwb2xpbmUgY29uZmlndXJhdGlvbnMsIGJ1dCBpbiB0aGlzIGNhc2UsIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9ydGVkIHZpYSBvcHMuICBTbyBkZWZpbml0ZWx5IGluY2x1ZGUgYHRjZl9jdF9hY3RgLgoKQWxyaWdodCwgSSYjMzk7bSBjb21mb3J0YWJsZSB3aXRoIHRoYXQuIExldCYjMzk7cyBjYWxsIHRoaXMgc2V0IG9mIHJlc3VsdHMgcmVhZHkgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfQUNUX0NUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9jdF9hY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfQUNUX0NUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9jdF9hY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6MzUuNzE2MjMwNjc0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTMwOTkzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0FDVF9DVFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORVRGSUxURVJfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9jdF9hY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBza2IgbWVtb3J5IGxlYWsgaW4gdGhlIGBhY3RfY3RgIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gd2hlbiBwYWNrZXQgZGVmcmFnbWVudGF0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZy90YyBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBjb25maWd1cmluZyB0YyBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM1LjcxNjI0MjIxNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwNDkxMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTJlZmM5YzIwNjRmMTQyMzFmNTE2MDI5OWNhMTBkYjkzZGFhYTJiOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDExOjIwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfY3QuYyBiL25ldC9zY2hlZC9hY3RfY3QuY1xcbmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9jdC5jXFxuKysrIGIvbmV0L3NjaGVkL2FjdF9jdC5jXFxuQEAgLTg0MCw4ICs4NDAsMTUgQEAgc3RhdGljIGludCB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sICpmcmFnKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxcbisgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0XFxuKyAqIGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGRlZnJhZ21lbnRhdGlvbiBlbmdpbmU7IG9uY2UgbmZfY3RfaGFuZGxlX1xcbisgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xcbisgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuXFxuKyAqL1xcbiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0XFx0ICAgdTggZmFtaWx5LCB1MTYgem9uZSwgYm9vbCAqZGVmcmFnKVxcbitcXHRcXHRcXHRcXHQgICB1OCBmYW1pbHksIHUxNiB6b25lLCBib29sICpkZWZyYWcsXFxuK1xcdFxcdFxcdFxcdCAgIGJvb2wgKnNrYl9pc19vdXJzKVxcbiB7XFxuIFxcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xcbiBcXHRzdHJ1Y3QgdGNfc2tiX2NiIGNiO1xcbkBAIC04NTksOCArODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFxcdTAwMjZmcmFnKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRlcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsIFxcdTAwMjZmcmFnKTtcXG4tXFx0aWYgKGVyciB8fCAhZnJhZylcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHQqc2tiX2lzX291cnMgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuK1xcdGlmICghZnJhZylcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRjYiA9ICp0Y19za2JfY2Ioc2tiKTtcXG4gXFx0ZXJyID0gbmZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgem9uZSwgZmFtaWx5LCBcXHUwMDI2cHJvdG8sIFxcdTAwMjZjYi5tcnUpO1xcbkBAIC05NzcsNiArOTg4LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4gXFx0aW50IG5oX29mcywgZXJyLCByZXR2YWw7XFxuIFxcdHN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwO1xcbiBcXHRib29sIGFkZF9oZWxwZXIgPSBmYWxzZTtcXG4rXFx0Ym9vbCBza2JfaXNfb3VycyA9IGZhbHNlO1xcbiBcXHRib29sIHNraXBfYWRkID0gZmFsc2U7XFxuIFxcdGJvb2wgZGVmcmFnID0gZmFsc2U7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdDtcXG5AQCAtMTAxMiw5ICsxMDI0LDE4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfY3RfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuIFxcdCAqL1xcbiBcXHRuaF9vZnMgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBuaF9vZnMpO1xcbi1cXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVxcdTAwM2V6b25lLCBcXHUwMDI2ZGVmcmFnKTtcXG4tXFx0aWYgKGVycilcXG4rXFx0ZXJyID0gdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIGZhbWlseSwgcC1cXHUwMDNlem9uZSwgXFx1MDAyNmRlZnJhZyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNrYl9pc19vdXJzKTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHQvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkXFxuK1xcdFxcdCAqIGl0OyByZXR1cm5pbmcgVENfQUNUX0NPTlNVTUVEIGZvciBzdWNoIGEgcGFja2V0IHdvdWxkIGxlYWtcXG4rXFx0XFx0ICogaXQsIHNpbmNlIG5vIGNhbGxlciBmcmVlcyBhbiBza2IgaXQgd2FzIHRvbGQgaXQgbm8gbG9uZ2VyXFxuK1xcdFxcdCAqIG93bnMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc2tiX2lzX291cnMpXFxuK1xcdFxcdFxcdGdvdG8gZHJvcDtcXG4gXFx0XFx0Z290byBvdXRfZnJhZztcXG4rXFx0fVxcbiBcXG4gXFx0ZXJyID0gbmZfY3Rfc2tiX25ldHdvcmtfdHJpbShza2IsIGZhbWlseSk7XFxuIFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM2LjIyNzY5MjM0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2MjQxNjEzOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9BQ1RfQ1RcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX0lOR1JFU1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfY3RfYWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMmVmYzljMjA2NGYxNDIzMWY1MTYwMjk5Y2ExMGRiOTNkYWFhMmI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxMToyMDozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfY3QuYyBiL25ldC9zY2hlZC9hY3RfY3QuY1xuaW5kZXggYmU1MzVhMjYxZmEwNC4uZTI1MDk2OWM4NGFjYSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfY3QuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9jdC5jXG5AQCAtODQwLDggKzg0MCwxNSBAQCBzdGF0aWMgaW50IHRjZl9jdF9pcHY2X2lzX2ZyYWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgKmZyYWcpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxuKyAqIGl0c2VsZi4gIEBza2IgaXMgb3VycyBvbmx5IHdoZW4gdGhlIGhlYWRlciBjaGVja3MgYmVsb3cgcmVqZWN0IHRoZSBwYWNrZXRcbisgKiBiZWZvcmUgaXQgaXMgaGFuZGVkIHRvIHRoZSBkZWZyYWdtZW50YXRpb24gZW5naW5lOyBvbmNlIG5mX2N0X2hhbmRsZV9cbisgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xuKyAqIGFscmVhZHkgYmVlbiBmcmVlZCBieSBpdC5cbisgKi9cbiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi1cdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZylcbitcdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZyxcbitcdFx0XHRcdCAgIGJvb2wgKnNrYl9pc19vdXJzKVxuIHtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIFx0c3RydWN0IHRjX3NrYl9jYiBjYjtcbkBAIC04NTksOCArODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xuIFx0ZWxzZVxuIFx0XHRlcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xuLVx0aWYgKGVyciB8fCAhZnJhZylcbitcdGlmIChlcnIpIHtcbitcdFx0KnNrYl9pc19vdXJzID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcdGlmICghZnJhZylcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHRjYiA9ICp0Y19za2JfY2Ioc2tiKTtcbiBcdGVyciA9IG5mX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIHpvbmUsIGZhbWlseSwgXHUwMDI2cHJvdG8sIFx1MDAyNmNiLm1ydSk7XG5AQCAtOTc3LDYgKzk4OCw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfY3RfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4gXHRpbnQgbmhfb2ZzLCBlcnIsIHJldHZhbDtcbiBcdHN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwO1xuIFx0Ym9vbCBhZGRfaGVscGVyID0gZmFsc2U7XG4rXHRib29sIHNrYl9pc19vdXJzID0gZmFsc2U7XG4gXHRib29sIHNraXBfYWRkID0gZmFsc2U7XG4gXHRib29sIGRlZnJhZyA9IGZhbHNlO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuQEAgLTEwMTIsOSArMTAyNCwxOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuIFx0ICovXG4gXHRuaF9vZnMgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgbmhfb2ZzKTtcbi1cdGVyciA9IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCBmYW1pbHksIHAtXHUwMDNlem9uZSwgXHUwMDI2ZGVmcmFnKTtcbi1cdGlmIChlcnIpXG4rXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVx1MDAzZXpvbmUsIFx1MDAyNmRlZnJhZyxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnNrYl9pc19vdXJzKTtcbitcdGlmIChlcnIpIHtcbitcdFx0LyogVGhlIHNrYiBpcyBzdGlsbCBvdXJzIG9ubHkgd2hlbiB0aGUgaGVhZGVyIGNoZWNrcyByZWplY3RlZFxuK1x0XHQgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrXG4rXHRcdCAqIGl0LCBzaW5jZSBubyBjYWxsZXIgZnJlZXMgYW4gc2tiIGl0IHdhcyB0b2xkIGl0IG5vIGxvbmdlclxuK1x0XHQgKiBvd25zLlxuK1x0XHQgKi9cbitcdFx0aWYgKHNrYl9pc19vdXJzKVxuK1x0XHRcdGdvdG8gZHJvcDtcbiBcdFx0Z290byBvdXRfZnJhZztcbitcdH1cbiBcbiBcdGVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpO1xuIFx0aWYgKGVycilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM2LjIyNzY5NDUzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTg3ODc1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyAoY3QpIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIG1vZGlmeWluZyBgbmV0L3NjaGVkL2FjdF9jdC5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3ZlIHR3ZWFrZWQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCB0byB0ZWxsIHVzIHdoZXRoZXIgdGhlIFNLQiAoU29ja2V0IEJ1ZmZlcikgaXMgc3RpbGwgb3duZWQgYnkgdGhlIGNhbGxlciB3aGVuIGFuIGVycm9yIGhhcHBlbnMuICBUaGF0J3MgYSBnb29kIGFwcHJvYWNoIHRvIGVycm9yIGhhbmRsaW5nLCBnZW5lcmFsbHkuIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoYXQgYHNrYl9pc19vdXJzYCBmbGFnIG5vdy5cblxuVGhlIG1haW4gY2hhbmdlIGFwcGVhcnMgdG8gYmUgaG93IHRoZSBjb2RlIGhhbmRsZXMgZXJyb3JzIHdpdGhpbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLiBJZiB0aGVyZSdzIGEgcHJvYmxlbSBhbmQgdGhlIFNLQiBpcyBzdGlsbCBvdXJzIGFmdGVyIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AsIGB0Y2ZfY3RfYWN0YCBpcyBub3cganVtcGluZyB0byBgZHJvcGAgaW5zdGVhZCBvZiBgb3V0X2ZyYWdgLiAgQWgsIHJpZ2h0LiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgcG90ZW50aWFsIG1lbW9yeSBsZWFrIGlmIHRob3NlIGVhcmx5IGZyYWdtZW50IGNoZWNrcyBpbiBzb21ldGhpbmcgbGlrZSBgdGNmX2N0X2lwdjRfaXNfZnJhZ21lbnRgIG9yIGB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudGAgZmFpbC4gVGhpcyBtYWtlcyBzZW5zZTsgaWYgdGhlIGZyYWdtZW50IGhhbmRsaW5nIGZhaWxzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgU0tCIGlzIHByb3Blcmx5IHJlbGVhc2VkLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJ2xsIG9wZW4gdXAgYG5ldC9zY2hlZC9hY3RfY3QuY2AgYW5kIGRpZyBpbi4gQWgsIHllcywgYHRjZl9jdF9hY3RgIGlzIHRoZSB0b3AtbGV2ZWwgYWN0aW9uIGZ1bmN0aW9uIGZvciB0aGUgY29ubnRyYWNrIFRDIGFjdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UuIEl0J3MgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIHZpYSBgdGNgLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLlxuXG5Ob3csIGxldCBtZSBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIGBhY3RfY3QuY2AgYW5kIHNlZSBpZiB0aGlzIG5ldyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBvciBhbHdheXMgZW5hYmxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGRlZmF1bHQgZml4IG9yIGlmIHRoZXJlIGFyZSBzY2VuYXJpb3Mgd2hlcmUgdGhpcyBuZXcgbG9naWMgaXMgZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0MS45MjY0ODYxODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI4MTEwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWN0X2N0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTMxPW9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpKz0gYWN0X3R1bm5lbF9rZXkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfTkVUX0FDVF9DVClcXHQrPSBhY3RfY3Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0zMy1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NDEuOTk5MzAxOTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzNDgwOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGlzIGBDT05GSUdfTkVUX0FDVF9DVGAgZmxhZyBtZW50aW9uZWQuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgaXMgYW5kIHdoeSBpdCdzIGNvbWluZyB1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSwgc28gSSdsbCBkaXZlIGludG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGV4cGxhbmF0aW9ucyBmb3IgYE5FVF9BQ1RfQ1RgLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0NS4yNTI3ODY3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQxOTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0FDVF9DVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTg1Mz1jb25maWcgTkVUX0FDVF9DT05OTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctODY0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NTpjb25maWcgTkVUX0FDVF9DVElORk9cXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy05MTYtXFxubmV0L3NjaGVkL0tjb25maWc6OTE3OmNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NDUuMzEyMjEyNDY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDIxMjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE5FVFxcX0FDVFxcX0NUKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSdtIGVzc2VudGlhbGx5IGRpdmluZyBpbnRvIGEgc3BlY2lmaWMgZWxlbWVudCwgYE5FVF9BQ1RfQ1RgLiBUaGUgbGFuZ3VhZ2UgaW1wbGllcyB0aGlzIGlzIGEgY29kZSBhcnRpZmFjdCwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIHBlcmhhcHMgYSBtb2R1bGUgbmFtZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgY3JpdGljYWwgbmV4dCBzdGVwOiAqKkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuKiogSXQncyB0aGUgY29yZSBwcmluY2lwbGUsIGVzcGVjaWFsbHkgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gbmV0d29ya3MuIFxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxheWVycyBpbnZvbHZlZC4gV2hhdCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gYE5FVF9BQ1RfQ1RgPyBXaGF0IGRvZXMgKml0KiByZWx5IG9uPyBJcyBpdCBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgdGhlIHN5c3RlbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgbGlicmFyeSBjYWxsLCBhIGNvbXBsZXggc2V0IG9mIGludGVyYWN0aW9ucyB3aXRoaW4gYW4gaW5mcmFzdHJ1Y3R1cmUsIG9yIHNvbWV0aGluZyBpbi1iZXR3ZWVuPyBGcm9tIGEgZGVzaWduIHBlcnNwZWN0aXZlLCBteSBjb25jZXJuIGlzIGFib3V0ICoqaW1wYWN0IGFuYWx5c2lzKiouIEEgY2hhbmdlIGhlcmUgY2FuIGNhc2NhZGUgb3V0d2FyZHMgaW4gdW5leHBlY3RlZCB3YXlzLCBzbyBJIG5lZWQgdG8gZm9ybSBhIHJvYnVzdCBtZW50YWwgbWFwLlxuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgdG9vbHMgYW5kIG1ldGhvZHMgSSdsbCB1c2UgdG8gdW5jb3ZlciB0aGVzZSBkZXBlbmRlbmNpZXMuIEFtIEkgcmVhY2hpbmcgZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wsIGdyZXBwaW5nIHRocm91Z2ggc291cmNlIGNvZGUsIG9yIHJlbHlpbmcgb24gZG9jdW1lbnRhdGlvbj8gRG9lcyB0aGUgYnVpbGQgc3lzdGVtIHByb3ZpZGUgZGVwZW5kZW5jeSBncmFwaHMsIG9yIHdpbGwgSSBuZWVkIHRvIG1hbnVhbGx5IHRyYWNlIHRoaW5ncz8gTXkgZ29hbCBpcyB0byBidWlsZCBhIGRldGFpbGVkIGFuZCBhY2N1cmF0ZSBwaWN0dXJlLCBhIG5ldHdvcmsgb2YgcmVsYXRpb25zaGlwcywgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjQ5LjQ4NjQyNjY4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNzpcXHRjb25maWcgTkVUX0FDVF9DVFxcbiA5MTg6XFx0XFx0dHJpc3RhdGUgXFxcImNvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXFxcIlxcbiA5MTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxuIDkyMDpcXHRcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbiA5MjE6XFx0XFx0c2VsZWN0IE5GX05BVF9PVlMgaWYgTkZfTkFUXFxuIDkyMjpcXHRcXHRoZWxwXFxuIDkyMzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gYWxsb3cgc2VuZGluZyB0aGUgcGFja2V0cyB0byBjb25udHJhY2sgbW9kdWxlLlxcbiA5MjQ6XFx0XFxuIDkyNTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA5Mjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0LlxcbiA5Mjk6XFx0XFxuIDkzMDpcXHRjb25maWcgTkVUX0FDVF9HQVRFXFxuIDkzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbiA5MzI6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiA5MzM6XFx0XFx0aGVscFxcbiA5MzQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhlIGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNzZWQgYXRcXG4gOTM1OlxcdFxcdCAgc3BlY2lmaWMgdGltZSBzbG90IGFuZCBiZSBkcm9wcGVkIGF0IG90aGVyIHNwZWNpZmljIHRpbWUgc2xvdCBieVxcbiA5MzY6XFx0XFx0ICB0aGUgZ2F0ZSBlbnRyeSBsaXN0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0OS40ODY1MDY5NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM3ODkwMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25uZWN0aW9uIFRyYWNraW5nIGZvciBPcHRpbWFsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBkZXBlbmRlbmNpZXM6IGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBOb3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dCwgYnV0IHRoaXMgYCghTkZfTkFUIHx8IE5GX05BVClgIGNvbmRpdGlvbiBpcyBpbnRlcmVzdGluZy4gQmFzaWNhbGx5LCBpdCBidWlsZHMgcmVnYXJkbGVzcyBvZiBgTkZfTkFUYC4gVGhhdCBtYWtlcyBzZW5zZS4gSG93ZXZlciwgaWYgYE5GX05BVGAgKmlzKiBhIG1vZHVsZSwgdGhlbiBJICphbHNvKiBuZWVkIGBORVRfQUNUX0NUYCBhcyBhIG1vZHVsZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCByZWxhdGlvbnNoaXAgaW4gbWluZCB3aGVuIEkgc3RhcnQgdHJ5aW5nIHRvIG9wdGltaXplIHRoaW5ncy5cblxuSSdtIHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNvIGxldCBtZSBkaXZlIGEgbGl0dGxlIGRlZXBlciBhbmQgY2hlY2sgb3V0IGB0Y2ZfY3RfYWN0YCBhbmQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYC4gU2luY2UgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCBpcyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCdzIGlubGluZWQuIEJ1dCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQsIHNvIHRoYXQncyB3aGVyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpcywgd2hpY2ggd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGZvciBwcm9maWxpbmcgb3IgYW5hbHlzaXMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeTogd2hhdCBhYm91dCBgdGNmX2N0X2lwdjRfaXNfZnJhZ21lbnRgIGFuZCBgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnRgPyBKdXN0IHRvIGJlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIGZyYWdtZW50YXRpb24gcHJvcGVybHksIEkgc2hvdWxkIGNoZWNrIHRob3NlIGFzIHdlbGwuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTQuNDI0NDAwMDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODY1MDg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9jdC5jPTc5MT1zdGF0aWMgdTggdGNmX2N0X3NrYl9uZl9mYW1pbHkoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYy04MDgtXFxubmV0L3NjaGVkL2FjdF9jdC5jOjgwOTpzdGF0aWMgaW50IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgKmZyYWcpXFxubmV0L3NjaGVkL2FjdF9jdC5jLTgxMC17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM9ODQ5PXN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTg2NS1cXHRpZiAoZmFtaWx5ID09IE5GUFJPVE9fSVBWNClcXG5uZXQvc2NoZWQvYWN0X2N0LmM6ODY2OlxcdFxcdGVyciA9IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHNrYiwgXFx1MDAyNmZyYWcpO1xcbm5ldC9zY2hlZC9hY3RfY3QuYy04NjctXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo1NC41MDMwNTUxMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMzQwMjIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgQWN0aW9uKipcblxuT2theSwgc28gSSdtIHN0YXJ0aW5nIGF0IGB0Y2ZfY3RfYWN0YCwgd2hpY2ggYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgY29ubmVjdGlvbiB0cmFja2luZyBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0IG1lIHF1aWNrbHkgam9nIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGFyZSBsaWtlbHkgaW52b2x2ZWQgaGVyZS4gUmlnaHQsIEkgbmVlZCB0byBjb25zaWRlciBgTkVUX0FDVF9DVGAsIGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IHRoaXMgYHRjZl9jdF9hY3RgIGZ1bmN0aW9uIGlzIG1hZGUgYXZhaWxhYmxlLiBJcyBpdCBleHBvcnRlZCBmb3IgbW9kdWxlIHVzZSwgb3IgaXMgaXQgY29tcGlsZWQgc3RhdGljYWxseSBpbnRvIHRoZSBjb3JlPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaW5mb3JtIGhvdyBpdCdzIGJlaW5nIHVzZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTguMDA2NDU5NTk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzAxMTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfY3RfYWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2N0LmM9OTA4PXN0YXRpYyB2b2lkIHRjZl9jdF9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM6OTE2OnN0YXRpYyB2b2lkIHRjZl9jdF9hY3Rfc2V0X21hcmsoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgbWFyaywgdTMyIG1hc2spXFxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNy17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTMyLVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5MzM6c3RhdGljIHZvaWQgdGNmX2N0X2FjdF9zZXRfbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTM0LVxcdFxcdFxcdFxcdCAgdTMyICpsYWJlbHMsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTQ2LVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5NDc6c3RhdGljIGludCB0Y2ZfY3RfYWN0X25hdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zY2hlZC9hY3RfY3QuYy05NDgtXFx0XFx0XFx0ICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTc4LVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5Nzk6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTgwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTEwNzctXFxubmV0L3NjaGVkL2FjdF9jdC5jOjEwNzg6XFx0ZXJyID0gdGNmX2N0X2FjdF9uYXQoc2tiLCBjdCwgY3RpbmZvLCBwLVxcdTAwM2VjdF9hY3Rpb24sIFxcdTAwMjZwLVxcdTAwM2VyYW5nZSwgY29tbWl0KTtcXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTA3OS1cXHRpZiAoZXJyICE9IE5GX0FDQ0VQVClcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYy0xMDk5LVxcdGlmIChjb21taXQpIHtcXG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMDpcXHRcXHR0Y2ZfY3RfYWN0X3NldF9tYXJrKGN0LCBwLVxcdTAwM2VtYXJrLCBwLVxcdTAwM2VtYXJrX21hc2spO1xcbm5ldC9zY2hlZC9hY3RfY3QuYzoxMTAxOlxcdFxcdHRjZl9jdF9hY3Rfc2V0X2xhYmVscyhjdCwgcC1cXHUwMDNlbGFiZWxzLCBwLVxcdTAwM2VsYWJlbHNfbWFzayk7XFxubmV0L3NjaGVkL2FjdF9jdC5jLTExMDItXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM9MTYzNj1zdGF0aWMgaW50IHRjZl9jdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY0Ni1cXHRcXHRlbnRyeS1cXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9DVDtcXG5uZXQvc2NoZWQvYWN0X2N0LmM6MTY0NzpcXHRcXHRlbnRyeS1cXHUwMDNlY3QuYWN0aW9uID0gdGNmX2N0X2FjdGlvbihhY3QpO1xcbm5ldC9zY2hlZC9hY3RfY3QuYy0xNjQ4LVxcdFxcdGVudHJ5LVxcdTAwM2VjdC56b25lID0gdGNmX2N0X3pvbmUoYWN0KTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYz0xNjYwPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfY3Rfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTE2NjMtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfY3QuYzoxNjY0OlxcdC5hY3RcXHRcXHQ9XFx0dGNmX2N0X2FjdCxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY2NS1cXHQuZHVtcFxcdFxcdD1cXHR0Y2ZfY3RfZHVtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTguMDk5NDc1NDA0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODY2MjY3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBUcmFmZmljIENvbnRyb2wgQWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGBhY3RfY3Rfb3BzYCDigJMgbWVhbmluZywgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHNlZW1zIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdGNmX2N0X2FjdGAuIFRoZSBsZWFrIG9jY3VycyB3aGVuIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AgcmV0dXJucyBhbiBlcnJvciwgeWV0IHRoZSBwYWNrZXQgYnVmZmVyIChgc2tiYCkgcmVtYWlucyB1bmRlciB0aGUgY2FsbGVyJ3Mgb3duZXJzaGlwLiBUaGF0J3MgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhIGZ1bmN0aW9uYWwgaXNzdWUuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGhvcm91Z2hseSBmdXp6ZWQgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGxpZXMgaW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlsdXJlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYGN0YCBhY3Rpb24uIFRvIHJlcHJvZHVjZSB0aGlzLCBJIHdvdWxkIHNldCB1cCBhIHRyYWZmaWMgY29udHJvbCBydWxlIHVzaW5nIHRoZSBgY3RgIGFjdGlvbiBhbmQgZmVlZCBpdCBmcmFnbWVudGVkIHBhY2tldHMuXG5cblRvIHRlc3QgdGhpcyBlZmZlY3RpdmVseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gSSdsbCBhbHNvIGRvdWJsZSBjaGVjayBgTkZfRkxPV19UQUJMRWAgZm9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgYXMgd2VsbC4gVGhlIGtleSBoZXJlIGlzIHRvIGNvbmZpcm0gdGhhdCB0aGUgYHRjZl9jdF9hY3RgIHN5bWJvbCBpcyB0aGUgcHJpbWFyeSBwb2ludCBvZiBtb2RpZmljYXRpb24sIGFzIGl0IGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhpcyBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjAzLjc4NjEwNDkzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwODAxNDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9GTE9XX1RBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXFx0Ym9vbCBcXFwiU3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjA0LjAzNjkxMTg5MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU4MDE2MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTmV0ZmlsdGVyIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBsZXQncyB6ZXJvIGluIGFyb3VuZCBsaW5lIDcxMS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvICpbaW5zZXJ0IHRoZSBzcGVjaWZpYyBhcmVhIG9mIG5ldGZpbHRlciB5b3UgYXJlIHdvcmtpbmcgb24sIGUuZy4sIGEgbmV3IGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLCBhIHNwZWNpZmljIGhvb2sgcG9pbnQsIG9yIHNvbWUgb2JzY3VyZSB0YWJsZSBvcHRpb25dKi4gSSdtIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBsaWtlbHkgZ292ZXJucyAqW21lbnRpb24gdGhlIGV4cGVjdGVkIGNvbmZpZ3VyYXRpb24gaXRlbXMgb3IgdGhlaXIgZ2VuZXJhbCBwdXJwb3NlIGJhc2VkIG9uIHlvdXIga25vd2xlZGdlIG9mIHRoZSBhcmVhXSouIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBzeW1ib2xzLCBzZWUgaG93IHRoZXkncmUgZ3JvdXBlZCwgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIG9wdGlvbnMgYW5kIGZlYXR1cmVzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yaywgYW5kIGJleW9uZC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCB3aXRoIGNsZWFyIGBjb25maWdgIGJsb2NrcywgYGRlcGVuZHMgb25gIGNsYXVzZXMsIGFuZCBtYXliZSBzb21lIGhlbHBmdWwgY29tbWVudHMuIFVsdGltYXRlbHksIHRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgbXkgY29kZSdzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgS2NvbmZpZyBjaG9pY2VzIGlzIGNydWNpYWwgZm9yIGJvdGggcGVyZm9ybWFuY2UgYW5kIHBvcnRhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MDcuOTk0OTMwNTE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzA1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzA1OlxcdFxcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBzdXBwb3J0LlxcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDcxMDpcXHRcXG4gNzExOlxcdGNvbmZpZyBORl9GTE9XX1RBQkxFXFxuIDcxMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbiA3MTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xcbiA3MTQ6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNzE1OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTXFxuIDcxNjpcXHRcXHRoZWxwXFxuIDcxNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiA3MjA6XFx0XFxuIDcyMTpcXHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4gNzIyOlxcdFxcdGJvb2wgXFxcIlN1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXFxcIlxcbiA3MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXFxuIDcyNDpcXHRcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MDcuOTk1MjM1MzQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTYwNTM4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBleHByZXNzZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEZXBlbmRlbmN5IENoYWluIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIHVucGFjayB0aGlzLiBJIHNlZSB0aGF0IHRoZSBgTkZfRkxPV19UQUJMRWAgbW9kdWxlIGhpbmdlcyBvbiBhIGZldyBvdGhlciBrZXkgcGxheWVyczogYE5FVEZJTFRFUl9JTkdSRVNTYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkZfVEFCTEVTYC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyBmbG93IHRhYmxlcyBhcmUgaW50aW1hdGVseSB0aWVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsuIE5vdywgdG8gdHJ1bHkgZ3JvayB3aGF0J3MgZ29pbmcgb24gd2l0aCBgTkZfRkxPV19UQUJMRWAgYW5kIGhvdyBpdCBvcGVyYXRlcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBpbiBkZXRhaWwuIFRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgYE5FVEZJTFRFUl9JTkdSRVNTYC4gSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGhvdyBpbmdyZXNzIGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZyBmaXRzIGludG8gdGhpcyBhcmNoaXRlY3R1cmUuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTMuNTUxMjkzNDk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIzMjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0lOR1JFU1NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXFxcIkNvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMToxMy42MDk1MzE2MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNjY3OTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCoqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDUuIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhbmQgZGVwZW5kZW5jaWVzLiBJcyBpdCBzdHJ1Y3R1cmVkIGludHVpdGl2ZWx5PyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBvdGVudGlhbCByZWZhY3RvcmluZyBvciBjbGVhbnVwIHRoYXQganVtcCBvdXQ/IEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBgTkVURklMVEVSYCBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgKGUuZy4sIGBORVRfQ09SRWAsIGBORVRgKS5cbiogICBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgTmV0ZmlsdGVyIHN1YnN5c3RlbXM6IGlwdGFibGVzLCBuZnRhYmxlcywgY29ubmVjdGlvbiB0cmFja2luZywgZXRjLiBXaGF0IG9wdGlvbnMgYXJlIHByb3ZpZGVkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGVtPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5P1xuKiAgIEFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IHNlZW0gcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgb3IgY291bGQgYmVuZWZpdCBmcm9tIHNvbWUgc3RyYXRlZ2ljIHR3ZWFraW5nLlxuKiAgIFRoZSBvdmVyYWxsIG9yZ2FuaXphdGlvbi4gRG9lcyBpdCBmb2xsb3cgYSBsb2dpY2FsIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGdvb2QgY29tbWVudHMgYW5kIGV4cGxhbmF0aW9ucz9cbiogICBBcmUgdGhlcmUgYW55IHN5bWJvbHMgdGhhdCBhcHBlYXIgdG8gaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgb3IgYXJlIGluIGEgc3RhdGUgb2YgdHJhbnNpdGlvbj9cblxuSeKAmW0gcmVhbGx5IGxvb2tpbmcgZm9yIGhvdyB3ZWxsIHRoZXNlIGNvbmZpZ3VyYXRpb25zIG1hcCB0byB0aGUgYXZhaWxhYmxlIGtlcm5lbCBmZWF0dXJlcy4gSSdtIGFpbWluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hlcmUgdGhlICdrbm9icycgYXJlIHRvIG1ha2UgZ3JhbnVsYXIgY2hhbmdlcywgaWYgbmVlZGVkLiBUaGlzIHdpbGwgaGVscCBtZSBpZiBJIGhhdmUgdG8gZGVidWcgc29tZSBpcHRhYmxlcyBiZWhhdmlvciBvciBvcHRpbWl6ZSBzb21lIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWUuIEknbSB0cnlpbmcgdG8gZ2V0IGEgcXVpY2sgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIGFuc3dlciBxdWVzdGlvbnMgcXVpY2tseSBvciBlZmZpY2llbnRseS4gTGV04oCZcyBzZWUgd2hhdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQ3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTguMDM2MjEzODlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudSBcXFwiQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTXFxuICAgNjpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRzZWxlY3QgTkVUX0lOR1JFU1NcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIGNsYXNzaWZ5IHBhY2tldHMgZnJvbSBpbmdyZXNzIHVzaW5nIHRoZSBOZXRmaWx0ZXJcXG4gIDExOlxcdFxcdCAgaW5mcmFzdHJ1Y3R1cmUuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBORVRGSUxURVJfRUdSRVNTXFxuICAxNDpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTguMDM2Mzc2MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MzM5NDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBJbmdyZXNzIEZpbHRlcmluZyoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgTkVURklMVEVSX0lOR1JFU1NgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJk4oCUaXQgcmVsaWVzIG9uIGJvdGggYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBmb3VuZGF0aW9uYWwgc3R1ZmYuIEFuZCB0aGVuLCBnb2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGxldCdzIGluY2x1ZGU6IGBORVRfQUNUX0NUYCwgYE5FVF9DTFNfQUNUYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9GTE9XX1RBQkxFYCwgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgZXNzZW50aWFscywgcmlnaHQ/IEFuZCwgb2J2aW91c2x5LCB0aGUgYE5FVEZJTFRFUl9JTkdSRVNTYCBpdHNlbGYuXG5cbkknbSBqdXN0IHF1aWNrbHkgY29uZmlybWluZyB0aGF0IGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIGJhc2ljIGJ1dCBzdGlsbCByZWxldmFudCwgZ290dGEgaW5jbHVkZSB0aG9zZSBpbiB0aGUgbGlzdC5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYE5FVF9DTFNfQUNUYCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBpbmdyZXNzIHBhdGguIEkndmUgZ290IGEgZGVjZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIG5ldGZpbHRlciBpbnRlcm5hbHMsIGJ1dCBpdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc0MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjIxLjkyOTc3NDg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcwNzIyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNfQUNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzAzLVxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjIyLjIwNjg1MDkyMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTYxNzcxMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBOZXR3b3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSB3YW50IHRvIHplcm8gaW4gYXJvdW5kIGxpbmUgNzAyLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBwZXJoYXBzIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYW50aWNpcGF0aW5nIHRoaXMgc2VjdGlvbiB3aWxsIGxpa2VseSBkZWFsIHdpdGggYSBzcGVjaWZpYyBxdWV1aW5nIGRpc2NpcGxpbmUgb3IgYSByZWxldmFudCBmZWF0dXJlIHNldCByZWxhdGVkIHRvIHRyYWZmaWMgc2hhcGluZyBvciBRb1MuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGNvbm5lY3Rpb25zIHdlIGNhbiBwdWxsIG91dCBvZiBpdC4gSSdtIGhvcGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB3aWxsIGluZm9ybSBob3cgd2UgaGFuZGxlIHRyYWZmaWMgc2hhcGluZywgdGhlIG9wdGlvbnMgd2UgaGF2ZSBhbmQgaG93IGl0IGFsbCB3b3JrcyB1bmRlciB0aGUgaG9vZC4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlYWxseSBpbnRlcmVzdGluZywgcGVyaGFwcyBldmVuIG9ic2N1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMToyNS43Njg2MjY3MzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5NTpcXHRcXHQgIG1hdGNoZXMuXFxuIDY5NjpcXHRcXHQgIEN1cnJlbnQgc3VwcG9ydGVkIG1hdGNoIGlzIFxcXCJwb2xpY3lcXFwiIHdoaWNoIGFsbG93cyBwYWNrZXQgY2xhc3NpZmljYXRpb25cXG4gNjk3OlxcdFxcdCAgYmFzZWQgb24gSVBzZWMgcG9saWN5IHRoYXQgd2FzIHVzZWQgZHVyaW5nIGRlY2Fwc3VsYXRpb25cXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDcwMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlbV9pcHQuXFxuIDcwMTpcXHRcXG4gNzAyOlxcdGNvbmZpZyBORVRfQ0xTX0FDVFxcbiA3MDM6XFx0XFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG4gNzA0OlxcdFxcdHNlbGVjdCBORVRfQ0xTXFxuIDcwNTpcXHRcXHRzZWxlY3QgTkVUX1hHUkVTU1xcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gQWN0aW9uc1xcbiA3MDg6XFx0XFx0ICBnZXQgYXR0YWNoZWQgdG8gY2xhc3NpZmllcnMgYW5kIGFyZSBpbnZva2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bFxcbiA3MDk6XFx0XFx0ICBjbGFzc2lmaWNhdGlvbi4gVGhleSBhcmUgdXNlZCB0byBvdmVyd3JpdGUgdGhlIGNsYXNzaWZpY2F0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjI1Ljc2ODc1OTUzMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTY4MDY1Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgbm8gbmV3IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgaW50cm9kdWNlZCBmb3IgYE5FVF9DTFNfQUNUYC4gVGhhdCdzIGdvb2QuIEtlZXBzIHRoaW5ncyBjbGVhbi5cblxuTGV0IG1lIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgaW4gbXkgaGVhZDogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYE5GX0ZMT1dfVEFCTEVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORVRGSUxURVJfSU5HUkVTU2AuIEkga25vdyB0aG9zZSBhcmUgYWxsIHBvdGVudGlhbGx5IGluIHBsYXkgaGVyZS5cblxuTXkgZm9jdXMgaXMgb24gdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzLCBpZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbi4gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgYSBmYWlsdXJlIGR1cmluZyBwYWNrZXQgZGVmcmFnbWVudGF0aW9uLCBzbyBpdCdzIGEgZnVuY3Rpb25hbCBmaXggd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtLiAgQW55b25lIHVzaW5nIHRyYWZmaWMgY29udHJvbCBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMgY291bGQgYmUgYWZmZWN0ZWQuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2suLi4gc2hvdWxkIEkgZXhwbGljaXRseSBpbmNsdWRlIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2A/IFRoYXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgc28gaXQgbWlnaHQgYmUgaW5saW5lZC4gQnV0LCBpdCdzIHNhZmVyIHRvIGluY2x1ZGUgaXQganVzdCB0byBiZSBzdXJlLlxuXG5IYW5nIG9uLiBMZXQgbWUgbG9vayBhdCB0aGlzIGB0Y2ZfY3RfYWN0YCBmdW5jdGlvbiBhZ2Fpbi4gIEFoLCByaWdodC4gSXQncyBub3Qgc3RhdGljLiBJdCdzIG1hcmtlZCBhcyBgVENfSU5ESVJFQ1RfU0NPUEVgLCB3aGljaCAqdXN1YWxseSogbWVhbnMgaXQncyBgZXh0ZXJuYCBvciBzdGF0aWMgZGVwZW5kaW5nIG9uIHJldHBvbGluZSBjb25maWd1cmF0aW9ucywgYnV0IGluIHRoaXMgY2FzZSwgaXQncyBhY3R1YWxseSBleHBvcnRlZCB2aWEgb3BzLiAgU28gZGVmaW5pdGVseSBpbmNsdWRlIGB0Y2ZfY3RfYWN0YC5cblxuQWxyaWdodCwgSSdtIGNvbWZvcnRhYmxlIHdpdGggdGhhdC4gTGV0J3MgY2FsbCB0aGlzIHNldCBvZiByZXN1bHRzIHJlYWR5IHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjQxLCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjMyLjMzNjgyNzg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNDczMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQUNUX0NUXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2N0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQUNUX0NUXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2N0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 11:02:01 +0000 UTC FinishedAt: 2026-08-05 11:21:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_CT", "NET_CLS_ACT", "NF_CONNTRACK", "NF_FLOW_TABLE", "NF_TABLES", "NETFILTER_INGRESS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_ACT_CT", "NET_CLS_ACT", "NF_CONNTRACK", "NF_FLOW_TABLE", "NF_TABLES", "NETFILTER_INGRESS" ], "series_id": "7f67d449-69c9-4891-b033-8688fcf719a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcf_ct_act" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9BQ1RfQ1QmIzM0OywKICAgICYjMzQ7TkVUX0NMU19BQ1QmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9JTkdSRVNTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNmX2N0X2FjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBza2IgbWVtb3J5IGxlYWsgaW4gdGhlIGBhY3RfY3RgIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gd2hlbiBwYWNrZXQgZGVmcmFnbWVudGF0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZy90YyBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBjb25maWd1cmluZyB0YyBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMmVmYzljMjA2NGYxNDIzMWY1MTYwMjk5Y2ExMGRiOTNkYWFhMmI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxMToyMDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2N0LmMgYi9uZXQvc2NoZWQvYWN0X2N0LmNcbmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvYWN0X2N0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9hY3RfY3QuY1xuQEAgLTg0MCw4ICYjNDM7ODQwLDE1IEBAIHN0YXRpYyBpbnQgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCAqZnJhZylcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7LyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxuJiM0MzsgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0XG4mIzQzOyAqIGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGRlZnJhZ21lbnRhdGlvbiBlbmdpbmU7IG9uY2UgbmZfY3RfaGFuZGxlX1xuJiM0MzsgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xuJiM0MzsgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuXG4mIzQzOyAqL1xuIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdFx0ICAgdTggZmFtaWx5LCB1MTYgem9uZSwgYm9vbCAqZGVmcmFnKVxuJiM0MztcdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZyxcbiYjNDM7XHRcdFx0XHQgICBib29sICpza2JfaXNfb3VycylcbiB7XG4gXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcbiBcdHN0cnVjdCB0Y19za2JfY2IgY2I7XG5AQCAtODU5LDggJiM0Mzs4NjYsMTIgQEAgc3RhdGljIGludCB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGVyciA9IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHNrYiwgXHUwMDI2ZnJhZyk7XG4gXHRlbHNlXG4gXHRcdGVyciA9IHRjZl9jdF9pcHY2X2lzX2ZyYWdtZW50KHNrYiwgXHUwMDI2ZnJhZyk7XG4tXHRpZiAoZXJyIHx8ICFmcmFnKVxuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdCpza2JfaXNfb3VycyA9IHRydWU7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0fVxuJiM0MztcdGlmICghZnJhZylcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0Y2IgPSAqdGNfc2tiX2NiKHNrYik7XG4gXHRlcnIgPSBuZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCB6b25lLCBmYW1pbHksIFx1MDAyNnByb3RvLCBcdTAwMjZjYi5tcnUpO1xuQEAgLTk3Nyw2ICYjNDM7OTg4LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbiBcdGludCBuaF9vZnMsIGVyciwgcmV0dmFsO1xuIFx0c3RydWN0IHRjZl9jdF9wYXJhbXMgKnA7XG4gXHRib29sIGFkZF9oZWxwZXIgPSBmYWxzZTtcbiYjNDM7XHRib29sIHNrYl9pc19vdXJzID0gZmFsc2U7XG4gXHRib29sIHNraXBfYWRkID0gZmFsc2U7XG4gXHRib29sIGRlZnJhZyA9IGZhbHNlO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuQEAgLTEwMTIsOSAmIzQzOzEwMjQsMTggQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbiBcdCAqL1xuIFx0bmhfb2ZzID0gc2tiX25ldHdvcmtfb2Zmc2V0KHNrYik7XG4gXHRza2JfcHVsbF9yY3N1bShza2IsIG5oX29mcyk7XG4tXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVx1MDAzZXpvbmUsIFx1MDAyNmRlZnJhZyk7XG4tXHRpZiAoZXJyKVxuJiM0MztcdGVyciA9IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCBmYW1pbHksIHAtXHUwMDNlem9uZSwgXHUwMDI2ZGVmcmFnLFxuJiM0MztcdFx0XHRcdCAgICAgIFx1MDAyNnNrYl9pc19vdXJzKTtcbiYjNDM7XHRpZiAoZXJyKSB7XG4mIzQzO1x0XHQvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkXG4mIzQzO1x0XHQgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrXG4mIzQzO1x0XHQgKiBpdCwgc2luY2Ugbm8gY2FsbGVyIGZyZWVzIGFuIHNrYiBpdCB3YXMgdG9sZCBpdCBubyBsb25nZXJcbiYjNDM7XHRcdCAqIG93bnMuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChza2JfaXNfb3VycylcbiYjNDM7XHRcdFx0Z290byBkcm9wO1xuIFx0XHRnb3RvIG91dF9mcmFnO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpO1xuIFx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0FDVF9DVCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0FDVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0lOR1JFU1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y2ZfY3RfYWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyZWZjOWMyMDY0ZjE0MjMxZjUxNjAyOTljYTEwZGI5M2RhYWEyYjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDExOjIwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9jdC5jIGIvbmV0L3NjaGVkL2FjdF9jdC5jCmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvYWN0X2N0LmMKQEAgLTg0MCw4ICYjNDM7ODQwLDE1IEBAIHN0YXRpYyBpbnQgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCAqZnJhZykKIAlyZXR1cm4gMDsKIH0KIAomIzQzOy8qIE9uIGVycm9yLCB0ZWxscyB0aGUgY2FsbGVyIHdoZXRoZXIgaXQgc3RpbGwgb3ducyBAc2tiIGFuZCBtdXN0IGZyZWUgaXQKJiM0MzsgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0CiYjNDM7ICogYmVmb3JlIGl0IGlzIGhhbmRlZCB0byB0aGUgZGVmcmFnbWVudGF0aW9uIGVuZ2luZTsgb25jZSBuZl9jdF9oYW5kbGVfCiYjNDM7ICogZnJhZ21lbnRzKCkgaGFzIGJlZW4gY2FsbGVkIHRoZSBza2IgaXMgZWl0aGVyIHF1ZXVlZCAoLUVJTlBST0dSRVNTKSBvciBoYXMKJiM0MzsgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuCiYjNDM7ICovCiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCQkgICB1OCBmYW1pbHksIHUxNiB6b25lLCBib29sICpkZWZyYWcpCiYjNDM7CQkJCSAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZywKJiM0MzsJCQkJICAgYm9vbCAqc2tiX2lzX291cnMpCiB7CiAJZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87CiAJc3RydWN0IHRjX3NrYl9jYiBjYjsKQEAgLTg1OSw4ICYjNDM7ODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQllcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsICZhbXA7ZnJhZyk7CiAJZWxzZQogCQllcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsICZhbXA7ZnJhZyk7Ci0JaWYgKGVyciB8fCAhZnJhZykKJiM0MzsJaWYgKGVycikgewomIzQzOwkJKnNrYl9pc19vdXJzID0gdHJ1ZTsKIAkJcmV0dXJuIGVycjsKJiM0MzsJfQomIzQzOwlpZiAoIWZyYWcpCiYjNDM7CQlyZXR1cm4gMDsKIAogCWNiID0gKnRjX3NrYl9jYihza2IpOwogCWVyciA9IG5mX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIHpvbmUsIGZhbWlseSwgJmFtcDtwcm90bywgJmFtcDtjYi5tcnUpOwpAQCAtOTc3LDYgJiM0Mzs5ODgsNyBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCWludCBuaF9vZnMsIGVyciwgcmV0dmFsOwogCXN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwOwogCWJvb2wgYWRkX2hlbHBlciA9IGZhbHNlOwomIzQzOwlib29sIHNrYl9pc19vdXJzID0gZmFsc2U7CiAJYm9vbCBza2lwX2FkZCA9IGZhbHNlOwogCWJvb2wgZGVmcmFnID0gZmFsc2U7CiAJc3RydWN0IG5mX2Nvbm4gKmN0OwpAQCAtMTAxMiw5ICYjNDM7MTAyNCwxOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCSAqLwogCW5oX29mcyA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOwogCXNrYl9wdWxsX3Jjc3VtKHNrYiwgbmhfb2ZzKTsKLQllcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLSZndDt6b25lLCAmYW1wO2RlZnJhZyk7Ci0JaWYgKGVycikKJiM0MzsJZXJyID0gdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIGZhbWlseSwgcC0mZ3Q7em9uZSwgJmFtcDtkZWZyYWcsCiYjNDM7CQkJCSAgICAgICZhbXA7c2tiX2lzX291cnMpOwomIzQzOwlpZiAoZXJyKSB7CiYjNDM7CQkvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkCiYjNDM7CQkgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrCiYjNDM7CQkgKiBpdCwgc2luY2Ugbm8gY2FsbGVyIGZyZWVzIGFuIHNrYiBpdCB3YXMgdG9sZCBpdCBubyBsb25nZXIKJiM0MzsJCSAqIG93bnMuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChza2JfaXNfb3VycykKJiM0MzsJCQlnb3RvIGRyb3A7CiAJCWdvdG8gb3V0X2ZyYWc7CiYjNDM7CX0KIAogCWVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpOwogCWlmIChlcnIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyAoY3QpIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIG1vZGlmeWluZyBgbmV0L3NjaGVkL2FjdF9jdC5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTt2ZSB0d2Vha2VkIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AgdG8gdGVsbCB1cyB3aGV0aGVyIHRoZSBTS0IgKFNvY2tldCBCdWZmZXIpIGlzIHN0aWxsIG93bmVkIGJ5IHRoZSBjYWxsZXIgd2hlbiBhbiBlcnJvciBoYXBwZW5zLiAgVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggdG8gZXJyb3IgaGFuZGxpbmcsIGdlbmVyYWxseS4gSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gdGhhdCBgc2tiX2lzX291cnNgIGZsYWcgbm93LgoKVGhlIG1haW4gY2hhbmdlIGFwcGVhcnMgdG8gYmUgaG93IHRoZSBjb2RlIGhhbmRsZXMgZXJyb3JzIHdpdGhpbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLiBJZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0gYW5kIHRoZSBTS0IgaXMgc3RpbGwgb3VycyBhZnRlciBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLCBgdGNmX2N0X2FjdGAgaXMgbm93IGp1bXBpbmcgdG8gYGRyb3BgIGluc3RlYWQgb2YgYG91dF9mcmFnYC4gIEFoLCByaWdodC4gVGhpcyBkaXJlY3RseSBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayBpZiB0aG9zZSBlYXJseSBmcmFnbWVudCBjaGVja3MgaW4gc29tZXRoaW5nIGxpa2UgYHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50YCBvciBgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnRgIGZhaWwuIFRoaXMgbWFrZXMgc2Vuc2U7IGlmIHRoZSBmcmFnbWVudCBoYW5kbGluZyBmYWlscywgd2UgbmVlZCB0byBlbnN1cmUgdGhlIFNLQiBpcyBwcm9wZXJseSByZWxlYXNlZC4KCkkgbmVlZCB0byBjb25maXJtIHRoaXMuIEkmIzM5O2xsIG9wZW4gdXAgYG5ldC9zY2hlZC9hY3RfY3QuY2AgYW5kIGRpZyBpbi4gQWgsIHllcywgYHRjZl9jdF9hY3RgIGlzIHRoZSB0b3AtbGV2ZWwgYWN0aW9uIGZ1bmN0aW9uIGZvciB0aGUgY29ubnRyYWNrIFRDIGFjdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UuIEl0JiMzOTtzIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSB2aWEgYHRjYCwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZC4KCk5vdywgbGV0IG1lIGZpbmQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBmb3IgYGFjdF9jdC5jYCBhbmQgc2VlIGlmIHRoaXMgbmV3IGJlaGF2aW9yIGlzIGNvbmRpdGlvbmFsIG9yIGFsd2F5cyBlbmFibGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGEgZGVmYXVsdCBmaXggb3IgaWYgdGhlcmUgYXJlIHNjZW5hcmlvcyB3aGVyZSB0aGlzIG5ldyBsb2dpYyBpcyBkaXNhYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RfY3RcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9MzE9b2JqLSQoQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWSkmIzQzOz0gYWN0X3R1bm5lbF9rZXkub1xubmV0L3NjaGVkL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19ORVRfQUNUX0NUKVx0JiM0Mzs9IGFjdF9jdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gSSBzZWUgdGhpcyBgQ09ORklHX05FVF9BQ1RfQ1RgIGZsYWcgbWVudGlvbmVkLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGlzIGFuZCB3aHkgaXQmIzM5O3MgY29taW5nIHVwLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBzbyBJJiMzOTtsbCBkaXZlIGludG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb3IgZXhwbGFuYXRpb25zIGZvciBgTkVUX0FDVF9DVGAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQUNUX0NUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy04NjQtXG5uZXQvc2NoZWQvS2NvbmZpZzo4NjU6Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTkxNi1cbm5ldC9zY2hlZC9LY29uZmlnOjkxNzpjb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE5FVFxfQUNUXF9DVCoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJJiMzOTttIGVzc2VudGlhbGx5IGRpdmluZyBpbnRvIGEgc3BlY2lmaWMgZWxlbWVudCwgYE5FVF9BQ1RfQ1RgLiBUaGUgbGFuZ3VhZ2UgaW1wbGllcyB0aGlzIGlzIGEgY29kZSBhcnRpZmFjdCwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIHBlcmhhcHMgYSBtb2R1bGUgbmFtZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgY3JpdGljYWwgbmV4dCBzdGVwOiAqKkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuKiogSXQmIzM5O3MgdGhlIGNvcmUgcHJpbmNpcGxlLCBlc3BlY2lhbGx5IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIG5ldHdvcmtzLiAKCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxheWVycyBpbnZvbHZlZC4gV2hhdCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gYE5FVF9BQ1RfQ1RgPyBXaGF0IGRvZXMgKml0KiByZWx5IG9uPyBJcyBpdCBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgdGhlIHN5c3RlbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgbGlicmFyeSBjYWxsLCBhIGNvbXBsZXggc2V0IG9mIGludGVyYWN0aW9ucyB3aXRoaW4gYW4gaW5mcmFzdHJ1Y3R1cmUsIG9yIHNvbWV0aGluZyBpbi1iZXR3ZWVuPyBGcm9tIGEgZGVzaWduIHBlcnNwZWN0aXZlLCBteSBjb25jZXJuIGlzIGFib3V0ICoqaW1wYWN0IGFuYWx5c2lzKiouIEEgY2hhbmdlIGhlcmUgY2FuIGNhc2NhZGUgb3V0d2FyZHMgaW4gdW5leHBlY3RlZCB3YXlzLCBzbyBJIG5lZWQgdG8gZm9ybSBhIHJvYnVzdCBtZW50YWwgbWFwLgoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSB0b29scyBhbmQgbWV0aG9kcyBJJiMzOTtsbCB1c2UgdG8gdW5jb3ZlciB0aGVzZSBkZXBlbmRlbmNpZXMuIEFtIEkgcmVhY2hpbmcgZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wsIGdyZXBwaW5nIHRocm91Z2ggc291cmNlIGNvZGUsIG9yIHJlbHlpbmcgb24gZG9jdW1lbnRhdGlvbj8gRG9lcyB0aGUgYnVpbGQgc3lzdGVtIHByb3ZpZGUgZGVwZW5kZW5jeSBncmFwaHMsIG9yIHdpbGwgSSBuZWVkIHRvIG1hbnVhbGx5IHRyYWNlIHRoaW5ncz8gTXkgZ29hbCBpcyB0byBidWlsZCBhIGRldGFpbGVkIGFuZCBhY2N1cmF0ZSBwaWN0dXJlLCBhIG5ldHdvcmsgb2YgcmVsYXRpb25zaGlwcywgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTE3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MTc6XHRjb25maWcgTkVUX0FDVF9DVFxuIDkxODpcdFx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbiA5MTk6XHRcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxuIDkyMDpcdFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbiA5MjE6XHRcdHNlbGVjdCBORl9OQVRfT1ZTIGlmIE5GX05BVFxuIDkyMjpcdFx0aGVscFxuIDkyMzpcdFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHNlbmRpbmcgdGhlIHBhY2tldHMgdG8gY29ubnRyYWNrIG1vZHVsZS5cbiA5MjQ6XHRcbiA5MjU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA5MjY6XHRcbiA5Mjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDkyODpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0LlxuIDkyOTpcdFxuIDkzMDpcdGNvbmZpZyBORVRfQUNUX0dBVEVcbiA5MzE6XHRcdHRyaXN0YXRlIFwmIzM0O0ZyYW1lIGdhdGUgZW50cnkgbGlzdCBjb250cm9sIHRjIGFjdGlvblwmIzM0O1xuIDkzMjpcdFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxuIDkzMzpcdFx0aGVscFxuIDkzNDpcdFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhlIGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNzZWQgYXRcbiA5MzU6XHRcdCAgc3BlY2lmaWMgdGltZSBzbG90IGFuZCBiZSBkcm9wcGVkIGF0IG90aGVyIHNwZWNpZmljIHRpbWUgc2xvdCBieVxuIDkzNjpcdFx0ICB0aGUgZ2F0ZSBlbnRyeSBsaXN0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgZm9yIE9wdGltYWwgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZGVwZW5kZW5jaWVzOiBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQsIGJ1dCB0aGlzIGAoIU5GX05BVCB8fCBORl9OQVQpYCBjb25kaXRpb24gaXMgaW50ZXJlc3RpbmcuIEJhc2ljYWxseSwgaXQgYnVpbGRzIHJlZ2FyZGxlc3Mgb2YgYE5GX05BVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIEhvd2V2ZXIsIGlmIGBORl9OQVRgICppcyogYSBtb2R1bGUsIHRoZW4gSSAqYWxzbyogbmVlZCBgTkVUX0FDVF9DVGAgYXMgYSBtb2R1bGUuIEkgbmVlZCB0byBrZWVwIHRoYXQgcmVsYXRpb25zaGlwIGluIG1pbmQgd2hlbiBJIHN0YXJ0IHRyeWluZyB0byBvcHRpbWl6ZSB0aGluZ3MuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNvIGxldCBtZSBkaXZlIGEgbGl0dGxlIGRlZXBlciBhbmQgY2hlY2sgb3V0IGB0Y2ZfY3RfYWN0YCBhbmQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYC4gU2luY2UgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCBpcyBzdGF0aWMsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQmIzM5O3MgaW5saW5lZC4gQnV0IGB0Y2ZfY3RfYWN0YCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpcywgd2hpY2ggd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGZvciBwcm9maWxpbmcgb3IgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5OiB3aGF0IGFib3V0IGB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudGAgYW5kIGB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudGA/IEp1c3QgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gaXMgaGFuZGxpbmcgZnJhZ21lbnRhdGlvbiBwcm9wZXJseSwgSSBzaG91bGQgY2hlY2sgdGhvc2UgYXMgd2VsbC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9jdF9pcHY0X2lzX2ZyYWdtZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9jdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9hY3RfY3QuYz03OTE9c3RhdGljIHU4IHRjZl9jdF9za2JfbmZfZmFtaWx5KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTgwOC1cbm5ldC9zY2hlZC9hY3RfY3QuYzo4MDk6c3RhdGljIGludCB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sICpmcmFnKVxubmV0L3NjaGVkL2FjdF9jdC5jLTgxMC17XG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jPTg0OT1zdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtODY1LVx0aWYgKGZhbWlseSA9PSBORlBST1RPX0lQVjQpXG5uZXQvc2NoZWQvYWN0X2N0LmM6ODY2Olx0XHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xubmV0L3NjaGVkL2FjdF9jdC5jLTg2Ny1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29ubmVjdGlvbiBUcmFja2luZyBBY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBzdGFydGluZyBhdCBgdGNmX2N0X2FjdGAsIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgYWN0aW9ucyB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuIExldCBtZSBxdWlja2x5IGpvZyBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgdGhhdCBhcmUgbGlrZWx5IGludm9sdmVkIGhlcmUuIFJpZ2h0LCBJIG5lZWQgdG8gY29uc2lkZXIgYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cy4gTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGhvdyB0aGlzIGB0Y2ZfY3RfYWN0YCBmdW5jdGlvbiBpcyBtYWRlIGF2YWlsYWJsZS4gSXMgaXQgZXhwb3J0ZWQgZm9yIG1vZHVsZSB1c2UsIG9yIGlzIGl0IGNvbXBpbGVkIHN0YXRpY2FsbHkgaW50byB0aGUgY29yZT8gVW5kZXJzdGFuZGluZyBpdHMgdmlzaWJpbGl0eSB3aWxsIGluZm9ybSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCBhbmQgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9jdF9hY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvYWN0X2N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2FjdF9jdC5jPTkwOD1zdGF0aWMgdm9pZCB0Y2ZfY3RfcGFyYW1zX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTE1LVxubmV0L3NjaGVkL2FjdF9jdC5jOjkxNjpzdGF0aWMgdm9pZCB0Y2ZfY3RfYWN0X3NldF9tYXJrKHN0cnVjdCBuZl9jb25uICpjdCwgdTMyIG1hcmssIHUzMiBtYXNrKVxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNy17XG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTkzMi1cbm5ldC9zY2hlZC9hY3RfY3QuYzo5MzM6c3RhdGljIHZvaWQgdGNmX2N0X2FjdF9zZXRfbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9zY2hlZC9hY3RfY3QuYy05MzQtXHRcdFx0XHQgIHUzMiAqbGFiZWxzLFxuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYy05NDYtXG5uZXQvc2NoZWQvYWN0X2N0LmM6OTQ3OnN0YXRpYyBpbnQgdGNmX2N0X2FjdF9uYXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zY2hlZC9hY3RfY3QuYy05NDgtXHRcdFx0ICBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTk3OC1cbm5ldC9zY2hlZC9hY3RfY3QuYzo5Nzk6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcbm5ldC9zY2hlZC9hY3RfY3QuYy05ODAtXHRcdFx0XHQgc3RydWN0IHRjZl9yZXN1bHQgKnJlcylcbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTA3Ny1cbm5ldC9zY2hlZC9hY3RfY3QuYzoxMDc4Olx0ZXJyID0gdGNmX2N0X2FjdF9uYXQoc2tiLCBjdCwgY3RpbmZvLCBwLVx1MDAzZWN0X2FjdGlvbiwgXHUwMDI2cC1cdTAwM2VyYW5nZSwgY29tbWl0KTtcbm5ldC9zY2hlZC9hY3RfY3QuYy0xMDc5LVx0aWYgKGVyciAhPSBORl9BQ0NFUFQpXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTEwOTktXHRpZiAoY29tbWl0KSB7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMDpcdFx0dGNmX2N0X2FjdF9zZXRfbWFyayhjdCwgcC1cdTAwM2VtYXJrLCBwLVx1MDAzZW1hcmtfbWFzayk7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMTpcdFx0dGNmX2N0X2FjdF9zZXRfbGFiZWxzKGN0LCBwLVx1MDAzZWxhYmVscywgcC1cdTAwM2VsYWJlbHNfbWFzayk7XG5uZXQvc2NoZWQvYWN0X2N0LmMtMTEwMi1cbi0tXG5uZXQvc2NoZWQvYWN0X2N0LmM9MTYzNj1zdGF0aWMgaW50IHRjZl9jdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXG4tLVxubmV0L3NjaGVkL2FjdF9jdC5jLTE2NDYtXHRcdGVudHJ5LVx1MDAzZWlkID0gRkxPV19BQ1RJT05fQ1Q7XG5uZXQvc2NoZWQvYWN0X2N0LmM6MTY0NzpcdFx0ZW50cnktXHUwMDNlY3QuYWN0aW9uID0gdGNmX2N0X2FjdGlvbihhY3QpO1xubmV0L3NjaGVkL2FjdF9jdC5jLTE2NDgtXHRcdGVudHJ5LVx1MDAzZWN0LnpvbmUgPSB0Y2ZfY3Rfem9uZShhY3QpO1xuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYz0xNjYwPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfY3Rfb3BzID0ge1xuLS1cbm5ldC9zY2hlZC9hY3RfY3QuYy0xNjYzLVx0Lm93bmVyXHRcdD1cdFRISVNfTU9EVUxFLFxubmV0L3NjaGVkL2FjdF9jdC5jOjE2NjQ6XHQuYWN0XHRcdD1cdHRjZl9jdF9hY3QsXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY2NS1cdC5kdW1wXHRcdD1cdHRjZl9jdF9kdW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgVHJhZmZpYyBDb250cm9sIEFjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGBhY3RfY3Rfb3BzYCDigJMgbWVhbmluZywgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIG1lbW9yeSBsZWFrIHNwZWNpZmljYWxseSB3aXRoaW4gYHRjZl9jdF9hY3RgLiBUaGUgbGVhayBvY2N1cnMgd2hlbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgIHJldHVybnMgYW4gZXJyb3IsIHlldCB0aGUgcGFja2V0IGJ1ZmZlciAoYHNrYmApIHJlbWFpbnMgdW5kZXIgdGhlIGNhbGxlciYjMzk7cyBvd25lcnNoaXAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhIGZ1bmN0aW9uYWwgaXNzdWUuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHRob3JvdWdobHkgZnV6emVkIHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIGluIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHVyZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBjdGAgYWN0aW9uLiBUbyByZXByb2R1Y2UgdGhpcywgSSB3b3VsZCBzZXQgdXAgYSB0cmFmZmljIGNvbnRyb2wgcnVsZSB1c2luZyB0aGUgYGN0YCBhY3Rpb24gYW5kIGZlZWQgaXQgZnJhZ21lbnRlZCBwYWNrZXRzLgoKVG8gdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gSSYjMzk7bGwgYWxzbyBkb3VibGUgY2hlY2sgYE5GX0ZMT1dfVEFCTEVgIGZvciBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGFzIHdlbGwuIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIHRoYXQgdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wgaXMgdGhlIHByaW1hcnkgcG9pbnQgb2YgbW9kaWZpY2F0aW9uLCBhcyBpdCBpcyB0aGUgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoaXMgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0ZMT1dfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTcwMT1lbmRpZiAjIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwNC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcxMTpjb25maWcgTkZfRkxPV19UQUJMRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cdGJvb2wgXCYjMzQ7U3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgS2NvbmZpZyBMYWJ5cmludGgqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgemVybyBpbiBhcm91bmQgbGluZSA3MTEuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byAqW2luc2VydCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBuZXRmaWx0ZXIgeW91IGFyZSB3b3JraW5nIG9uLCBlLmcuLCBhIG5ldyBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSwgYSBzcGVjaWZpYyBob29rIHBvaW50LCBvciBzb21lIG9ic2N1cmUgdGFibGUgb3B0aW9uXSouIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGxpa2VseSBnb3Zlcm5zICpbbWVudGlvbiB0aGUgZXhwZWN0ZWQgY29uZmlndXJhdGlvbiBpdGVtcyBvciB0aGVpciBnZW5lcmFsIHB1cnBvc2UgYmFzZWQgb24geW91ciBrbm93bGVkZ2Ugb2YgdGhlIGFyZWFdKi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMsIHNlZSBob3cgdGhleSYjMzk7cmUgZ3JvdXBlZCwgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIG9wdGlvbnMgYW5kIGZlYXR1cmVzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yaywgYW5kIGJleW9uZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1zdHJ1Y3R1cmVkIHdpdGggY2xlYXIgYGNvbmZpZ2AgYmxvY2tzLCBgZGVwZW5kcyBvbmAgY2xhdXNlcywgYW5kIG1heWJlIHNvbWUgaGVscGZ1bCBjb21tZW50cy4gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIGhvdyBteSBjb2RlJiMzOTtzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgS2NvbmZpZyBjaG9pY2VzIGlzIGNydWNpYWwgZm9yIGJvdGggcGVyZm9ybWFuY2UgYW5kIHBvcnRhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA1Olx0XHRkZXBlbmRzIG9uIE5GX0ZMT1dfVEFCTEVcbiA3MDY6XHRcdGhlbHBcbiA3MDc6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgc3VwcG9ydC5cbiA3MDg6XHRcbiA3MDk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiA3MTA6XHRcbiA3MTE6XHRjb25maWcgTkZfRkxPV19UQUJMRVxuIDcxMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4gNzEzOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9JTkdSRVNTXG4gNzE0Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDcxNTpcdFx0ZGVwZW5kcyBvbiBORl9UQUJMRVNcbiA3MTY6XHRcdGhlbHBcbiA3MTc6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgZmxvdyB0YWJsZSBjb3JlIGluZnJhc3RydWN0dXJlLlxuIDcxODpcdFxuIDcxOTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuIDcyMDpcdFxuIDcyMTpcdGNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xuIDcyMjpcdFx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuIDcyMzpcdFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXG4gNzI0Olx0XHRkZXBlbmRzIG9uIFBST0NfRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGV4cHJlc3NlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jeSBDaGFpbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHVucGFjayB0aGlzLiBJIHNlZSB0aGF0IHRoZSBgTkZfRkxPV19UQUJMRWAgbW9kdWxlIGhpbmdlcyBvbiBhIGZldyBvdGhlciBrZXkgcGxheWVyczogYE5FVEZJTFRFUl9JTkdSRVNTYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkZfVEFCTEVTYC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyBmbG93IHRhYmxlcyBhcmUgaW50aW1hdGVseSB0aWVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsuIE5vdywgdG8gdHJ1bHkgZ3JvayB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYE5GX0ZMT1dfVEFCTEVgIGFuZCBob3cgaXQgb3BlcmF0ZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgaW4gZGV0YWlsLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBjbGVhci4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiBgTkVURklMVEVSX0lOR1JFU1NgLiBJIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgaG93IGluZ3Jlc3MgZmlsdGVyaW5nIGFuZCBwcm9jZXNzaW5nIGZpdHMgaW50byB0aGlzIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7Q29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjU6Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGluZ3Jlc3Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCoqCgpPa2F5LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgNS4gSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYW5kIGRlcGVuZGVuY2llcy4gSXMgaXQgc3RydWN0dXJlZCBpbnR1aXRpdmVseT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgY2xlYW51cCB0aGF0IGp1bXAgb3V0PyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICBUaGUgbWFpbiBgTkVURklMVEVSYCBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgKGUuZy4sIGBORVRfQ09SRWAsIGBORVRgKS4KKiAgIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdmFyaW91cyBOZXRmaWx0ZXIgc3Vic3lzdGVtczogaXB0YWJsZXMsIG5mdGFibGVzLCBjb25uZWN0aW9uIHRyYWNraW5nLCBldGMuIFdoYXQgb3B0aW9ucyBhcmUgcHJvdmlkZWQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYmUgaW1wYWN0aW5nIHBlcmZvcm1hbmNlIG9yIGNvbXBhdGliaWxpdHk/CiogICBBbnkgZGVmYXVsdCB2YWx1ZXMgdGhhdCBzZWVtIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIG9yIGNvdWxkIGJlbmVmaXQgZnJvbSBzb21lIHN0cmF0ZWdpYyB0d2Vha2luZy4KKiAgIFRoZSBvdmVyYWxsIG9yZ2FuaXphdGlvbi4gRG9lcyBpdCBmb2xsb3cgYSBsb2dpY2FsIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGdvb2QgY29tbWVudHMgYW5kIGV4cGxhbmF0aW9ucz8KKiAgIEFyZSB0aGVyZSBhbnkgc3ltYm9scyB0aGF0IGFwcGVhciB0byBoYXZlIGJlZW4gZGVwcmVjYXRlZCBvciBhcmUgaW4gYSBzdGF0ZSBvZiB0cmFuc2l0aW9uPwoKSeKAmW0gcmVhbGx5IGxvb2tpbmcgZm9yIGhvdyB3ZWxsIHRoZXNlIGNvbmZpZ3VyYXRpb25zIG1hcCB0byB0aGUgYXZhaWxhYmxlIGtlcm5lbCBmZWF0dXJlcy4gSSYjMzk7bSBhaW1pbmcgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoZXJlIHRoZSAmIzM5O2tub2JzJiMzOTsgYXJlIHRvIG1ha2UgZ3JhbnVsYXIgY2hhbmdlcywgaWYgbmVlZGVkLiBUaGlzIHdpbGwgaGVscCBtZSBpZiBJIGhhdmUgdG8gZGVidWcgc29tZSBpcHRhYmxlcyBiZWhhdmlvciBvciBvcHRpbWl6ZSBzb21lIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWUuIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIHF1aWNrIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb25maWd1cmF0aW9uLCBzbyBJIGNhbiBhbnN3ZXIgcXVlc3Rpb25zIHF1aWNrbHkgb3IgZWZmaWNpZW50bHkuIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xuICAgNjpcdFx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdHNlbGVjdCBORVRfSU5HUkVTU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gY2xhc3NpZnkgcGFja2V0cyBmcm9tIGluZ3Jlc3MgdXNpbmcgdGhlIE5ldGZpbHRlclxuICAxMTpcdFx0ICBpbmZyYXN0cnVjdHVyZS5cbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgTkVURklMVEVSX0VHUkVTU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVuYWJsaW5nIEluZ3Jlc3MgRmlsdGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gcHV0dGluZyB0b2dldGhlciB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYE5FVEZJTFRFUl9JTkdSRVNTYC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZOKAlGl0IHJlbGllcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQsIGZvdW5kYXRpb25hbCBzdHVmZi4gQW5kIHRoZW4sIGdvaW5nIHRocm91Z2ggdGhlIGRlcGVuZGVuY2llcywgbGV0JiMzOTtzIGluY2x1ZGU6IGBORVRfQUNUX0NUYCwgYE5FVF9DTFNfQUNUYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9GTE9XX1RBQkxFYCwgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgZXNzZW50aWFscywgcmlnaHQ/IEFuZCwgb2J2aW91c2x5LCB0aGUgYE5FVEZJTFRFUl9JTkdSRVNTYCBpdHNlbGYuCgpJJiMzOTttIGp1c3QgcXVpY2tseSBjb25maXJtaW5nIHRoYXQgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgYmFzaWMgYnV0IHN0aWxsIHJlbGV2YW50LCBnb3R0YSBpbmNsdWRlIHRob3NlIGluIHRoZSBsaXN0LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYE5FVF9DTFNfQUNUYCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgaW5ncmVzcyBwYXRoLiBJJiMzOTt2ZSBnb3QgYSBkZWNlbnQgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0ZmlsdGVyIGludGVybmFscywgYnV0IGl0IG5ldmVyIGh1cnRzIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19BQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgTmV0d29yayBTY2hlZHVsaW5nKioKCkFscmlnaHQsIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSB3YW50IHRvIHplcm8gaW4gYXJvdW5kIGxpbmUgNzAyLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBwZXJoYXBzIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGlzIHNlY3Rpb24gd2lsbCBsaWtlbHkgZGVhbCB3aXRoIGEgc3BlY2lmaWMgcXVldWluZyBkaXNjaXBsaW5lIG9yIGEgcmVsZXZhbnQgZmVhdHVyZSBzZXQgcmVsYXRlZCB0byB0cmFmZmljIHNoYXBpbmcgb3IgUW9TLiBMZXQmIzM5O3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgY29ubmVjdGlvbnMgd2UgY2FuIHB1bGwgb3V0IG9mIGl0LiBJJiMzOTttIGhvcGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB3aWxsIGluZm9ybSBob3cgd2UgaGFuZGxlIHRyYWZmaWMgc2hhcGluZywgdGhlIG9wdGlvbnMgd2UgaGF2ZSBhbmQgaG93IGl0IGFsbCB3b3JrcyB1bmRlciB0aGUgaG9vZC4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlYWxseSBpbnRlcmVzdGluZywgcGVyaGFwcyBldmVuIG9ic2N1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2OTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY5NTpcdFx0ICBtYXRjaGVzLlxuIDY5NjpcdFx0ICBDdXJyZW50IHN1cHBvcnRlZCBtYXRjaCBpcyBcJiMzNDtwb2xpY3lcJiMzNDsgd2hpY2ggYWxsb3dzIHBhY2tldCBjbGFzc2lmaWNhdGlvblxuIDY5NzpcdFx0ICBiYXNlZCBvbiBJUHNlYyBwb2xpY3kgdGhhdCB3YXMgdXNlZCBkdXJpbmcgZGVjYXBzdWxhdGlvblxuIDY5ODpcdFxuIDY5OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gNzAwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlbV9pcHQuXG4gNzAxOlx0XG4gNzAyOlx0Y29uZmlnIE5FVF9DTFNfQUNUXG4gNzAzOlx0XHRib29sIFwmIzM0O0FjdGlvbnNcJiMzNDtcbiA3MDQ6XHRcdHNlbGVjdCBORVRfQ0xTXG4gNzA1Olx0XHRzZWxlY3QgTkVUX1hHUkVTU1xuIDcwNjpcdFx0aGVscFxuIDcwNzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gQWN0aW9uc1xuIDcwODpcdFx0ICBnZXQgYXR0YWNoZWQgdG8gY2xhc3NpZmllcnMgYW5kIGFyZSBpbnZva2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bFxuIDcwOTpcdFx0ICBjbGFzc2lmaWNhdGlvbi4gVGhleSBhcmUgdXNlZCB0byBvdmVyd3JpdGUgdGhlIGNsYXNzaWZpY2F0aW9uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NDEKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBuZXcgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBpbnRyb2R1Y2VkIGZvciBgTkVUX0NMU19BQ1RgLiBUaGF0JiMzOTtzIGdvb2QuIEtlZXBzIHRoaW5ncyBjbGVhbi4KCkxldCBtZSBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBpbiBteSBoZWFkOiBgTkVUX0FDVF9DVGAsIGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBgTkZfRkxPV19UQUJMRWAsIGBORl9UQUJMRVNgLCBhbmQgYE5FVEZJTFRFUl9JTkdSRVNTYC4gSSBrbm93IHRob3NlIGFyZSBhbGwgcG90ZW50aWFsbHkgaW4gcGxheSBoZXJlLgoKTXkgZm9jdXMgaXMgb24gdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhpcywgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkcmVzc2luZyBhIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBUaGlzIGlzIHRyaWdnZXJlZCBieSBhIGZhaWx1cmUgZHVyaW5nIHBhY2tldCBkZWZyYWdtZW50YXRpb24sIHNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXggd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtLiAgQW55b25lIHVzaW5nIHRyYWZmaWMgY29udHJvbCBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMgY291bGQgYmUgYWZmZWN0ZWQuCgpOb3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIHNob3VsZCBJIGV4cGxpY2l0bHkgaW5jbHVkZSBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgPyBUaGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBCdXQsIGl0JiMzOTtzIHNhZmVyIHRvIGluY2x1ZGUgaXQganVzdCB0byBiZSBzdXJlLgoKSGFuZyBvbi4gTGV0IG1lIGxvb2sgYXQgdGhpcyBgdGNmX2N0X2FjdGAgZnVuY3Rpb24gYWdhaW4uICBBaCwgcmlnaHQuIEl0JiMzOTtzIG5vdCBzdGF0aWMuIEl0JiMzOTtzIG1hcmtlZCBhcyBgVENfSU5ESVJFQ1RfU0NPUEVgLCB3aGljaCAqdXN1YWxseSogbWVhbnMgaXQmIzM5O3MgYGV4dGVybmAgb3Igc3RhdGljIGRlcGVuZGluZyBvbiByZXRwb2xpbmUgY29uZmlndXJhdGlvbnMsIGJ1dCBpbiB0aGlzIGNhc2UsIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9ydGVkIHZpYSBvcHMuICBTbyBkZWZpbml0ZWx5IGluY2x1ZGUgYHRjZl9jdF9hY3RgLgoKQWxyaWdodCwgSSYjMzk7bSBjb21mb3J0YWJsZSB3aXRoIHRoYXQuIExldCYjMzk7cyBjYWxsIHRoaXMgc2V0IG9mIHJlc3VsdHMgcmVhZHkgdG8gZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfQUNUX0NUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9jdF9hY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfQUNUX0NUJiMzNDssCiAgICAmIzM0O05FVF9DTFNfQUNUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfSU5HUkVTUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjZl9jdF9hY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6MzUuNzE2MjMwNjc0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTMwOTkzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0FDVF9DVFwiLFxuICAgIFwiTkVUX0NMU19BQ1RcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORVRGSUxURVJfSU5HUkVTU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjZl9jdF9hY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBza2IgbWVtb3J5IGxlYWsgaW4gdGhlIGBhY3RfY3RgIHRyYWZmaWMgY29udHJvbCBhY3Rpb24gd2hlbiBwYWNrZXQgZGVmcmFnbWVudGF0aW9uIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZy90YyBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSBjb25maWd1cmluZyB0YyBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM1LjcxNjI0MjIxNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwNDkxMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTJlZmM5YzIwNjRmMTQyMzFmNTE2MDI5OWNhMTBkYjkzZGFhYTJiOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDExOjIwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfY3QuYyBiL25ldC9zY2hlZC9hY3RfY3QuY1xcbmluZGV4IGJlNTM1YTI2MWZhMDQuLmUyNTA5NjljODRhY2EgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL2FjdF9jdC5jXFxuKysrIGIvbmV0L3NjaGVkL2FjdF9jdC5jXFxuQEAgLTg0MCw4ICs4NDAsMTUgQEAgc3RhdGljIGludCB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sICpmcmFnKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rLyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxcbisgKiBpdHNlbGYuICBAc2tiIGlzIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIGJlbG93IHJlamVjdCB0aGUgcGFja2V0XFxuKyAqIGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGRlZnJhZ21lbnRhdGlvbiBlbmdpbmU7IG9uY2UgbmZfY3RfaGFuZGxlX1xcbisgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xcbisgKiBhbHJlYWR5IGJlZW4gZnJlZWQgYnkgaXQuXFxuKyAqL1xcbiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0XFx0ICAgdTggZmFtaWx5LCB1MTYgem9uZSwgYm9vbCAqZGVmcmFnKVxcbitcXHRcXHRcXHRcXHQgICB1OCBmYW1pbHksIHUxNiB6b25lLCBib29sICpkZWZyYWcsXFxuK1xcdFxcdFxcdFxcdCAgIGJvb2wgKnNrYl9pc19vdXJzKVxcbiB7XFxuIFxcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xcbiBcXHRzdHJ1Y3QgdGNfc2tiX2NiIGNiO1xcbkBAIC04NTksOCArODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFxcdTAwMjZmcmFnKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRlcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsIFxcdTAwMjZmcmFnKTtcXG4tXFx0aWYgKGVyciB8fCAhZnJhZylcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHQqc2tiX2lzX291cnMgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHR9XFxuK1xcdGlmICghZnJhZylcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRjYiA9ICp0Y19za2JfY2Ioc2tiKTtcXG4gXFx0ZXJyID0gbmZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgem9uZSwgZmFtaWx5LCBcXHUwMDI2cHJvdG8sIFxcdTAwMjZjYi5tcnUpO1xcbkBAIC05NzcsNiArOTg4LDcgQEAgVENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG4gXFx0aW50IG5oX29mcywgZXJyLCByZXR2YWw7XFxuIFxcdHN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwO1xcbiBcXHRib29sIGFkZF9oZWxwZXIgPSBmYWxzZTtcXG4rXFx0Ym9vbCBza2JfaXNfb3VycyA9IGZhbHNlO1xcbiBcXHRib29sIHNraXBfYWRkID0gZmFsc2U7XFxuIFxcdGJvb2wgZGVmcmFnID0gZmFsc2U7XFxuIFxcdHN0cnVjdCBuZl9jb25uICpjdDtcXG5AQCAtMTAxMiw5ICsxMDI0LDE4IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfY3RfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXFxuIFxcdCAqL1xcbiBcXHRuaF9vZnMgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcXG4gXFx0c2tiX3B1bGxfcmNzdW0oc2tiLCBuaF9vZnMpO1xcbi1cXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVxcdTAwM2V6b25lLCBcXHUwMDI2ZGVmcmFnKTtcXG4tXFx0aWYgKGVycilcXG4rXFx0ZXJyID0gdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIGZhbWlseSwgcC1cXHUwMDNlem9uZSwgXFx1MDAyNmRlZnJhZyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNrYl9pc19vdXJzKTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHQvKiBUaGUgc2tiIGlzIHN0aWxsIG91cnMgb25seSB3aGVuIHRoZSBoZWFkZXIgY2hlY2tzIHJlamVjdGVkXFxuK1xcdFxcdCAqIGl0OyByZXR1cm5pbmcgVENfQUNUX0NPTlNVTUVEIGZvciBzdWNoIGEgcGFja2V0IHdvdWxkIGxlYWtcXG4rXFx0XFx0ICogaXQsIHNpbmNlIG5vIGNhbGxlciBmcmVlcyBhbiBza2IgaXQgd2FzIHRvbGQgaXQgbm8gbG9uZ2VyXFxuK1xcdFxcdCAqIG93bnMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc2tiX2lzX291cnMpXFxuK1xcdFxcdFxcdGdvdG8gZHJvcDtcXG4gXFx0XFx0Z290byBvdXRfZnJhZztcXG4rXFx0fVxcbiBcXG4gXFx0ZXJyID0gbmZfY3Rfc2tiX25ldHdvcmtfdHJpbShza2IsIGZhbWlseSk7XFxuIFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM2LjIyNzY5MjM0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2MjQxNjEzOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9BQ1RfQ1RcIixcbiAgICBcIk5FVF9DTFNfQUNUXCIsXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX0lOR1JFU1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y2ZfY3RfYWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gc2tiIG1lbW9yeSBsZWFrIGluIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uIHdoZW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgY29uZmlndXJpbmcgdGMgcnVsZXMgd2l0aCB0aGUgYGN0YCBhY3Rpb24gYW5kIHNlbmRpbmcgZnJhZ21lbnRlZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMmVmYzljMjA2NGYxNDIzMWY1MTYwMjk5Y2ExMGRiOTNkYWFhMmI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAxMToyMDozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfY3QuYyBiL25ldC9zY2hlZC9hY3RfY3QuY1xuaW5kZXggYmU1MzVhMjYxZmEwNC4uZTI1MDk2OWM4NGFjYSAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9hY3RfY3QuY1xuKysrIGIvbmV0L3NjaGVkL2FjdF9jdC5jXG5AQCAtODQwLDggKzg0MCwxNSBAQCBzdGF0aWMgaW50IHRjZl9jdF9pcHY2X2lzX2ZyYWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgKmZyYWcpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogT24gZXJyb3IsIHRlbGxzIHRoZSBjYWxsZXIgd2hldGhlciBpdCBzdGlsbCBvd25zIEBza2IgYW5kIG11c3QgZnJlZSBpdFxuKyAqIGl0c2VsZi4gIEBza2IgaXMgb3VycyBvbmx5IHdoZW4gdGhlIGhlYWRlciBjaGVja3MgYmVsb3cgcmVqZWN0IHRoZSBwYWNrZXRcbisgKiBiZWZvcmUgaXQgaXMgaGFuZGVkIHRvIHRoZSBkZWZyYWdtZW50YXRpb24gZW5naW5lOyBvbmNlIG5mX2N0X2hhbmRsZV9cbisgKiBmcmFnbWVudHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhlIHNrYiBpcyBlaXRoZXIgcXVldWVkICgtRUlOUFJPR1JFU1MpIG9yIGhhc1xuKyAqIGFscmVhZHkgYmVlbiBmcmVlZCBieSBpdC5cbisgKi9cbiBzdGF0aWMgaW50IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi1cdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZylcbitcdFx0XHRcdCAgIHU4IGZhbWlseSwgdTE2IHpvbmUsIGJvb2wgKmRlZnJhZyxcbitcdFx0XHRcdCAgIGJvb2wgKnNrYl9pc19vdXJzKVxuIHtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIFx0c3RydWN0IHRjX3NrYl9jYiBjYjtcbkBAIC04NTksOCArODY2LDEyIEBAIHN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRlcnIgPSB0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xuIFx0ZWxzZVxuIFx0XHRlcnIgPSB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudChza2IsIFx1MDAyNmZyYWcpO1xuLVx0aWYgKGVyciB8fCAhZnJhZylcbitcdGlmIChlcnIpIHtcbitcdFx0KnNrYl9pc19vdXJzID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGVycjtcbitcdH1cbitcdGlmICghZnJhZylcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHRjYiA9ICp0Y19za2JfY2Ioc2tiKTtcbiBcdGVyciA9IG5mX2N0X2hhbmRsZV9mcmFnbWVudHMobmV0LCBza2IsIHpvbmUsIGZhbWlseSwgXHUwMDI2cHJvdG8sIFx1MDAyNmNiLm1ydSk7XG5AQCAtOTc3LDYgKzk4OCw3IEBAIFRDX0lORElSRUNUX1NDT1BFIGludCB0Y2ZfY3RfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24gKmEsXG4gXHRpbnQgbmhfb2ZzLCBlcnIsIHJldHZhbDtcbiBcdHN0cnVjdCB0Y2ZfY3RfcGFyYW1zICpwO1xuIFx0Ym9vbCBhZGRfaGVscGVyID0gZmFsc2U7XG4rXHRib29sIHNrYl9pc19vdXJzID0gZmFsc2U7XG4gXHRib29sIHNraXBfYWRkID0gZmFsc2U7XG4gXHRib29sIGRlZnJhZyA9IGZhbHNlO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0O1xuQEAgLTEwMTIsOSArMTAyNCwxOCBAQCBUQ19JTkRJUkVDVF9TQ09QRSBpbnQgdGNmX2N0X2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLFxuIFx0ICovXG4gXHRuaF9vZnMgPSBza2JfbmV0d29ya19vZmZzZXQoc2tiKTtcbiBcdHNrYl9wdWxsX3Jjc3VtKHNrYiwgbmhfb2ZzKTtcbi1cdGVyciA9IHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzKG5ldCwgc2tiLCBmYW1pbHksIHAtXHUwMDNlem9uZSwgXHUwMDI2ZGVmcmFnKTtcbi1cdGlmIChlcnIpXG4rXHRlcnIgPSB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50cyhuZXQsIHNrYiwgZmFtaWx5LCBwLVx1MDAzZXpvbmUsIFx1MDAyNmRlZnJhZyxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnNrYl9pc19vdXJzKTtcbitcdGlmIChlcnIpIHtcbitcdFx0LyogVGhlIHNrYiBpcyBzdGlsbCBvdXJzIG9ubHkgd2hlbiB0aGUgaGVhZGVyIGNoZWNrcyByZWplY3RlZFxuK1x0XHQgKiBpdDsgcmV0dXJuaW5nIFRDX0FDVF9DT05TVU1FRCBmb3Igc3VjaCBhIHBhY2tldCB3b3VsZCBsZWFrXG4rXHRcdCAqIGl0LCBzaW5jZSBubyBjYWxsZXIgZnJlZXMgYW4gc2tiIGl0IHdhcyB0b2xkIGl0IG5vIGxvbmdlclxuK1x0XHQgKiBvd25zLlxuK1x0XHQgKi9cbitcdFx0aWYgKHNrYl9pc19vdXJzKVxuK1x0XHRcdGdvdG8gZHJvcDtcbiBcdFx0Z290byBvdXRfZnJhZztcbitcdH1cbiBcbiBcdGVyciA9IG5mX2N0X3NrYl9uZXR3b3JrX3RyaW0oc2tiLCBmYW1pbHkpO1xuIFx0aWYgKGVycilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjM2LjIyNzY5NDUzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTg3ODc1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyAoY3QpIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIG1vZGlmeWluZyBgbmV0L3NjaGVkL2FjdF9jdC5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3ZlIHR3ZWFrZWQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCB0byB0ZWxsIHVzIHdoZXRoZXIgdGhlIFNLQiAoU29ja2V0IEJ1ZmZlcikgaXMgc3RpbGwgb3duZWQgYnkgdGhlIGNhbGxlciB3aGVuIGFuIGVycm9yIGhhcHBlbnMuICBUaGF0J3MgYSBnb29kIGFwcHJvYWNoIHRvIGVycm9yIGhhbmRsaW5nLCBnZW5lcmFsbHkuIEkgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoYXQgYHNrYl9pc19vdXJzYCBmbGFnIG5vdy5cblxuVGhlIG1haW4gY2hhbmdlIGFwcGVhcnMgdG8gYmUgaG93IHRoZSBjb2RlIGhhbmRsZXMgZXJyb3JzIHdpdGhpbiBgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHNgLiBJZiB0aGVyZSdzIGEgcHJvYmxlbSBhbmQgdGhlIFNLQiBpcyBzdGlsbCBvdXJzIGFmdGVyIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AsIGB0Y2ZfY3RfYWN0YCBpcyBub3cganVtcGluZyB0byBgZHJvcGAgaW5zdGVhZCBvZiBgb3V0X2ZyYWdgLiAgQWgsIHJpZ2h0LiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgcG90ZW50aWFsIG1lbW9yeSBsZWFrIGlmIHRob3NlIGVhcmx5IGZyYWdtZW50IGNoZWNrcyBpbiBzb21ldGhpbmcgbGlrZSBgdGNmX2N0X2lwdjRfaXNfZnJhZ21lbnRgIG9yIGB0Y2ZfY3RfaXB2Nl9pc19mcmFnbWVudGAgZmFpbC4gVGhpcyBtYWtlcyBzZW5zZTsgaWYgdGhlIGZyYWdtZW50IGhhbmRsaW5nIGZhaWxzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgU0tCIGlzIHByb3Blcmx5IHJlbGVhc2VkLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJ2xsIG9wZW4gdXAgYG5ldC9zY2hlZC9hY3RfY3QuY2AgYW5kIGRpZyBpbi4gQWgsIHllcywgYHRjZl9jdF9hY3RgIGlzIHRoZSB0b3AtbGV2ZWwgYWN0aW9uIGZ1bmN0aW9uIGZvciB0aGUgY29ubnRyYWNrIFRDIGFjdGlvbi4gQ2xlYXJseSwgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UuIEl0J3MgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIHZpYSBgdGNgLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLlxuXG5Ob3csIGxldCBtZSBmaW5kIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgZm9yIGBhY3RfY3QuY2AgYW5kIHNlZSBpZiB0aGlzIG5ldyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBvciBhbHdheXMgZW5hYmxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGRlZmF1bHQgZml4IG9yIGlmIHRoZXJlIGFyZSBzY2VuYXJpb3Mgd2hlcmUgdGhpcyBuZXcgbG9naWMgaXMgZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0MS45MjY0ODYxODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI4MTEwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWN0X2N0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTMxPW9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpKz0gYWN0X3R1bm5lbF9rZXkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfTkVUX0FDVF9DVClcXHQrPSBhY3RfY3Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0zMy1vYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NDEuOTk5MzAxOTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzNDgwOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgRGVwZW5kZW5jeSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGlzIGBDT05GSUdfTkVUX0FDVF9DVGAgZmxhZyBtZW50aW9uZWQuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgaXMgYW5kIHdoeSBpdCdzIGNvbWluZyB1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSwgc28gSSdsbCBkaXZlIGludG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzIG9yIGV4cGxhbmF0aW9ucyBmb3IgYE5FVF9BQ1RfQ1RgLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0NS4yNTI3ODY3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQxOTkyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0FDVF9DVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTg1Mz1jb25maWcgTkVUX0FDVF9DT05OTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctODY0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NTpjb25maWcgTkVUX0FDVF9DVElORk9cXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1xcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy05MTYtXFxubmV0L3NjaGVkL0tjb25maWc6OTE3OmNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NDUuMzEyMjEyNDY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDIxMjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE5FVFxcX0FDVFxcX0NUKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSdtIGVzc2VudGlhbGx5IGRpdmluZyBpbnRvIGEgc3BlY2lmaWMgZWxlbWVudCwgYE5FVF9BQ1RfQ1RgLiBUaGUgbGFuZ3VhZ2UgaW1wbGllcyB0aGlzIGlzIGEgY29kZSBhcnRpZmFjdCwgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIG9yIHBlcmhhcHMgYSBtb2R1bGUgbmFtZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgY3JpdGljYWwgbmV4dCBzdGVwOiAqKkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuKiogSXQncyB0aGUgY29yZSBwcmluY2lwbGUsIGVzcGVjaWFsbHkgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gbmV0d29ya3MuIFxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxheWVycyBpbnZvbHZlZC4gV2hhdCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gYE5FVF9BQ1RfQ1RgPyBXaGF0IGRvZXMgKml0KiByZWx5IG9uPyBJcyBpdCBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLCBvciBhIG1vcmUgc3BlY2lhbGl6ZWQgcGllY2Ugb2YgdGhlIHN5c3RlbT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgbGlicmFyeSBjYWxsLCBhIGNvbXBsZXggc2V0IG9mIGludGVyYWN0aW9ucyB3aXRoaW4gYW4gaW5mcmFzdHJ1Y3R1cmUsIG9yIHNvbWV0aGluZyBpbi1iZXR3ZWVuPyBGcm9tIGEgZGVzaWduIHBlcnNwZWN0aXZlLCBteSBjb25jZXJuIGlzIGFib3V0ICoqaW1wYWN0IGFuYWx5c2lzKiouIEEgY2hhbmdlIGhlcmUgY2FuIGNhc2NhZGUgb3V0d2FyZHMgaW4gdW5leHBlY3RlZCB3YXlzLCBzbyBJIG5lZWQgdG8gZm9ybSBhIHJvYnVzdCBtZW50YWwgbWFwLlxuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgdG9vbHMgYW5kIG1ldGhvZHMgSSdsbCB1c2UgdG8gdW5jb3ZlciB0aGVzZSBkZXBlbmRlbmNpZXMuIEFtIEkgcmVhY2hpbmcgZm9yIGEgc3RhdGljIGFuYWx5c2lzIHRvb2wsIGdyZXBwaW5nIHRocm91Z2ggc291cmNlIGNvZGUsIG9yIHJlbHlpbmcgb24gZG9jdW1lbnRhdGlvbj8gRG9lcyB0aGUgYnVpbGQgc3lzdGVtIHByb3ZpZGUgZGVwZW5kZW5jeSBncmFwaHMsIG9yIHdpbGwgSSBuZWVkIHRvIG1hbnVhbGx5IHRyYWNlIHRoaW5ncz8gTXkgZ29hbCBpcyB0byBidWlsZCBhIGRldGFpbGVkIGFuZCBhY2N1cmF0ZSBwaWN0dXJlLCBhIG5ldHdvcmsgb2YgcmVsYXRpb25zaGlwcywgc28gdGhhdCBJIGNhbiBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBsYXRlciBvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIwOjQ5LjQ4NjQyNjY4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNzpcXHRjb25maWcgTkVUX0FDVF9DVFxcbiA5MTg6XFx0XFx0dHJpc3RhdGUgXFxcImNvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXFxcIlxcbiA5MTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxuIDkyMDpcXHRcXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xcbiA5MjE6XFx0XFx0c2VsZWN0IE5GX05BVF9PVlMgaWYgTkZfTkFUXFxuIDkyMjpcXHRcXHRoZWxwXFxuIDkyMzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gYWxsb3cgc2VuZGluZyB0aGUgcGFja2V0cyB0byBjb25udHJhY2sgbW9kdWxlLlxcbiA5MjQ6XFx0XFxuIDkyNTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA5Mjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0LlxcbiA5Mjk6XFx0XFxuIDkzMDpcXHRjb25maWcgTkVUX0FDVF9HQVRFXFxuIDkzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbiA5MzI6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbiA5MzM6XFx0XFx0aGVscFxcbiA5MzQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhlIGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNzZWQgYXRcXG4gOTM1OlxcdFxcdCAgc3BlY2lmaWMgdGltZSBzbG90IGFuZCBiZSBkcm9wcGVkIGF0IG90aGVyIHNwZWNpZmljIHRpbWUgc2xvdCBieVxcbiA5MzY6XFx0XFx0ICB0aGUgZ2F0ZSBlbnRyeSBsaXN0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo0OS40ODY1MDY5NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM3ODkwMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25uZWN0aW9uIFRyYWNraW5nIGZvciBPcHRpbWFsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBkZXBlbmRlbmNpZXM6IGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBOb3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dCwgYnV0IHRoaXMgYCghTkZfTkFUIHx8IE5GX05BVClgIGNvbmRpdGlvbiBpcyBpbnRlcmVzdGluZy4gQmFzaWNhbGx5LCBpdCBidWlsZHMgcmVnYXJkbGVzcyBvZiBgTkZfTkFUYC4gVGhhdCBtYWtlcyBzZW5zZS4gSG93ZXZlciwgaWYgYE5GX05BVGAgKmlzKiBhIG1vZHVsZSwgdGhlbiBJICphbHNvKiBuZWVkIGBORVRfQUNUX0NUYCBhcyBhIG1vZHVsZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCByZWxhdGlvbnNoaXAgaW4gbWluZCB3aGVuIEkgc3RhcnQgdHJ5aW5nIHRvIG9wdGltaXplIHRoaW5ncy5cblxuSSdtIHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gdHJhY2tpbmcsIHNvIGxldCBtZSBkaXZlIGEgbGl0dGxlIGRlZXBlciBhbmQgY2hlY2sgb3V0IGB0Y2ZfY3RfYWN0YCBhbmQgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYC4gU2luY2UgYHRjZl9jdF9oYW5kbGVfZnJhZ21lbnRzYCBpcyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCdzIGlubGluZWQuIEJ1dCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQsIHNvIHRoYXQncyB3aGVyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbiBpcywgd2hpY2ggd2lsbCBsaWtlbHkgYmUgaW1wb3J0YW50IGZvciBwcm9maWxpbmcgb3IgYW5hbHlzaXMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeTogd2hhdCBhYm91dCBgdGNmX2N0X2lwdjRfaXNfZnJhZ21lbnRgIGFuZCBgdGNmX2N0X2lwdjZfaXNfZnJhZ21lbnRgPyBKdXN0IHRvIGJlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIGZyYWdtZW50YXRpb24gcHJvcGVybHksIEkgc2hvdWxkIGNoZWNrIHRob3NlIGFzIHdlbGwuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTQuNDI0NDAwMDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODY1MDg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfY3RfaXB2NF9pc19mcmFnbWVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvYWN0X2N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL2FjdF9jdC5jPTc5MT1zdGF0aWMgdTggdGNmX2N0X3NrYl9uZl9mYW1pbHkoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYy04MDgtXFxubmV0L3NjaGVkL2FjdF9jdC5jOjgwOTpzdGF0aWMgaW50IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgKmZyYWcpXFxubmV0L3NjaGVkL2FjdF9jdC5jLTgxMC17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM9ODQ5PXN0YXRpYyBpbnQgdGNmX2N0X2hhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTg2NS1cXHRpZiAoZmFtaWx5ID09IE5GUFJPVE9fSVBWNClcXG5uZXQvc2NoZWQvYWN0X2N0LmM6ODY2OlxcdFxcdGVyciA9IHRjZl9jdF9pcHY0X2lzX2ZyYWdtZW50KHNrYiwgXFx1MDAyNmZyYWcpO1xcbm5ldC9zY2hlZC9hY3RfY3QuYy04NjctXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMDo1NC41MDMwNTUxMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMzQwMjIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgQWN0aW9uKipcblxuT2theSwgc28gSSdtIHN0YXJ0aW5nIGF0IGB0Y2ZfY3RfYWN0YCwgd2hpY2ggYXBwZWFycyB0byBiZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgY29ubmVjdGlvbiB0cmFja2luZyBhY3Rpb25zIHdpdGhpbiB0aGlzIGZyYW1ld29yay4gTGV0IG1lIHF1aWNrbHkgam9nIG15IG1lbW9yeSBvbiB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0IGFyZSBsaWtlbHkgaW52b2x2ZWQgaGVyZS4gUmlnaHQsIEkgbmVlZCB0byBjb25zaWRlciBgTkVUX0FDVF9DVGAsIGBORVRfQ0xTX0FDVGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX0ZMT1dfVEFCTEVgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IHRoaXMgYHRjZl9jdF9hY3RgIGZ1bmN0aW9uIGlzIG1hZGUgYXZhaWxhYmxlLiBJcyBpdCBleHBvcnRlZCBmb3IgbW9kdWxlIHVzZSwgb3IgaXMgaXQgY29tcGlsZWQgc3RhdGljYWxseSBpbnRvIHRoZSBjb3JlPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaW5mb3JtIGhvdyBpdCdzIGJlaW5nIHVzZWQgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTguMDA2NDU5NTk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzAxMTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y2ZfY3RfYWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9hY3RfY3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvYWN0X2N0LmM9OTA4PXN0YXRpYyB2b2lkIHRjZl9jdF9wYXJhbXNfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM6OTE2OnN0YXRpYyB2b2lkIHRjZl9jdF9hY3Rfc2V0X21hcmsoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgbWFyaywgdTMyIG1hc2spXFxubmV0L3NjaGVkL2FjdF9jdC5jLTkxNy17XFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTMyLVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5MzM6c3RhdGljIHZvaWQgdGNmX2N0X2FjdF9zZXRfbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTM0LVxcdFxcdFxcdFxcdCAgdTMyICpsYWJlbHMsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTQ2LVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5NDc6c3RhdGljIGludCB0Y2ZfY3RfYWN0X25hdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zY2hlZC9hY3RfY3QuYy05NDgtXFx0XFx0XFx0ICBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTc4LVxcbm5ldC9zY2hlZC9hY3RfY3QuYzo5Nzk6VENfSU5ESVJFQ1RfU0NPUEUgaW50IHRjZl9jdF9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtOTgwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzKVxcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTEwNzctXFxubmV0L3NjaGVkL2FjdF9jdC5jOjEwNzg6XFx0ZXJyID0gdGNmX2N0X2FjdF9uYXQoc2tiLCBjdCwgY3RpbmZvLCBwLVxcdTAwM2VjdF9hY3Rpb24sIFxcdTAwMjZwLVxcdTAwM2VyYW5nZSwgY29tbWl0KTtcXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTA3OS1cXHRpZiAoZXJyICE9IE5GX0FDQ0VQVClcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYy0xMDk5LVxcdGlmIChjb21taXQpIHtcXG5uZXQvc2NoZWQvYWN0X2N0LmM6MTEwMDpcXHRcXHR0Y2ZfY3RfYWN0X3NldF9tYXJrKGN0LCBwLVxcdTAwM2VtYXJrLCBwLVxcdTAwM2VtYXJrX21hc2spO1xcbm5ldC9zY2hlZC9hY3RfY3QuYzoxMTAxOlxcdFxcdHRjZl9jdF9hY3Rfc2V0X2xhYmVscyhjdCwgcC1cXHUwMDNlbGFiZWxzLCBwLVxcdTAwM2VsYWJlbHNfbWFzayk7XFxubmV0L3NjaGVkL2FjdF9jdC5jLTExMDItXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmM9MTYzNj1zdGF0aWMgaW50IHRjZl9jdF9vZmZsb2FkX2FjdF9zZXR1cChzdHJ1Y3QgdGNfYWN0aW9uICphY3QsIHZvaWQgKmVudHJ5X2RhdGEsXFxuLS1cXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY0Ni1cXHRcXHRlbnRyeS1cXHUwMDNlaWQgPSBGTE9XX0FDVElPTl9DVDtcXG5uZXQvc2NoZWQvYWN0X2N0LmM6MTY0NzpcXHRcXHRlbnRyeS1cXHUwMDNlY3QuYWN0aW9uID0gdGNmX2N0X2FjdGlvbihhY3QpO1xcbm5ldC9zY2hlZC9hY3RfY3QuYy0xNjQ4LVxcdFxcdGVudHJ5LVxcdTAwM2VjdC56b25lID0gdGNmX2N0X3pvbmUoYWN0KTtcXG4tLVxcbm5ldC9zY2hlZC9hY3RfY3QuYz0xNjYwPXN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfY3Rfb3BzID0ge1xcbi0tXFxubmV0L3NjaGVkL2FjdF9jdC5jLTE2NjMtXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbm5ldC9zY2hlZC9hY3RfY3QuYzoxNjY0OlxcdC5hY3RcXHRcXHQ9XFx0dGNmX2N0X2FjdCxcXG5uZXQvc2NoZWQvYWN0X2N0LmMtMTY2NS1cXHQuZHVtcFxcdFxcdD1cXHR0Y2ZfY3RfZHVtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjA6NTguMDk5NDc1NDA0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODY2MjY3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBUcmFmZmljIENvbnRyb2wgQWN0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYWN0X2N0YCB0cmFmZmljIGNvbnRyb2wgYWN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdGNmX2N0X2FjdGAgaXMgdGhlIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGBhY3RfY3Rfb3BzYCDigJMgbWVhbmluZywgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0IHNlZW1zIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdGNmX2N0X2FjdGAuIFRoZSBsZWFrIG9jY3VycyB3aGVuIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2AgcmV0dXJucyBhbiBlcnJvciwgeWV0IHRoZSBwYWNrZXQgYnVmZmVyIChgc2tiYCkgcmVtYWlucyB1bmRlciB0aGUgY2FsbGVyJ3Mgb3duZXJzaGlwLiBUaGF0J3MgYSBjbGFzc2ljIHNjZW5hcmlvIGZvciBhIGZ1bmN0aW9uYWwgaXNzdWUuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGhvcm91Z2hseSBmdXp6ZWQgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGxpZXMgaW4gcGFja2V0IGRlZnJhZ21lbnRhdGlvbiBmYWlsdXJlIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYGN0YCBhY3Rpb24uIFRvIHJlcHJvZHVjZSB0aGlzLCBJIHdvdWxkIHNldCB1cCBhIHRyYWZmaWMgY29udHJvbCBydWxlIHVzaW5nIHRoZSBgY3RgIGFjdGlvbiBhbmQgZmVlZCBpdCBmcmFnbWVudGVkIHBhY2tldHMuXG5cblRvIHRlc3QgdGhpcyBlZmZlY3RpdmVseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSBhIGZldyBjb25maWd1cmF0aW9uczogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYW5kIGBORl9GTE9XX1RBQkxFYC4gSSdsbCBhbHNvIGRvdWJsZSBjaGVjayBgTkZfRkxPV19UQUJMRWAgZm9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgYXMgd2VsbC4gVGhlIGtleSBoZXJlIGlzIHRvIGNvbmZpcm0gdGhhdCB0aGUgYHRjZl9jdF9hY3RgIHN5bWJvbCBpcyB0aGUgcHJpbWFyeSBwb2ludCBvZiBtb2RpZmljYXRpb24sIGFzIGl0IGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhpcyBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjAzLjc4NjEwNDkzOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwODAxNDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9GTE9XX1RBQkxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXFx0Ym9vbCBcXFwiU3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjA0LjAzNjkxMTg5MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU4MDE2MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTmV0ZmlsdGVyIEtjb25maWcgTGFieXJpbnRoKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBsZXQncyB6ZXJvIGluIGFyb3VuZCBsaW5lIDcxMS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvICpbaW5zZXJ0IHRoZSBzcGVjaWZpYyBhcmVhIG9mIG5ldGZpbHRlciB5b3UgYXJlIHdvcmtpbmcgb24sIGUuZy4sIGEgbmV3IGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLCBhIHNwZWNpZmljIGhvb2sgcG9pbnQsIG9yIHNvbWUgb2JzY3VyZSB0YWJsZSBvcHRpb25dKi4gSSdtIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBsaWtlbHkgZ292ZXJucyAqW21lbnRpb24gdGhlIGV4cGVjdGVkIGNvbmZpZ3VyYXRpb24gaXRlbXMgb3IgdGhlaXIgZ2VuZXJhbCBwdXJwb3NlIGJhc2VkIG9uIHlvdXIga25vd2xlZGdlIG9mIHRoZSBhcmVhXSouIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBzeW1ib2xzLCBzZWUgaG93IHRoZXkncmUgZ3JvdXBlZCwgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIG9wdGlvbnMgYW5kIGZlYXR1cmVzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGZyYW1ld29yaywgYW5kIGJleW9uZC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtc3RydWN0dXJlZCB3aXRoIGNsZWFyIGBjb25maWdgIGJsb2NrcywgYGRlcGVuZHMgb25gIGNsYXVzZXMsIGFuZCBtYXliZSBzb21lIGhlbHBmdWwgY29tbWVudHMuIFVsdGltYXRlbHksIHRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBob3cgbXkgY29kZSdzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyB3aXRoIHRoZSBleGlzdGluZyBuZXRmaWx0ZXIgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUuIFVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgS2NvbmZpZyBjaG9pY2VzIGlzIGNydWNpYWwgZm9yIGJvdGggcGVyZm9ybWFuY2UgYW5kIHBvcnRhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MDcuOTk0OTMwNTE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzA1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzA1OlxcdFxcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBzdXBwb3J0LlxcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDcxMDpcXHRcXG4gNzExOlxcdGNvbmZpZyBORl9GTE9XX1RBQkxFXFxuIDcxMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbiA3MTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xcbiA3MTQ6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNzE1OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTXFxuIDcxNjpcXHRcXHRoZWxwXFxuIDcxNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiA3MjA6XFx0XFxuIDcyMTpcXHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4gNzIyOlxcdFxcdGJvb2wgXFxcIlN1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXFxcIlxcbiA3MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXFxuIDcyNDpcXHRcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MDcuOTk1MjM1MzQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTYwNTM4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBleHByZXNzZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipEZXBlbmRlbmN5IENoYWluIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIGxldCdzIHVucGFjayB0aGlzLiBJIHNlZSB0aGF0IHRoZSBgTkZfRkxPV19UQUJMRWAgbW9kdWxlIGhpbmdlcyBvbiBhIGZldyBvdGhlciBrZXkgcGxheWVyczogYE5FVEZJTFRFUl9JTkdSRVNTYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkZfVEFCTEVTYC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyBmbG93IHRhYmxlcyBhcmUgaW50aW1hdGVseSB0aWVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsuIE5vdywgdG8gdHJ1bHkgZ3JvayB3aGF0J3MgZ29pbmcgb24gd2l0aCBgTkZfRkxPV19UQUJMRWAgYW5kIGhvdyBpdCBvcGVyYXRlcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBpbiBkZXRhaWwuIFRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgYE5FVEZJTFRFUl9JTkdSRVNTYC4gSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGhvdyBpbmdyZXNzIGZpbHRlcmluZyBhbmQgcHJvY2Vzc2luZyBmaXRzIGludG8gdGhpcyBhcmNoaXRlY3R1cmUuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTMuNTUxMjkzNDk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIzMjA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0lOR1JFU1NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yPW1lbnUgXFxcIkNvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNi1cXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMToxMy42MDk1MzE2MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQyNjY3OTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCoqXG5cbk9rYXksIGxldCdzIHB1bGwgdXAgdGhlIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGZpbGUsIGFyb3VuZCBsaW5lIDUuIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9scyBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gSSdtIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhbmQgZGVwZW5kZW5jaWVzLiBJcyBpdCBzdHJ1Y3R1cmVkIGludHVpdGl2ZWx5PyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIHBvdGVudGlhbCByZWZhY3RvcmluZyBvciBjbGVhbnVwIHRoYXQganVtcCBvdXQ/IEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBgTkVURklMVEVSYCBzeW1ib2wgYW5kIGl0cyBkZXBlbmRlbmNpZXMgKGUuZy4sIGBORVRfQ09SRWAsIGBORVRgKS5cbiogICBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHZhcmlvdXMgTmV0ZmlsdGVyIHN1YnN5c3RlbXM6IGlwdGFibGVzLCBuZnRhYmxlcywgY29ubmVjdGlvbiB0cmFja2luZywgZXRjLiBXaGF0IG9wdGlvbnMgYXJlIHByb3ZpZGVkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGVtPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5P1xuKiAgIEFueSBkZWZhdWx0IHZhbHVlcyB0aGF0IHNlZW0gcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgb3IgY291bGQgYmVuZWZpdCBmcm9tIHNvbWUgc3RyYXRlZ2ljIHR3ZWFraW5nLlxuKiAgIFRoZSBvdmVyYWxsIG9yZ2FuaXphdGlvbi4gRG9lcyBpdCBmb2xsb3cgYSBsb2dpY2FsIGhpZXJhcmNoeT8gQXJlIHRoZXJlIGdvb2QgY29tbWVudHMgYW5kIGV4cGxhbmF0aW9ucz9cbiogICBBcmUgdGhlcmUgYW55IHN5bWJvbHMgdGhhdCBhcHBlYXIgdG8gaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgb3IgYXJlIGluIGEgc3RhdGUgb2YgdHJhbnNpdGlvbj9cblxuSeKAmW0gcmVhbGx5IGxvb2tpbmcgZm9yIGhvdyB3ZWxsIHRoZXNlIGNvbmZpZ3VyYXRpb25zIG1hcCB0byB0aGUgYXZhaWxhYmxlIGtlcm5lbCBmZWF0dXJlcy4gSSdtIGFpbWluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hlcmUgdGhlICdrbm9icycgYXJlIHRvIG1ha2UgZ3JhbnVsYXIgY2hhbmdlcywgaWYgbmVlZGVkLiBUaGlzIHdpbGwgaGVscCBtZSBpZiBJIGhhdmUgdG8gZGVidWcgc29tZSBpcHRhYmxlcyBiZWhhdmlvciBvciBvcHRpbWl6ZSBzb21lIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWUuIEknbSB0cnlpbmcgdG8gZ2V0IGEgcXVpY2sgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIGFuc3dlciBxdWVzdGlvbnMgcXVpY2tseSBvciBlZmZpY2llbnRseS4gTGV04oCZcyBzZWUgd2hhdCdzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQ3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTguMDM2MjEzODlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0bWVudSBcXFwiQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIE5FVEZJTFRFUl9JTkdSRVNTXFxuICAgNjpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRzZWxlY3QgTkVUX0lOR1JFU1NcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgVGhpcyBhbGxvd3MgeW91IHRvIGNsYXNzaWZ5IHBhY2tldHMgZnJvbSBpbmdyZXNzIHVzaW5nIHRoZSBOZXRmaWx0ZXJcXG4gIDExOlxcdFxcdCAgaW5mcmFzdHJ1Y3R1cmUuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBORVRGSUxURVJfRUdSRVNTXFxuICAxNDpcXHRcXHRib29sIFxcXCJOZXRmaWx0ZXIgZWdyZXNzIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6MjE6MTguMDM2Mzc2MzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MzM5NDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBJbmdyZXNzIEZpbHRlcmluZyoqXG5cbk9rYXksIHNvIEknbSBwdXR0aW5nIHRvZ2V0aGVyIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgTkVURklMVEVSX0lOR1JFU1NgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJk4oCUaXQgcmVsaWVzIG9uIGJvdGggYElORVRgIGFuZCBgTkVURklMVEVSYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBmb3VuZGF0aW9uYWwgc3R1ZmYuIEFuZCB0aGVuLCBnb2luZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMsIGxldCdzIGluY2x1ZGU6IGBORVRfQUNUX0NUYCwgYE5FVF9DTFNfQUNUYCwgYE5GX0NPTk5UUkFDS2AsIGBORl9GTE9XX1RBQkxFYCwgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgZXNzZW50aWFscywgcmlnaHQ/IEFuZCwgb2J2aW91c2x5LCB0aGUgYE5FVEZJTFRFUl9JTkdSRVNTYCBpdHNlbGYuXG5cbkknbSBqdXN0IHF1aWNrbHkgY29uZmlybWluZyB0aGF0IGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIGJhc2ljIGJ1dCBzdGlsbCByZWxldmFudCwgZ290dGEgaW5jbHVkZSB0aG9zZSBpbiB0aGUgbGlzdC5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYE5FVF9DTFNfQUNUYCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSBpbmdyZXNzIHBhdGguIEkndmUgZ290IGEgZGVjZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIG5ldGZpbHRlciBpbnRlcm5hbHMsIGJ1dCBpdCBuZXZlciBodXJ0cyB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc0MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjIxLjkyOTc3NDg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcwNzIyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNfQUNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDI6Y29uZmlnIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzAzLVxcdGJvb2wgXFxcIkFjdGlvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjIyLjIwNjg1MDkyMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTYxNzcxMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBOZXR3b3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJIHNwZWNpZmljYWxseSB3YW50IHRvIHplcm8gaW4gYXJvdW5kIGxpbmUgNzAyLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBwZXJoYXBzIGEgY3J1Y2lhbCBkZXBlbmRlbmN5IGRlY2xhcmF0aW9uIHRoZXJlLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYW50aWNpcGF0aW5nIHRoaXMgc2VjdGlvbiB3aWxsIGxpa2VseSBkZWFsIHdpdGggYSBzcGVjaWZpYyBxdWV1aW5nIGRpc2NpcGxpbmUgb3IgYSByZWxldmFudCBmZWF0dXJlIHNldCByZWxhdGVkIHRvIHRyYWZmaWMgc2hhcGluZyBvciBRb1MuIExldCdzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGNvbm5lY3Rpb25zIHdlIGNhbiBwdWxsIG91dCBvZiBpdC4gSSdtIGhvcGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB3aWxsIGluZm9ybSBob3cgd2UgaGFuZGxlIHRyYWZmaWMgc2hhcGluZywgdGhlIG9wdGlvbnMgd2UgaGF2ZSBhbmQgaG93IGl0IGFsbCB3b3JrcyB1bmRlciB0aGUgaG9vZC4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlYWxseSBpbnRlcmVzdGluZywgcGVyaGFwcyBldmVuIG9ic2N1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMToyMToyNS43Njg2MjY3MzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY5NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY5NTpcXHRcXHQgIG1hdGNoZXMuXFxuIDY5NjpcXHRcXHQgIEN1cnJlbnQgc3VwcG9ydGVkIG1hdGNoIGlzIFxcXCJwb2xpY3lcXFwiIHdoaWNoIGFsbG93cyBwYWNrZXQgY2xhc3NpZmljYXRpb25cXG4gNjk3OlxcdFxcdCAgYmFzZWQgb24gSVBzZWMgcG9saWN5IHRoYXQgd2FzIHVzZWQgZHVyaW5nIGRlY2Fwc3VsYXRpb25cXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDcwMDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBlbV9pcHQuXFxuIDcwMTpcXHRcXG4gNzAyOlxcdGNvbmZpZyBORVRfQ0xTX0FDVFxcbiA3MDM6XFx0XFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG4gNzA0OlxcdFxcdHNlbGVjdCBORVRfQ0xTXFxuIDcwNTpcXHRcXHRzZWxlY3QgTkVUX1hHUkVTU1xcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0cmFmZmljIGNvbnRyb2wgYWN0aW9ucy4gQWN0aW9uc1xcbiA3MDg6XFx0XFx0ICBnZXQgYXR0YWNoZWQgdG8gY2xhc3NpZmllcnMgYW5kIGFyZSBpbnZva2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bFxcbiA3MDk6XFx0XFx0ICBjbGFzc2lmaWNhdGlvbi4gVGhleSBhcmUgdXNlZCB0byBvdmVyd3JpdGUgdGhlIGNsYXNzaWZpY2F0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjI1Ljc2ODc1OTUzMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTY4MDY1Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgbm8gbmV3IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgaW50cm9kdWNlZCBmb3IgYE5FVF9DTFNfQUNUYC4gVGhhdCdzIGdvb2QuIEtlZXBzIHRoaW5ncyBjbGVhbi5cblxuTGV0IG1lIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgaW4gbXkgaGVhZDogYE5FVF9BQ1RfQ1RgLCBgTkVUX0NMU19BQ1RgLCBgTkZfQ09OTlRSQUNLYCwgYE5GX0ZMT1dfVEFCTEVgLCBgTkZfVEFCTEVTYCwgYW5kIGBORVRGSUxURVJfSU5HUkVTU2AuIEkga25vdyB0aG9zZSBhcmUgYWxsIHBvdGVudGlhbGx5IGluIHBsYXkgaGVyZS5cblxuTXkgZm9jdXMgaXMgb24gdGhlIGB0Y2ZfY3RfYWN0YCBzeW1ib2wuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzLCBpZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbi4gVGhpcyBpcyB0cmlnZ2VyZWQgYnkgYSBmYWlsdXJlIGR1cmluZyBwYWNrZXQgZGVmcmFnbWVudGF0aW9uLCBzbyBpdCdzIGEgZnVuY3Rpb25hbCBmaXggd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcvdGMgc3Vic3lzdGVtLiAgQW55b25lIHVzaW5nIHRyYWZmaWMgY29udHJvbCBydWxlcyB3aXRoIHRoZSBgY3RgIGFjdGlvbiBhbmQgc2VuZGluZyBmcmFnbWVudGVkIHBhY2tldHMgY291bGQgYmUgYWZmZWN0ZWQuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2suLi4gc2hvdWxkIEkgZXhwbGljaXRseSBpbmNsdWRlIGB0Y2ZfY3RfaGFuZGxlX2ZyYWdtZW50c2A/IFRoYXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgc28gaXQgbWlnaHQgYmUgaW5saW5lZC4gQnV0LCBpdCdzIHNhZmVyIHRvIGluY2x1ZGUgaXQganVzdCB0byBiZSBzdXJlLlxuXG5IYW5nIG9uLiBMZXQgbWUgbG9vayBhdCB0aGlzIGB0Y2ZfY3RfYWN0YCBmdW5jdGlvbiBhZ2Fpbi4gIEFoLCByaWdodC4gSXQncyBub3Qgc3RhdGljLiBJdCdzIG1hcmtlZCBhcyBgVENfSU5ESVJFQ1RfU0NPUEVgLCB3aGljaCAqdXN1YWxseSogbWVhbnMgaXQncyBgZXh0ZXJuYCBvciBzdGF0aWMgZGVwZW5kaW5nIG9uIHJldHBvbGluZSBjb25maWd1cmF0aW9ucywgYnV0IGluIHRoaXMgY2FzZSwgaXQncyBhY3R1YWxseSBleHBvcnRlZCB2aWEgb3BzLiAgU28gZGVmaW5pdGVseSBpbmNsdWRlIGB0Y2ZfY3RfYWN0YC5cblxuQWxyaWdodCwgSSdtIGNvbWZvcnRhYmxlIHdpdGggdGhhdC4gTGV0J3MgY2FsbCB0aGlzIHNldCBvZiByZXN1bHRzIHJlYWR5IHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjQxLCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjIxOjMyLjMzNjgyNzg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNDczMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQUNUX0NUXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2N0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQUNUX0NUXCIsXG4gICAgXCJORVRfQ0xTX0FDVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9JTkdSRVNTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNmX2N0X2FjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHNrYiBtZW1vcnkgbGVhayBpbiB0aGUgYGFjdF9jdGAgdHJhZmZpYyBjb250cm9sIGFjdGlvbiB3aGVuIHBhY2tldCBkZWZyYWdtZW50YXRpb24gZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nL3RjIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IGNvbmZpZ3VyaW5nIHRjIHJ1bGVzIHdpdGggdGhlIGBjdGAgYWN0aW9uIGFuZCBzZW5kaW5nIGZyYWdtZW50ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[1] Phase: Succeeded StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 11:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 11:21:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2] Phase: Succeeded StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 11:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 11:21:44 +0000 UTC FinishedAt: 2026-08-05 11:21:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowthrnj/series-workflowthrnj-convert-artifact-3355353371/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 11:21:54 +0000 UTC FinishedAt: 2026-08-05 11:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 11:21:54 +0000 UTC FinishedAt: 2026-08-05 11:38:29 +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:*b0061224-d04e-4c20-8a6f-7490def0c12b,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-workflowthrnj/series-workflowthrnj-convert-artifact-3355353371/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": "67969a59-c6a9-4473-bec3-68895e5e998d", "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-workflowthrnj/series-workflowthrnj-build-action-3644075353/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 11:21:54 +0000 UTC FinishedAt: 2026-08-05 11:38:19 +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:*b0061224-d04e-4c20-8a6f-7490def0c12b,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-workflowthrnj/series-workflowthrnj-convert-artifact-3355353371/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": "67969a59-c6a9-4473-bec3-68895e5e998d", "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-workflowthrnj/series-workflowthrnj-build-action-3644075353/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 11:38:29 +0000 UTC FinishedAt: 2026-08-05 11:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 11:38:29 +0000 UTC FinishedAt: 2026-08-05 11:38:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 11:38:29 +0000 UTC FinishedAt: 2026-08-05 11:38:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 11:38:29 +0000 UTC FinishedAt: 2026-08-05 11:38:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowthrnj/series-workflowthrnj-convert-artifact-18882930/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 11:38:39 +0000 UTC FinishedAt: 2026-08-05 11:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 11:38:39 +0000 UTC FinishedAt: 2026-08-05 11:40:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67969a59-c6a9-4473-bec3-68895e5e998d,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-workflowthrnj/series-workflowthrnj-build-action-3644075353/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-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 11:40:58 +0000 UTC FinishedAt: 2026-08-05 11:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 11:40:58 +0000 UTC FinishedAt: 2026-08-05 11:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 11:40:58 +0000 UTC FinishedAt: 2026-08-05 11:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 11:40:58 +0000 UTC FinishedAt: 2026-08-05 11:58:02 +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:*b0061224-d04e-4c20-8a6f-7490def0c12b,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-workflowthrnj/series-workflowthrnj-convert-artifact-18882930/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": "02ac22f4-f8b1-41ce-bd4a-80a2934f9129", "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-workflowthrnj/series-workflowthrnj-build-action-684597510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 11:40:58 +0000 UTC FinishedAt: 2026-08-05 11:57:52 +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:*b0061224-d04e-4c20-8a6f-7490def0c12b,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-workflowthrnj/series-workflowthrnj-convert-artifact-18882930/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": "02ac22f4-f8b1-41ce-bd4a-80a2934f9129", "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-workflowthrnj/series-workflowthrnj-build-action-684597510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 11:58:02 +0000 UTC FinishedAt: 2026-08-05 11:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 11:58:02 +0000 UTC FinishedAt: 2026-08-05 11:58:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 11:58:02 +0000 UTC FinishedAt: 2026-08-05 12:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 11:58:02 +0000 UTC FinishedAt: 2026-08-05 12:00:18 +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:*02ac22f4-f8b1-41ce-bd4a-80a2934f9129,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-workflowthrnj/series-workflowthrnj-build-action-684597510/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-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +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":["tcf_ct_act"],"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:*67969a59-c6a9-4473-bec3-68895e5e998d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02ac22f4-f8b1-41ce-bd4a-80a2934f9129,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-workflowthrnj/series-workflowthrnj-build-action-3644075353/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-workflowthrnj/series-workflowthrnj-build-action-684597510/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 12:00:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 12:00:35 +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":["tcf_ct_act"],"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-workflowthrnj/series-workflowthrnj-convert-artifact-4268937415/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 12:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 12:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 12:00:28 +0000 UTC FinishedAt: 2026-08-05 12:00:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 12:00:38 +0000 UTC FinishedAt: 2026-08-05 15:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowthrnj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcf_ct_act"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_ACT_CT","NET_CLS_ACT","NF_CONNTRACK","NF_FLOW_TABLE","NF_TABLES","NETFILTER_INGRESS"],"series_id":"7f67d449-69c9-4891-b033-8688fcf719a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 12:00:38 +0000 UTC FinishedAt: 2026-08-05 15:01:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67969a59-c6a9-4473-bec3-68895e5e998d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02ac22f4-f8b1-41ce-bd4a-80a2934f9129,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-workflowthrnj/series-workflowthrnj-build-action-3644075353/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-workflowthrnj/series-workflowthrnj-build-action-684597510/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-workflowthrnj/series-workflowthrnj-convert-artifact-4268937415/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,}