Name: series-workflow794kf Phase: Succeeded StartedAt: 2026-08-02 12:37:34 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[0] Phase: Succeeded StartedAt: 2026-08-02 12:37:34 +0000 UTC FinishedAt: 2026-08-02 12:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 12:37:34 +0000 UTC FinishedAt: 2026-08-02 12:55:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32", "NET_CLS_FLOWER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32", "NET_CLS_FLOWER" ], "series_id": "e04e34a0-4bd6-4941-bbaa-10df42bede29" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tc_new_tfilter", "tc_del_tfilter", "tc_get_tfilter" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX25ld190ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2RlbF90ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2dldF90ZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXImIzM5O3MgZGVzdHJveSBjYWxsYmFjayBjb3VsZCBiZSBjYWxsZWQgd2l0aG91dCB0aGUgcnRubF9sb2NrIGhlbGQgd2hlbiBpdCBpcyByZXF1aXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluaywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEyMzc3NDMyNTQzYTVhOTVjZGZjZDkxYjU5OTlhZDJjOTU3ZjNiOWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjUzOjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTQ0Myw3ICYjNDM7NDQzLDIyIEBAIHN0YXRpYyB2b2lkIHRjZl9jaGFpbl9wdXQoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4pO1xuIHN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcbiBcdFx0XHQgICAgICBib29sIHNpZ19kZXN0cm95LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTtcbiYjNDM7XHQvKiBBIGxvY2tlZCBjbGFzc2lmaWVyJiMzOTtzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcbiYjNDM7XHQgKiBydG5sX2RlcmVmZXJlbmNlKCkgYW5kIG11dGF0ZXMgc2hhcmVkIHN0cnVjdHVyZXMgKGUuZy4gdGhlXG4mIzQzO1x0ICogdGNfdV9jb21tb24gaGFzaCBsaXN0KSB0aGF0IGFyZSBvbmx5IHNhZmUgdW5kZXIgcnRubF9sb2NrLiBXaGVuIGFuXG4mIzQzO1x0ICogdW5sb2NrZWQgY2xhc3NpZmllciYjMzk7cyByZXF1ZXN0IChlLmcuIGZsb3dlciBvbiBpbmdyZXNzKSBsb3NlcyB0aGVcbiYjNDM7XHQgKiB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZSgpIHJhY2UgYW5kIGVuZHMgdXAgZHJvcHBpbmcgdGhlIGxhc3RcbiYjNDM7XHQgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1blxuJiM0MztcdCAqIHdpdGhvdXQgcnRubCBoZWxkLiBUYWtlIGl0IGhlcmUgaW4gdGhhdCBjYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCEodHAtXHUwMDNlb3BzLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ0ZfUFJPVE9fT1BTX0RPSVRfVU5MT0NLRUQpO1xuJiM0MztcbiYjNDM7XHRpZiAobm90X2xvY2tsZXNzKVxuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCB8fCBub3RfbG9ja2xlc3MsIGV4dGFjayk7XG4mIzQzO1x0aWYgKG5vdF9sb2NrbGVzcylcbiYjNDM7XHRcdHJ0bmxfdW5sb2NrKCk7XG4gXHR0Y2ZfcHJvdG9fY291bnRfdXNlc3codHAsIGZhbHNlKTtcbiBcdGlmIChzaWdfZGVzdHJveSlcbiBcdFx0dGNmX3Byb3RvX3NpZ25hbF9kZXN0cm95ZWQodHAtXHUwMDNlY2hhaW4sIHRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZGVsX3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZ2V0X3RmaWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtIHdoZXJlIGEgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTIzNzc0MzI1NDNhNWE5NWNkZmNkOTFiNTk5OWFkMmM5NTdmM2I5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTI6NTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwppbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9jbHNfYXBpLmMKQEAgLTQ0Myw3ICYjNDM7NDQzLDIyIEBAIHN0YXRpYyB2b2lkIHRjZl9jaGFpbl9wdXQoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4pOwogc3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLAogCQkJICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXRwLSZndDtvcHMtJmd0O2Rlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTsKJiM0MzsJLyogQSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIChlLmcuIHUzMl9kZXN0cm95KSB1c2VzCiYjNDM7CSAqIHJ0bmxfZGVyZWZlcmVuY2UoKSBhbmQgbXV0YXRlcyBzaGFyZWQgc3RydWN0dXJlcyAoZS5nLiB0aGUKJiM0MzsJICogdGNfdV9jb21tb24gaGFzaCBsaXN0KSB0aGF0IGFyZSBvbmx5IHNhZmUgdW5kZXIgcnRubF9sb2NrLiBXaGVuIGFuCiYjNDM7CSAqIHVubG9ja2VkIGNsYXNzaWZpZXImIzM5O3MgcmVxdWVzdCAoZS5nLiBmbG93ZXIgb24gaW5ncmVzcykgbG9zZXMgdGhlCiYjNDM7CSAqIHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlKCkgcmFjZSBhbmQgZW5kcyB1cCBkcm9wcGluZyB0aGUgbGFzdAomIzQzOwkgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1bgomIzQzOwkgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS4KJiM0MzsJICovCiYjNDM7CWJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCAmYW1wOyZhbXA7CiYjNDM7CQkhKHRwLSZndDtvcHMtJmd0O2ZsYWdzICZhbXA7IFRDRl9QUk9UT19PUFNfRE9JVF9VTkxPQ0tFRCk7CiYjNDM7CiYjNDM7CWlmIChub3RfbG9ja2xlc3MpCiYjNDM7CQlydG5sX2xvY2soKTsKJiM0MzsJdHAtJmd0O29wcy0mZ3Q7ZGVzdHJveSh0cCwgcnRubF9oZWxkIHx8IG5vdF9sb2NrbGVzcywgZXh0YWNrKTsKJiM0MzsJaWYgKG5vdF9sb2NrbGVzcykKJiM0MzsJCXJ0bmxfdW5sb2NrKCk7CiAJdGNmX3Byb3RvX2NvdW50X3VzZXN3KHRwLCBmYWxzZSk7CiAJaWYgKHNpZ19kZXN0cm95KQogCQl0Y2ZfcHJvdG9fc2lnbmFsX2Rlc3Ryb3llZCh0cC0mZ3Q7Y2hhaW4sIHRwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IFRyYWZmaWMgQ29udHJvbCBTdWJzeXN0ZW0qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjazogYGJvb2wgbm90X2xvY2tsZXNzYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBncmFiIHRoZSBgcnRubF9sb2NrKClgIGJlZm9yZSBjYWxsaW5nIGB0cC0mZ3Q7b3BzLSZndDtkZXN0cm95YC4gVGhlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSBjaGVja2luZyBpZiB3ZSAqZG9uJiMzOTt0KiBhbHJlYWR5IGhvbGQgdGhlIFJUTkwgbG9jayAqYW5kKiBpZiB0aGUgcHJvdG9jb2wgb3BlcmF0aW9uIGl0c2VsZiBpc24mIzM5O3QgZXhwbGljaXRseSBtYXJrZWQgYXMgYmVpbmcgJiMzNDt1bmxvY2tlZCYjMzQ7LiBUaGUgbG9naWMgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGlmIHdlJiMzOTtyZSBub3QgbG9ja2VkIGFuZCB0aGUgb3BlcmF0aW9uIGlzbiYjMzk7dCBkZXNpZ25lZCB0byBiZSBsb2NrbGVzcywgd2UgKm5lZWQqIHRvIGdyYWIgdGhhdCBsb2NrIGJlZm9yZSBjYWxsaW5nIGBkZXN0cm95YC4gTWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBmaXggaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3Vic3lzdGVtLiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2U7IGRlZmluaXRlbHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIHRoaXMgYXMgYSBoaWdoIHByaW9yaXR5IGZvciBvdXIgZnV6emluZyBlZmZvcnRzLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGltZSB0byBjaGVjayB0aGUgYHRjZl9wcm90b19kZXN0cm95YCBmdW5jdGlvbiBpdHNlbGYsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3MgZmluZCBhbGwgdGhlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbiB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9wcm90b19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jPTQ0MT1zdGF0aWMgdm9pZCB0Y2ZfY2hhaW5fcHV0KHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDQyLVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0NDM6c3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NDQtXHRcdFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDcwPXN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDczLVx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZ0cC1cdTAwM2VyZWZjbnQpKVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0NzQ6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwLCBydG5sX2hlbGQsIHRydWUsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ3NS19XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xOTUyPXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvICp0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjQtXHRcdG11dGV4X3VubG9jayhcdTAwMjZjaGFpbi1cdTAwM2VmaWx0ZXJfY2hhaW5fbG9jayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5NjU6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjYtXHRcdHJldHVybiBFUlJfUFRSKC1FQUdBSU4pO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3NC1cdGlmICh0cCkge1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxOTc1Olx0XHR0Y2ZfcHJvdG9fZGVzdHJveSh0cF9uZXcsIHJ0bmxfaGVsZCwgZmFsc2UsIE5VTEwpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc2LVx0XHR0cF9uZXcgPSB0cDtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3Ny1cdH0gZWxzZSBpZiAoZXJyKSB7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5Nzg6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NzktXHRcdHRwX25ldyA9IEVSUl9QVFIoZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzYxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRmxvdyBvZiBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBTdHJ1Y3R1cmVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHRjZl9wcm90b19kZXN0cm95YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbmV2ZXIgd2UmIzM5O3JlIGNsZWFuaW5nIHVwIHByb3RvY29sLXJlbGF0ZWQgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnZva2VkIGZyb20gdHdvIGtleSBwb2ludHM6IGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gTXkgZm9jdXMgbm93IHNoaWZ0cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGZvciAqdGhvc2UqIGZ1bmN0aW9ucy4gS25vd2luZyB3aG8gY2FsbHMgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIHdpbGwgZ2l2ZSBtZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGVuIGFuZCB3aHkgYHRjZl9wcm90b19kZXN0cm95YCBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBlbnRpcmUgbGlmZWN5Y2xlIG9mIHRoZXNlIHByb3RvY29sIGVsZW1lbnRzIHdpdGhpbiB0aGUgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yay4gVGhpcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSB0aGlzIGZpbmFsIGNsZWFudXAgc3RhZ2UuIEkmIzM5O2xsIHBpbnBvaW50IHRoZSBpbnNlcnRpb24gYW5kIGRlbGV0aW9uIHBhdGh3YXlzIHRvIGVuc3VyZSBvdXIgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkIGVmZmljaWVudGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9wcm90b19wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9NDQzPXN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ2OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDcwOnN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NzEtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz03NjQ9c3RhdGljIHZvaWQgdGNmX2NoYWluX2ZsdXNoKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBib29sIHJ0bmxfaGVsZClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTc4Mi1cdFx0dHBfbmV4dCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQodHAtXHUwMDNlbmV4dCwgMSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjc4MzpcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzg0LVx0XHR0cCA9IHRwX25leHQ7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMTY1PXRjZl9nZXRfbmV4dF9wcm90byhzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiwgc3RydWN0IHRjZl9wcm90byAqdHApXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTY5LVx0aWYgKHRwKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTcwOlx0XHR0Y2ZfcHJvdG9fcHV0KHRwLCB0cnVlLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3MS1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMy1cdFx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYxNDpcdFx0XHQgICAgIHRjZl9wcm90b19wdXQodHBfcHJldiwgdHJ1ZSwgTlVMTCkpIHtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxNS1cdFx0XHRpZiAodHAtXHUwMDNlb3BzLVx1MDAzZXJlb2ZmbG9hZCkge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYzMy1lcnJfcGxheWJhY2tfcmVtb3ZlOlxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNjM0Olx0dGNmX3Byb3RvX3B1dCh0cCwgdHJ1ZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE2MzUtXHR0Y2ZfY2hhaW5fcHV0KGNoYWluKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE5ODU9c3RhdGljIHZvaWQgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIwMjItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIwMjM6XHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIwMjQtfVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjI1MT1zdGF0aWMgaW50IHRjX25ld190ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI0NjItXHRcdGlmICh0cCBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI0NjM6XHRcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjQ2NC1cdFx0aWYgKCF0cF9jcmVhdGVkKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjQ4Nz1zdGF0aWMgaW50IHRjX2RlbF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI2MDM6XHRcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDQtXHRcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgc2tiLCBuLCB0cCwgYmxvY2ssIHEsIHBhcmVudCwgZmgsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNjMwLVx0XHRpZiAodHAgXHUwMDI2XHUwMDI2ICFJU19FUlIodHApKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNjMxOlx0XHRcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MzItXHRcdHRjZl9jaGFpbl9wdXQoY2hhaW4pO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjY0Nj1zdGF0aWMgaW50IHRjX2dldF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI3NTktXHRcdGlmICh0cCBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI3NjA6XHRcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjc2MS1cdFx0dGNmX2NoYWluX3B1dChjaGFpbik7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA1LVx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNjpcdFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpLFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA3LVx0XHQgICAgICgqcF9pbmRleCkmIzQzOyYjNDM7KSB7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODQ4LWVycm91dDpcbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mjg0OTpcdHRjZl9wcm90b19wdXQodHAsIHRydWUsIE5VTEwpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0yODUwLVx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29yZSBUcmFmZmljIENvbnRyb2wgUmFjZSBDb25kaXRpb24gRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gU2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgY2FuIGdldCBjYWxsZWQgd2l0aG91dCB0aGUgYHJ0bmxfbG9ja2AgYmVpbmcgaGVsZCwgd2hpY2ggYSBwYXJ0aWN1bGFyIGNsYXNzaWZpZXIgbmVlZHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgcm9vdCBjYXVzZSBzZWVtcyB0byBiZSB3aGVuIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgbG9zZXMgYSByYWNlLCBkcm9wcGluZyB0aGUgbGFzdCByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90by4gQ2xldmVyLgoKVGhlIGZpeD8gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBCZWZvcmUgd2UgY2FsbCBgdHAtJmd0O29wcy0mZ3Q7ZGVzdHJveWAsIHRoZSBjb2RlIG5vdyBjaGVja3MgaWYgYHJ0bmxfaGVsZGAgaXMgZmFsc2UgKmFuZCogaWYgdGhlIGNsYXNzaWZpZXIgaXNuJiMzOTt0IGxvY2tsZXNz4oCUbWVhbmluZyBpdCBhY3R1YWxseSByZXF1aXJlcyB0aGUgbG9jayAoYCEodHAtJmd0O29wcy0mZ3Q7ZmxhZ3MgJmFtcDsgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKWApLiBJZiBib3RoIG9mIHRob3NlIGFyZSB0cnVlLCB0aGUgY29kZSAqdGFrZXMqIHRoZSBgcnRubF9sb2NrKClgIGZpcnN0LiBTaW1wbGUsIGJ1dCBlZmZlY3RpdmUuIEdvdHRhIGVuc3VyZSB0aGF0IGxvY2sgaXMgdGFrZW4uCgpUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGZpeCBpbiB0aGUgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyB0byB0YXJnZXQuIFRoZSBvYnZpb3VzIG9uZXMgYXJlIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgLiBBbmQgdGhlbiBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIGlzIGEgZ29vZCBjYW5kaWRhdGUsIGJ1dCBob2xkIG9uLCB0aGF0IG9uZSBpcyBzdGF0aWMuIFN0aWxsLCBpdCBpcyB1c2VkLCBzbyBsZXQmIzM5O3MgaW52ZXN0aWdhdGUgdGhlIGVudHJ5IHBvaW50cy4gU28gdGhlIGVudHJ5IHBvaW50cyBhcmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBjYWxsIHRoZSBmaXhlZCBjb2RlLiBHb29kLiBOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zLiBKdXN0IGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlJiMzOTtzIG5vdGhpbmcgb2J2aW91cyBJJiMzOTttIG1pc3NpbmcgYXQgdGhpcyBzdGFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbHNfYXBpLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXHQmIzQzOz0gYWN0X2FwaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRXhhbWluaW5nIE5ldHdvcmsgQ2xhc3NpZmllciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgTkVUX0NMU2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGRlZXBlci4gSSBrbm93IHRoaXMgbW9kdWxlLCBhbmQgbXkgZXhwZXJpZW5jZSBpbW1lZGlhdGVseSBmbGFncyBgTkVUX1NDSEVEYCBhcyBwb3RlbnRpYWxseSBiZWluZyB0aWVkIHRvIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9DTFNgIGhhcyBhIGRlcGVuZGVuY3kgb24gYE5FVF9TQ0hFRGAuIEl0JiMzOTtzIGEgY29tbW9uIHBhaXJpbmcsIHNvIEkgZXhwZWN0IGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAuIENoZWNraW5nIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gY29uZmlybXMgaXQ6IGluZGVlZCwgYE5FVF9DTFNgIGRvZXMgcmVxdWlyZSBgTkVUX1NDSEVEYC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgcGllY2Ugb2YgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcJiMzNDtDbGFzc2lmaWNhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWctNDgwLVxubmV0L3NjaGVkL0tjb25maWc6NDgxOmNvbmZpZyBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXHRib29sXG5uZXQvc2NoZWQvS2NvbmZpZy00ODMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cdHRyaXN0YXRlIFwmIzM0O0VsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUwNjpjb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MzgtXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxubmV0L3NjaGVkL0tjb25maWctNTUxLVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbCBHcm91cCBDbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTYxLVxubmV0L3NjaGVkL0tjb25maWc6NTYyOmNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NzEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxubmV0L3NjaGVkL0tjb25maWctNTgzLVx0dHJpc3RhdGUgXCYjMzQ7TWF0Y2gtYWxsIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NTgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9DTFNgIEJvb2xlYW4qKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBpdCYjMzk7cyBub3QgYSBzdGFuZGFsb25lIHZhcmlhYmxlLCBpcyBpdD8gSXQmIzM5O3MgYmVpbmcgKmluZmx1ZW5jZWQqIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBsaWtlbHkgdXBzdHJlYW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1dobyYjMzk7cyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lPyYjMzQ7LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCBvdXQgd2hhdCBvdGhlciBjb25maWdzIGFyZSBjb250cm9sbGluZyB0aGUgc3RhdGUgb2YgYE5FVF9DTFNgLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbDsgdGhpcyB3aWxsIGd1aWRlIG1lIGluIGdyYXNwaW5nIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGNvbmZsaWN0cyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgbGlua2VkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX0NMUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXHR0cmlzdGF0ZSBcJiMzNDtFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NjpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTg6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDk5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTA4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTUwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MTY9Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTE4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1NDE6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTQyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTUyOlx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NjI9Y29uZmlnIE5FVF9DTFNfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXHR0cmlzdGF0ZSBcJiMzNDtCUEYtYmFzZWQgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTY0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTc0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU3NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01ODI9Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cdHRyaXN0YXRlIFwmIzM0O01hdGNoLWFsbCBjbGFzc2lmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU5Mj1jb25maWcgTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNTkzLVx0Ym9vbCBcJiMzNDtFeHRlbmRlZCBNYXRjaGVzXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1OTQ6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTk1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzA0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTcwNS1cdHNlbGVjdCBORVRfWEdSRVNTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgTmV0d29yayBTY2hlZHVsZXJzIGFuZCBDbGFzc2lmaWVycyoqCgpPa2F5LCBzbyB3ZSBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9uYWxpdHksIG9idmlvdXNseS4gVGhlbiB3ZSYjMzk7bGwgbmVlZCBzb21lIGNsYXNzaWZpZXJzIHRvIGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoYXQgc2NoZWR1bGVyLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgdTMyX2Rlc3Ryb3lgIGFuZCAmIzM0O2Zsb3dlciBvbiBpbmdyZXNzLCYjMzQ7IHdoaWNoIHRlbGxzIG1lIHRoYXQgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgc29saWQgY2hvaWNlcy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgb24gdGhlIGxpc3QuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY3kgb2YgYE5FVF9TQ0hFRGAgYnkgcmVhZGluZyBgbmV0L0tjb25maWdgLCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEyMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIGFuZCBUcmFmZmljIEZpbHRlciBBbmFseXNpcyoqCgpBbHJpZ2h0LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHBvaW50IGZvciB0aGlzIHNlZW1zIHRvIGJlIGBORVRfU0NIRURgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQuIEkgc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGB0Y2ZfcHJvdG9fZGVzdHJveWAuIEludGVyZXN0aW5nLiBXaGF0IGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBiZWluZyB0b3VjaGVkIGhlcmU/IEkgc2VlIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBhcmUgZXhwb3NlZC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBleHBvcnRlZCBhbmQgaW50ZW5kZWQgZm9yIHdpZGVyIHVzZSwgb3IgYXJlIHRoZXkgZGVjbGFyZWQgYXMgc3RhdGljLCBsaW1pdGluZyB0aGVpciBzY29wZT8gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIHByb3ZpZGUgZnVydGhlciBpbnNpZ2h0cyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19uZXdfdGZpbHRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0yMjQ2PXN0YXRpYyBib29sIGlzX2luZ3Jlc3Nfb3JfY2xzYWN0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUwLVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyMjUxOnN0YXRpYyBpbnQgdGNfbmV3X3RmaWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgdGNfZmlsdGVyX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXVEZJTFRFUiwgLmRvaXQgPSB0Y19uZXdfdGZpbHRlcixcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDExOC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHJ0bmV0bGluayBIYW5kbGVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgcnRuZXRsaW5rIGhhbmRsZXJzLiBUaGUgdGV4dCBub3RlcyB0aGF0IHRoZXkmIzM5O3JlIHN0YXRpYywgd2hpY2ggaW5pdGlhbGx5IGdvdCBtZSB0aGlua2luZy4gSWYgdGhleSYjMzk7cmUgc3RhdGljLCBhbmQgZXNwZWNpYWxseSBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgdGhlbiB0aGV5ICp3b3VsZG4mIzM5O3QqIGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgd2l0aGluIHRoZSBrZXJuZWwgaW1hZ2UuIEJ1dCB3YWl0LCBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgcnRubF9tc2dfaGFuZGxlcmAuIFRoYXQgc2V0dGxlcyBpdDsgdGhleSAqY2FuJiMzOTt0KiBiZSBpbmxpbmVkLiBUaGF0IGZ1bmN0aW9uIHBvaW50ZXIgY2FsbCBrZWVwcyB0aGVtIGluIHRoZSBzeW1ib2wgdGFibGUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIHRoZXkgYXJlIGluIHRoZSBzeW1ib2wgdGFibGUsIHRoZW4gc3l6a2FsbGVyLCBvciBhbnkgb3RoZXIgZnV6emVyLCBjYW4gc3RpbGwgdGFyZ2V0IGFuZCB0cmlnZ2VyIHRob3NlIGhhbmRsZXJzLgoKTm93LCBsZXQgbWUgY2hlY2sgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqYWxzbyogc3RhdGljLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBhcHBsaWVzIGFjcm9zcyBvdGhlciBjb2RlLiBPa2F5LCBgdGNmX3Byb3RvX2Rlc3Ryb3lgLCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLCBgdGNmX3Byb3RvX3B1dGAgYW5kIGB0Y2ZfY2hhaW5fZmx1c2hgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMsIGl0IGFwcGVhcnMuIEJ1dCB3aGF0IGFib3V0IGB0Y2ZfZ2V0X25leHRfcHJvdG9gPyBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGF0IHRvIHNlZSBpZiBpdCYjMzk7cyBhdmFpbGFibGUgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfZ2V0X25leHRfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MTEyMz1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExMjQ6X190Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTI1LXtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTExNjQ9c3RydWN0IHRjZl9wcm90byAqXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNjU6dGNmX2dldF9uZXh0X3Byb3RvKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2Ni17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNjc6XHRzdHJ1Y3QgdGNmX3Byb3RvICp0cF9uZXh0ID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2OC1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExNzMtfVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTc0OkVYUE9SVF9TWU1CT0wodGNmX2dldF9uZXh0X3Byb3RvKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3NS1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMC1cdFx0XHRcdFx0XHRcdCAgY2JfcHJpdik7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTE6XHRcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7IHRwO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjEyLVx0XHQgICAgIHRwX3ByZXYgPSB0cCxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYxMzpcdFx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxNC1cdFx0XHQgICAgIHRjZl9wcm90b19wdXQodHBfcHJldiwgdHJ1ZSwgTlVMTCkpIHtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTIyMjE9c3RhdGljIHZvaWQgdGZpbHRlcl9ub3RpZnlfY2hhaW4oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqb3NrYixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMjgtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyMjk6XHRmb3IgKHRwID0gdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjIzMDpcdCAgICAgdHA7IHRwID0gdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMzEtXHRcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgb3NrYiwgbiwgdHAsIGJsb2NrLCBxLCBwYXJlbnQsIE5VTEwsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODAxLVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODAyOlx0Zm9yICh0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjgwMy1cdCAgICAgdHA7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDQtXHQgICAgIHRwX3ByZXYgPSB0cCxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNTpcdFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDYtXHRcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTmV0bGluayBBUEkgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgYHRjYCBmaWx0ZXIgbmV0bGluayBBUEkgd2l0aCBTeXprYWxsZXIuIFJpZ2h0LCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBhcmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGV5IGhhbmRsZSBuZXRsaW5rIG1lc3NhZ2VzIGRpcmVjdGx5LiBJIGtub3cgdGhleSYjMzk7cmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIHByZXR0eSBsYXJnZSwgZGVmaW5pdGVseSBub3QgaW5saW5lZCwgYW5kIGNydWNpYWxseSwgdGhleSYjMzk7cmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB2ZXJ5IGNsZWFyOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuJiMzNDsKClRoaW5raW5nIGFib3V0IGl0IG1vcmUsIGB0Y19uZXdfdGZpbHRlcmAgaXMgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCBtZWFucyBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLCBzbyBpdCYjMzk7cyBhIHZlcnkgc29saWQgY2hvaWNlLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgb3RoZXIgZnVuY3Rpb25zLiBTaG91bGQgSSBhZGQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2A/IE5vLCB0aGF0JiMzOTtzIG9mZmxvYWQtc3BlY2lmaWMsIG5vdCBjb3JlIHRvIHRoZSBmaWx0ZXIgbG9naWMuIFdoYXQgYWJvdXQgYHRjZl9wcm90b19kZXN0cm95YD8gSXQmIzM5O3Mgc3RhdGljLCBzbyBpdCAqbWlnaHQqIGJlIGlubGluZWQuIEJ1dCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gbXVsdGlwbGUgcGxhY2VzLCBzbyBtYXliZSBub3Q/CgpJJiMzOTtsbCBzdGljayB3aXRoIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGZvciBub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyB1c2VmdWwgaXMgZXhwb3J0ZWQgdGhhdCBkZXBlbmRzIG9uIHRoZW0sIGp1c3QgaW4gY2FzZSEKCkxldCBtZSBzZWUuLi5JIHdpbGwgY2hlY2sgdG8gc2VlIGlmIG90aGVyIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgdGhhdCBjYWxsIGB0Y2ZfcHJvdG9fZGVzdHJveWAgb3IgYHRjZl9wcm90b19wdXRgLgoKT2theSwgSSBzZWUgdGhhdCBgdGNmX2dldF9uZXh0X3Byb3RvYCBkb2VzIGNhbGwgYHRjZl9wcm90b19wdXRgLCBhbmQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2AgYWxzbyBjYWxscyBpdC4KCkp1c3QgZ29pbmcgdG8gcmUtY2hlY2sgYHRjX25ld190ZmlsdGVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MjI0Nj1zdGF0aWMgYm9vbCBpc19pbmdyZXNzX29yX2Nsc2FjdChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjI1MTpzdGF0aWMgaW50IHRjX25ld190ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1Mi1cdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQxMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIHRjX2ZpbHRlcl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L3NjaGVkL2Nsc19hcGkuYzo0MTE3Olx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQxMTgtXHQgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfVU5MT0NLRUR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAyNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBSZXZpZXcgZm9yIFRyYWZmaWMgQ29udHJvbCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV0bGluayBzZXR1cC4gUmlnaHQsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBJJiMzOTttIGZvY3VzaW5nIG9uLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyBwYXRjaCBtZW50aW9ucyBgdTMyX2Rlc3Ryb3lgIGFuZCBgZmxvd2VyIG9uIGluZ3Jlc3NgLCBzbyB0aGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludDogYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBzZWVtIHByb21pc2luZywgZGVmaW5pdGVseS4gQW5kIG9mIGNvdXJzZSwgYE5FVF9TQ0hFRGAgaXMgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciBhbnl0aGluZyB0cmFmZmljIGNvbnRyb2wgcmVsYXRlZC4gSGFuZyBvbiBhIHNlY29uZC4uLiBzaW5jZSBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGFyZSBzZWxlY3RlZCBieSBgTkVUX0NMU2AsIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBgTkVUX0NMU2Agc2VwYXJhdGVseSwgd2hpY2ggc3RyZWFtbGluZXMgdGhpbmdzIGEgYml0LiBTbyByZWFsbHksIEkganVzdCBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfVTMyYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgY2hlY2sgaWYgYE5FVF9DTFNfQUNUYCBpcyBhbHNvIGEgcmVxdWlyZW1lbnQuIFRoZSBwYXRjaCBtb2RpZmllcyBgY2xzX2FwaS5jYCwgd2hpY2ggaXMgY29tcGlsZWQgd2hlbiBgTkVUX0NMU2AgaXMgZW5hYmxlZCwgc28gdGhhdCB3aWxsIGhvcGVmdWxseSBjb3ZlciBpdC4gQSBxdWljayBsb29rIGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIGV2ZXJ5dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nsc19hcGkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgdGhlIFBhY2tldCBDbGFzc2lmaWVyIGZvciBNeSBTeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIGl0IHNlZW1zIGBORVRfQ0xTYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlLCB0aGUgb25lIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYGNsc19hcGkuY2AuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHRvIGdldCBgTkVUX0NMU2AgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29uZmlncyB0aGF0ICpzZWxlY3QqIGl0IGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgZW5hYmxpbmcgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gVGhlc2UgYXJlIHRoZSBib29sZWFuIG9wdGlvbnMgdGhhdCwgd2hlbiBzZXQsIHB1bGwgYE5FVF9DTFNgIGluLgoKTm93LCBqdXN0IGEgcXVpY2sgY29uZmlybWF0aW9uLCBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4KCkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGRvbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9mIHRoZWlyIG93bi4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGJsb2NrZXJzIEkmIzM5O20gbWlzc2luZy4gTGV0IG1lIGdvIHRocm91Z2ggdGhlbSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19VMzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9DTFNfRkxPV0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01NjI9Y29uZmlnIE5FVF9DTFNfQlBGXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTcxLVxubmV0L3NjaGVkL0tjb25maWc6NTcyOmNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMTMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA3MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmFjZSBDb25kaXRpb24gRml4IGluIFRyYWZmaWMgQ29udHJvbCBGaWx0ZXJpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIE5vIHNwZWNpYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnQuIExldCYjMzk7cyByZXZpc2l0IGB0Y19uZXdfdGZpbHRlcmAuIElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoZSBwcmltYXJ5IGhhbmRsZXJzPyBZZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgYW5kIGB0Y2ZfcHJvdG9fcHV0YC4gYHRjZl9wcm90b19wdXRgLCBpbiB0dXJuLCBpcyB1c2VkIGluIHF1aXRlIGEgZmV3IHBsYWNlczogYHRjZl9jaGFpbl9mbHVzaGAsIGB0Y2ZfZ2V0X25leHRfcHJvdG9gLCBgdGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzYCwgYHRjZl9jaGFpbl90cF9kZWxldGVfZW1wdHlgLCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBgdGNfZ2V0X3RmaWx0ZXJgLCBhbmQgYHRjZl9jaGFpbl9kdW1wYC4gVGhhdCBwb2ludHMgdG8gdGhlIG5ldGxpbmsgaGFuZGxlcnM6IGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50cyB0byBjb25zaWRlci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIHBhdGNoIGl0c2VsZi4gQWgsIEkgc2VlLCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbi4gSXQgbG9va3MgbGlrZSBgZGVzdHJveSgpYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgYHJ0bmxfbG9ja2Agd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuLiBUaGlzIG1lYW5zIGl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb25hbCBmaXguIERlZmluaXRlbHkgd29ydGggZnV6emluZyEKCkdpdmVuIHRoZSBmb2N1cyBvbiB0aGUgbmV0bGluayBoYW5kbGVycyBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldC4KClJlZ2FyZGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQuIGBORVRfU0NIRURgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdTMyIGFuZCBmbG93ZXIgY2xhc3NpZmllcnMsIGBORVRfQ0xTX1UzMmAgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXJlIGFsc28gY3JpdGljYWwuIExldCYjMzk7cyBhZGQgYE5FVF9DTFNfQkFTSUNgIGFzIGl0JiMzOTtzIG9mdGVuIGEgZ29vZCBkZWZhdWx0LiAgTm8sIG9uIHNlY29uZCB0aG91Z2h0LCBsZXQmIzM5O3MganVzdCB1c2UgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgLgoKRG8gSSBuZWVkIHRvIGVuYWJsZSBgTkVUX0NMU2AgZXhwbGljaXRseT8gVGhlIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoYXQgYXV0b21hdGljYWxseSBzaW5jZSBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIHNlbGVjdCBpdCwgYW5kIHRoZSBTeXprYWxsZXIgY29uZmlnIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoZSBkZXBlbmRlbmNpZXMuIEJ1dCBsZXQmIzM5O3MgY2hlY2suIFdhaXQsIGBORVRfQ0xTYCBkb2VzbiYjMzk7dCBldmVuIGhhdmUgYSBwcm9tcHQsIHNvIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBjb25maWd1cmFibGUuIFNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcJiMzNDtDbGFzc2lmaWNhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWctNDgwLVxubmV0L3NjaGVkL0tjb25maWc6NDgxOmNvbmZpZyBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXHRib29sXG5uZXQvc2NoZWQvS2NvbmZpZy00ODMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cdHRyaXN0YXRlIFwmIzM0O0VsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUwNjpjb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MzgtXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxubmV0L3NjaGVkL0tjb25maWctNTUxLVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbCBHcm91cCBDbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTYxLVxubmV0L3NjaGVkL0tjb25maWc6NTYyOmNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NzEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxubmV0L3NjaGVkL0tjb25maWctNTgzLVx0dHJpc3RhdGUgXCYjMzQ7TWF0Y2gtYWxsIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTk4CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDI2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGJhc2ljYWxseSBhIGJvb2xlYW4sIG5vIHByb21wdGluZyBuZWVkZWQgdGhlcmUuIFdlJiMzOTt2ZSBnb3QgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgIGFzIHRoZSBtYWluIG9wdGlvbnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gV2hhdCBmdW5jdGlvbnMgYXJlICphY3R1YWxseSogbW9kaWZpZWQ/IExvb2tzIGxpa2UgYHRjZl9wcm90b19kZXN0cm95YCBpcyB0aGUga2V5IG9uZS4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIGB0Y2ZfcHJvdG9fZGVzdHJveWAgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSBzZWUgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLiBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHRjX25ld190ZmlsdGVyYC4gQW5kIGB0Y2ZfcHJvdG9fcHV0YD8gVGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGJ1bmNoIG9mIHBsYWNlczogYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYHRjX2dldF90ZmlsdGVyYCwgYHRjZl9jaGFpbl9kdW1wYCwgYHRjZl9jaGFpbl9mbHVzaGAsIGB0Y2ZfZ2V0X25leHRfcHJvdG9gLCBgdGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzYCwgYW5kIGB0Y2ZfY2hhaW5fdHBfZGVsZXRlX2VtcHR5YC4KClRoZXJlZm9yZSwgdGhlIGtleSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gVGhleSBhcmUgdGhlIG1haW4gcG9pbnRzIHdoZXJlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNhbGxlZC4KCkkmIzM5O2xsIHVzZSB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX25ld190ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2RlbF90ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2dldF90ZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXImIzM5O3MgZGVzdHJveSBjYWxsYmFjayBjb3VsZCBiZSBjYWxsZWQgd2l0aG91dCB0aGUgcnRubF9sb2NrIGhlbGQgd2hlbiBpdCBpcyByZXF1aXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluaywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZGVsX3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZ2V0X3RmaWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtIHdoZXJlIGEgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MjMuMTMwNzgyMDc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MjUyOTQzODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzoyMy4xMzA3ODgwNzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjMwMzU0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMjM3NzQzMjU0M2E1YTk1Y2RmY2Q5MWI1OTk5YWQyYzk1N2YzYjliXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NTM6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTQ0Myw3ICs0NDMsMjIgQEAgc3RhdGljIHZvaWQgdGNmX2NoYWluX3B1dChzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbik7XFxuIHN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcXG4gXFx0XFx0XFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuLVxcdHRwLVxcdTAwM2VvcHMtXFx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTtcXG4rXFx0LyogQSBsb2NrZWQgY2xhc3NpZmllcidzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcXG4rXFx0ICogcnRubF9kZXJlZmVyZW5jZSgpIGFuZCBtdXRhdGVzIHNoYXJlZCBzdHJ1Y3R1cmVzIChlLmcuIHRoZVxcbitcXHQgKiB0Y191X2NvbW1vbiBoYXNoIGxpc3QpIHRoYXQgYXJlIG9ubHkgc2FmZSB1bmRlciBydG5sX2xvY2suIFdoZW4gYW5cXG4rXFx0ICogdW5sb2NrZWQgY2xhc3NpZmllcidzIHJlcXVlc3QgKGUuZy4gZmxvd2VyIG9uIGluZ3Jlc3MpIGxvc2VzIHRoZVxcbitcXHQgKiB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZSgpIHJhY2UgYW5kIGVuZHMgdXAgZHJvcHBpbmcgdGhlIGxhc3RcXG4rXFx0ICogcmVmZXJlbmNlIG9uIGEgbG9ja2VkIGNsYXNzaWZpZXIncyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1blxcbitcXHQgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS5cXG4rXFx0ICovXFxuK1xcdGJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQhKHRwLVxcdTAwM2VvcHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKTtcXG4rXFxuK1xcdGlmIChub3RfbG9ja2xlc3MpXFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHR0cC1cXHUwMDNlb3BzLVxcdTAwM2VkZXN0cm95KHRwLCBydG5sX2hlbGQgfHwgbm90X2xvY2tsZXNzLCBleHRhY2spO1xcbitcXHRpZiAobm90X2xvY2tsZXNzKVxcbitcXHRcXHRydG5sX3VubG9jaygpO1xcbiBcXHR0Y2ZfcHJvdG9fY291bnRfdXNlc3codHAsIGZhbHNlKTtcXG4gXFx0aWYgKHNpZ19kZXN0cm95KVxcbiBcXHRcXHR0Y2ZfcHJvdG9fc2lnbmFsX2Rlc3Ryb3llZCh0cC1cXHUwMDNlY2hhaW4sIHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MjQuMjU0NDAwMjUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA4MTI5MzE3MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjM3NzQzMjU0M2E1YTk1Y2RmY2Q5MWI1OTk5YWQyYzk1N2YzYjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjo1MzoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTQ0Myw3ICs0NDMsMjIgQEAgc3RhdGljIHZvaWQgdGNmX2NoYWluX3B1dChzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbik7XG4gc3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxuIFx0XHRcdCAgICAgIGJvb2wgc2lnX2Rlc3Ryb3ksIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHR0cC1cdTAwM2VvcHMtXHUwMDNlZGVzdHJveSh0cCwgcnRubF9oZWxkLCBleHRhY2spO1xuK1x0LyogQSBsb2NrZWQgY2xhc3NpZmllcidzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcbitcdCAqIHJ0bmxfZGVyZWZlcmVuY2UoKSBhbmQgbXV0YXRlcyBzaGFyZWQgc3RydWN0dXJlcyAoZS5nLiB0aGVcbitcdCAqIHRjX3VfY29tbW9uIGhhc2ggbGlzdCkgdGhhdCBhcmUgb25seSBzYWZlIHVuZGVyIHJ0bmxfbG9jay4gV2hlbiBhblxuK1x0ICogdW5sb2NrZWQgY2xhc3NpZmllcidzIHJlcXVlc3QgKGUuZy4gZmxvd2VyIG9uIGluZ3Jlc3MpIGxvc2VzIHRoZVxuK1x0ICogdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWUoKSByYWNlIGFuZCBlbmRzIHVwIGRyb3BwaW5nIHRoZSBsYXN0XG4rXHQgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllcidzIHByb3RvLCBkZXN0cm95KCkgd291bGQgcnVuXG4rXHQgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS5cbitcdCAqL1xuK1x0Ym9vbCBub3RfbG9ja2xlc3MgPSAhcnRubF9oZWxkIFx1MDAyNlx1MDAyNlxuK1x0XHQhKHRwLVx1MDAzZW9wcy1cdTAwM2VmbGFncyBcdTAwMjYgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKTtcbitcbitcdGlmIChub3RfbG9ja2xlc3MpXG4rXHRcdHJ0bmxfbG9jaygpO1xuK1x0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCB8fCBub3RfbG9ja2xlc3MsIGV4dGFjayk7XG4rXHRpZiAobm90X2xvY2tsZXNzKVxuK1x0XHRydG5sX3VubG9jaygpO1xuIFx0dGNmX3Byb3RvX2NvdW50X3VzZXN3KHRwLCBmYWxzZSk7XG4gXHRpZiAoc2lnX2Rlc3Ryb3kpXG4gXHRcdHRjZl9wcm90b19zaWduYWxfZGVzdHJveWVkKHRwLVx1MDAzZWNoYWluLCB0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzoyNC4yNTQ0MDI0MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkwMTAzNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogVHJhZmZpYyBDb250cm9sIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjazogYGJvb2wgbm90X2xvY2tsZXNzYC4gQmFzaWNhbGx5LCBpdCdzIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIGdyYWIgdGhlIGBydG5sX2xvY2soKWAgYmVmb3JlIGNhbGxpbmcgYHRwLVx1MDAzZW9wcy1cdTAwM2VkZXN0cm95YC4gVGhlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSBjaGVja2luZyBpZiB3ZSAqZG9uJ3QqIGFscmVhZHkgaG9sZCB0aGUgUlROTCBsb2NrICphbmQqIGlmIHRoZSBwcm90b2NvbCBvcGVyYXRpb24gaXRzZWxmIGlzbid0IGV4cGxpY2l0bHkgbWFya2VkIGFzIGJlaW5nIFwidW5sb2NrZWRcIi4gVGhlIGxvZ2ljIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBpZiB3ZSdyZSBub3QgbG9ja2VkIGFuZCB0aGUgb3BlcmF0aW9uIGlzbid0IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzLCB3ZSAqbmVlZCogdG8gZ3JhYiB0aGF0IGxvY2sgYmVmb3JlIGNhbGxpbmcgYGRlc3Ryb3lgLiBNYWtlcyBzZW5zZTsgaXQncyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4IGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbS4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlOyBkZWZpbml0ZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4gSSdsbCBmbGFnIHRoaXMgYXMgYSBoaWdoIHByaW9yaXR5IGZvciBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5Ob3csIGxldCdzIGRpdmUgZGVlcGVyIGFuZCBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFRpbWUgdG8gY2hlY2sgdGhlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgZnVuY3Rpb24gaXRzZWxmLCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQncyBmaW5kIGFsbCB0aGUgY2FsbGVycyBvZiB0aGF0IGZ1bmN0aW9uIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzozMC4xNDQ1MDkzODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI1NjMxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNmX3Byb3RvX2Rlc3Ryb3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTQ0MT1zdGF0aWMgdm9pZCB0Y2ZfY2hhaW5fcHV0KHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ0Mi1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQ0MzpzdGF0aWMgdm9pZCB0Y2ZfcHJvdG9fZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBydG5sX2hlbGQsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NDQtXFx0XFx0XFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00NzA9c3RhdGljIHZvaWQgdGNmX3Byb3RvX3B1dChzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBydG5sX2hlbGQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ3My1cXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZ0cC1cXHUwMDNlcmVmY250KSlcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQ3NDpcXHRcXHR0Y2ZfcHJvdG9fZGVzdHJveSh0cCwgcnRubF9oZWxkLCB0cnVlLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDc1LX1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTk1Mj1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWUoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjQtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjaGFpbi1cXHUwMDNlZmlsdGVyX2NoYWluX2xvY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTk2NTpcXHRcXHR0Y2ZfcHJvdG9fZGVzdHJveSh0cF9uZXcsIHJ0bmxfaGVsZCwgZmFsc2UsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk2Ni1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUFHQUlOKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3NC1cXHRpZiAodHApIHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5NzU6XFx0XFx0dGNmX3Byb3RvX2Rlc3Ryb3kodHBfbmV3LCBydG5sX2hlbGQsIGZhbHNlLCBOVUxMKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NzYtXFx0XFx0dHBfbmV3ID0gdHA7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc3LVxcdH0gZWxzZSBpZiAoZXJyKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxOTc4OlxcdFxcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc5LVxcdFxcdHRwX25ldyA9IEVSUl9QVFIoZXJyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MzAuMTg3MDgwNzg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwNTQ5MDkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBGbG93IG9mIE5ldHdvcmsgVHJhZmZpYyBDb250cm9sIFN0cnVjdHVyZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGB0Y2ZfcHJvdG9fZGVzdHJveWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgY2FsbGVkIHdoZW5ldmVyIHdlJ3JlIGNsZWFuaW5nIHVwIHByb3RvY29sLXJlbGF0ZWQgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnZva2VkIGZyb20gdHdvIGtleSBwb2ludHM6IGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gTXkgZm9jdXMgbm93IHNoaWZ0cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGZvciAqdGhvc2UqIGZ1bmN0aW9ucy4gS25vd2luZyB3aG8gY2FsbHMgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIHdpbGwgZ2l2ZSBtZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGVuIGFuZCB3aHkgYHRjZl9wcm90b19kZXN0cm95YCBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBlbnRpcmUgbGlmZWN5Y2xlIG9mIHRoZXNlIHByb3RvY29sIGVsZW1lbnRzIHdpdGhpbiB0aGUgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yay4gVGhpcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSB0aGlzIGZpbmFsIGNsZWFudXAgc3RhZ2UuIEknbGwgcGlucG9pbnQgdGhlIGluc2VydGlvbiBhbmQgZGVsZXRpb24gcGF0aHdheXMgdG8gZW5zdXJlIG91ciByZXNvdXJjZXMgYXJlIG1hbmFnZWQgZWZmaWNpZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzozNy42OTI1NzQyMDJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYzNzg5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNmX3Byb3RvX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9NDQzPXN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDY5LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDcwOnN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDcxLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz03NjQ9c3RhdGljIHZvaWQgdGNmX2NoYWluX2ZsdXNoKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBib29sIHJ0bmxfaGVsZClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzgyLVxcdFxcdHRwX25leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLVxcdTAwM2VuZXh0LCAxKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjc4MzpcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzg0LVxcdFxcdHRwID0gdHBfbmV4dDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTE2NT10Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTY5LVxcdGlmICh0cClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNzA6XFx0XFx0dGNmX3Byb3RvX3B1dCh0cCwgdHJ1ZSwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTcxLVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTkzPXRjZl9ibG9ja19wbGF5YmFja19vZmZsb2FkcyhzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgZmxvd19zZXR1cF9jYl90ICpjYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMy1cXHRcXHRcXHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTQ6XFx0XFx0XFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjE1LVxcdFxcdFxcdGlmICh0cC1cXHUwMDNlb3BzLVxcdTAwM2VyZW9mZmxvYWQpIHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYzMy1lcnJfcGxheWJhY2tfcmVtb3ZlOlxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYzNDpcXHR0Y2ZfcHJvdG9fcHV0KHRwLCB0cnVlLCBOVUxMKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE2MzUtXFx0dGNmX2NoYWluX3B1dChjaGFpbik7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE5ODU9c3RhdGljIHZvaWQgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjAyMi1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIwMjM6XFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjAyNC19XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTIyNTE9c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI0NjItXFx0XFx0aWYgKHRwIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjQ2MzpcXHRcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjQ2NC1cXHRcXHRpZiAoIXRwX2NyZWF0ZWQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTI0ODc9c3RhdGljIGludCB0Y19kZWxfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDItXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNjAzOlxcdFxcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNjA0LVxcdFxcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgc2tiLCBuLCB0cCwgYmxvY2ssIHEsIHBhcmVudCwgZmgsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MzAtXFx0XFx0aWYgKHRwIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjYzMTpcXHRcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjYzMi1cXHRcXHR0Y2ZfY2hhaW5fcHV0KGNoYWluKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjY0Nj1zdGF0aWMgaW50IHRjX2dldF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjc1OS1cXHRcXHRpZiAodHAgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cCkpXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNzYwOlxcdFxcdFxcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNzYxLVxcdFxcdHRjZl9jaGFpbl9wdXQoY2hhaW4pO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDUtXFx0XFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODA2OlxcdFxcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDctXFx0XFx0ICAgICAoKnBfaW5kZXgpKyspIHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjg0OC1lcnJvdXQ6XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODQ5OlxcdHRjZl9wcm90b19wdXQodHAsIHRydWUsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjg1MC1cXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjUzOjM3Ljc2ODk1ODU2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjI4ODMxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvcmUgVHJhZmZpYyBDb250cm9sIFJhY2UgQ29uZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBTZWVtcyBsaWtlIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGNhbiBnZXQgY2FsbGVkIHdpdGhvdXQgdGhlIGBydG5sX2xvY2tgIGJlaW5nIGhlbGQsIHdoaWNoIGEgcGFydGljdWxhciBjbGFzc2lmaWVyIG5lZWRzLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgcm9vdCBjYXVzZSBzZWVtcyB0byBiZSB3aGVuIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgbG9zZXMgYSByYWNlLCBkcm9wcGluZyB0aGUgbGFzdCByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllcidzIHByb3RvLiBDbGV2ZXIuXG5cblRoZSBmaXg/IEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBCZWZvcmUgd2UgY2FsbCBgdHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3lgLCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIGBydG5sX2hlbGRgIGlzIGZhbHNlICphbmQqIGlmIHRoZSBjbGFzc2lmaWVyIGlzbid0IGxvY2tsZXNz4oCUbWVhbmluZyBpdCBhY3R1YWxseSByZXF1aXJlcyB0aGUgbG9jayAoYCEodHAtXHUwMDNlb3BzLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ0ZfUFJPVE9fT1BTX0RPSVRfVU5MT0NLRUQpYCkuIElmIGJvdGggb2YgdGhvc2UgYXJlIHRydWUsIHRoZSBjb2RlICp0YWtlcyogdGhlIGBydG5sX2xvY2soKWAgZmlyc3QuIFNpbXBsZSwgYnV0IGVmZmVjdGl2ZS4gR290dGEgZW5zdXJlIHRoYXQgbG9jayBpcyB0YWtlbi5cblxuVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBmaXggaW4gdGhlIHRyYWZmaWMgY29udHJvbCBzdWJzeXN0ZW0sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgb2J2aW91cyBvbmVzIGFyZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gQW5kIHRoZW4gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBpcyBhIGdvb2QgY2FuZGlkYXRlLCBidXQgaG9sZCBvbiwgdGhhdCBvbmUgaXMgc3RhdGljLiBTdGlsbCwgaXQgaXMgdXNlZCwgc28gbGV0J3MgaW52ZXN0aWdhdGUgdGhlIGVudHJ5IHBvaW50cy4gU28gdGhlIGVudHJ5IHBvaW50cyBhcmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBjYWxsIHRoZSBmaXhlZCBjb2RlLiBHb29kLiBOb3csIEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIEp1c3QgYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUncyBub3RoaW5nIG9idmlvdXMgSSdtIG1pc3NpbmcgYXQgdGhpcyBzdGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1Mzo0OC4zOTc3OTIwMjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MjIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXFx0Kz0gYWN0X2FwaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjUzOjQ4LjQ0NDIxOTI4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDg1MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgQ2xhc3NpZmllciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBORVRfQ0xTYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgZGVlcGVyLiBJIGtub3cgdGhpcyBtb2R1bGUsIGFuZCBteSBleHBlcmllbmNlIGltbWVkaWF0ZWx5IGZsYWdzIGBORVRfU0NIRURgIGFzIHBvdGVudGlhbGx5IGJlaW5nIHRpZWQgdG8gaXQuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGBORVRfQ0xTYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBORVRfU0NIRURgLiBJdCdzIGEgY29tbW9uIHBhaXJpbmcsIHNvIEkgZXhwZWN0IGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAuIENoZWNraW5nIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gY29uZmlybXMgaXQ6IGluZGVlZCwgYE5FVF9DTFNgIGRvZXMgcmVxdWlyZSBgTkVUX1NDSEVEYC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgcGllY2Ugb2YgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1Mzo1NS43OTI3NDM1NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjM3NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDc5PWNvbW1lbnQgXFxcIkNsYXNzaWZpY2F0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnLTQ4MC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODE6Y29uZmlnIE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXFx0Ym9vbFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ4My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXFx0dHJpc3RhdGUgXFxcIkVsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTQ6Y29uZmlnIE5FVF9DTFNfUk9VVEU0XFxubmV0L3NjaGVkL0tjb25maWctNDk1LVxcdHRyaXN0YXRlIFxcXCJSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MDUtXFxubmV0L3NjaGVkL0tjb25maWc6NTA2OmNvbmZpZyBORVRfQ0xTX0ZXXFxubmV0L3NjaGVkL0tjb25maWctNTA3LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbWFyayAoRlcpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUzOC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjU1MDpjb25maWcgTkVUX0NMU19DR1JPVVBcXG5uZXQvc2NoZWQvS2NvbmZpZy01NTEtXFx0dHJpc3RhdGUgXFxcIkNvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU2MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NjI6Y29uZmlnIE5FVF9DTFNfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNTYzLVxcdHRyaXN0YXRlIFxcXCJCUEYtYmFzZWQgY2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODI6Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODMtXFx0dHJpc3RhdGUgXFxcIk1hdGNoLWFsbCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6NTUuODM5OTg5NjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzE4OTI1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX0NMU2AgQm9vbGVhbioqXG5cbk9rYXksIHNvIGBORVRfQ0xTYCBpcyBkZWZpbmVkIGFzIGEgYm9vbGVhbiDigJMgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgaXQncyBub3QgYSBzdGFuZGFsb25lIHZhcmlhYmxlLCBpcyBpdD8gSXQncyBiZWluZyAqaW5mbHVlbmNlZCogYnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIGxpa2VseSB1cHN0cmVhbS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hvJ3MgcHVsbGluZyB0aGUgc3RyaW5ncyBvbiB0aGlzIG9uZT9cIi4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgb3V0IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgY29udHJvbGxpbmcgdGhlIHN0YXRlIG9mIGBORVRfQ0xTYC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWw7IHRoaXMgd2lsbCBndWlkZSBtZSBpbiBncmFzcGluZyB0aGUgZnVsbCBwaWN0dXJlIGFuZCBpZGVudGlmeWluZyBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb25mbGljdHMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBsaW5rZWQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDowMC44MTE4ODU4NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDAyMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfQ0xTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXFxubmV0L3NjaGVkL0tjb25maWctNDg1LVxcdHRyaXN0YXRlIFxcXCJFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NDg2OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNDg3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5ODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTA4OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUxNj1jb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU0MTpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXFxubmV0L3NjaGVkL0tjb25maWctNTUxLVxcdHRyaXN0YXRlIFxcXCJDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTUyOlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXFxubmV0L3NjaGVkL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJNYXRjaC1hbGwgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTkyPWNvbmZpZyBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNTkzLVxcdGJvb2wgXFxcIkV4dGVuZGVkIE1hdGNoZXNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTk0OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTk1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6MDAuODU1ODk0MjY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NzUxNTQ4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgTmV0d29yayBTY2hlZHVsZXJzIGFuZCBDbGFzc2lmaWVycyoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIRURgIOKAkyB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHRyYWZmaWMgc2hhcGluZyBmdW5jdGlvbmFsaXR5LCBvYnZpb3VzbHkuIFRoZW4gd2UnbGwgbmVlZCBzb21lIGNsYXNzaWZpZXJzIHRvIGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoYXQgc2NoZWR1bGVyLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgdTMyX2Rlc3Ryb3lgIGFuZCBcImZsb3dlciBvbiBpbmdyZXNzLFwiIHdoaWNoIHRlbGxzIG1lIHRoYXQgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgc29saWQgY2hvaWNlcy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgb24gdGhlIGxpc3QuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGVwZW5kZW5jeSBvZiBgTkVUX1NDSEVEYCBieSByZWFkaW5nIGBuZXQvS2NvbmZpZ2AsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDowNS4zMzEwNTM3NDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzOTUzNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6MDUuMzk1MDE1MzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4ODkwOTI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gYW5kIFRyYWZmaWMgRmlsdGVyIEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBwb2ludCBmb3IgdGhpcyBzZWVtcyB0byBiZSBgTkVUX1NDSEVEYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvcmUgb2Ygd2hhdCdzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjcml0aWNhbCBzeW1ib2xzIGludm9sdmVkLiBJIHNlZSBhIG1vZGlmaWNhdGlvbiB0byBgdGNmX3Byb3RvX2Rlc3Ryb3lgLiBJbnRlcmVzdGluZy4gV2hhdCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgYmVpbmcgdG91Y2hlZCBoZXJlPyBJIHNlZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGV4cG9zZWQuIEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYW5kIGludGVuZGVkIGZvciB3aWRlciB1c2UsIG9yIGFyZSB0aGV5IGRlY2xhcmVkIGFzIHN0YXRpYywgbGltaXRpbmcgdGhlaXIgc2NvcGU/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBwcm92aWRlIGZ1cnRoZXIgaW5zaWdodHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjEyLjQ4MzkyNzAzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NTMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTIyNDY9c3RhdGljIGJvb2wgaXNfaW5ncmVzc19vcl9jbHNhY3Qoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyNTE6c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciB0Y19maWx0ZXJfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XFx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTE4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjEyLjUzMDc4NjAyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjYwMzExODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBydG5ldGxpbmsgSGFuZGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBydG5ldGxpbmsgaGFuZGxlcnMuIFRoZSB0ZXh0IG5vdGVzIHRoYXQgdGhleSdyZSBzdGF0aWMsIHdoaWNoIGluaXRpYWxseSBnb3QgbWUgdGhpbmtpbmcuIElmIHRoZXkncmUgc3RhdGljLCBhbmQgZXNwZWNpYWxseSBpZiB0aGV5J3JlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB0aGVuIHRoZXkgKndvdWxkbid0KiBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIHdpdGhpbiB0aGUga2VybmVsIGltYWdlLiBCdXQgd2FpdCwgSSBzZWUgdGhhdCB0aGV5J3JlIGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgcnRubF9tc2dfaGFuZGxlcmAuIFRoYXQgc2V0dGxlcyBpdDsgdGhleSAqY2FuJ3QqIGJlIGlubGluZWQuIFRoYXQgZnVuY3Rpb24gcG9pbnRlciBjYWxsIGtlZXBzIHRoZW0gaW4gdGhlIHN5bWJvbCB0YWJsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSwgaWYgdGhleSBhcmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgdGhlbiBzeXprYWxsZXIsIG9yIGFueSBvdGhlciBmdXp6ZXIsIGNhbiBzdGlsbCB0YXJnZXQgYW5kIHRyaWdnZXIgdGhvc2UgaGFuZGxlcnMuXG5cbk5vdywgbGV0IG1lIGNoZWNrIGZvciBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgKmFsc28qIHN0YXRpYy4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBhcHBsaWVzIGFjcm9zcyBvdGhlciBjb2RlLiBPa2F5LCBgdGNmX3Byb3RvX2Rlc3Ryb3lgLCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLCBgdGNmX3Byb3RvX3B1dGAgYW5kIGB0Y2ZfY2hhaW5fZmx1c2hgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMsIGl0IGFwcGVhcnMuIEJ1dCB3aGF0IGFib3V0IGB0Y2ZfZ2V0X25leHRfcHJvdG9gPyBJcyBpdCBleHBvcnRlZD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoYXQgdG8gc2VlIGlmIGl0J3MgYXZhaWxhYmxlIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDoxOS43OTExMDA1MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTQ2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9nZXRfbmV4dF9wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTEyMz1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTI0Ol9fdGNmX2dldF9uZXh0X3Byb3RvKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExMjUte1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMTY0PXN0cnVjdCB0Y2ZfcHJvdG8gKlxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTE2NTp0Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2Ni17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTY3OlxcdHN0cnVjdCB0Y2ZfcHJvdG8gKnRwX25leHQgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgdHApO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2OC1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3My19XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTc0OkVYUE9SVF9TWU1CT0wodGNmX2dldF9uZXh0X3Byb3RvKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExNzUtXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjEwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgY2JfcHJpdik7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNjExOlxcdFxcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7IHRwO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMi1cXHRcXHQgICAgIHRwX3ByZXYgPSB0cCxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTM6XFx0XFx0XFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjE0LVxcdFxcdFxcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSkge1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yMjIxPXN0YXRpYyB2b2lkIHRmaWx0ZXJfbm90aWZ5X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKm9za2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMjgtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyMjI5OlxcdGZvciAodHAgPSB0Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjIzMDpcXHQgICAgIHRwOyB0cCA9IHRjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgdHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjIzMS1cXHRcXHR0ZmlsdGVyX25vdGlmeShuZXQsIG9za2IsIG4sIHRwLCBibG9jaywgcSwgcGFyZW50LCBOVUxMLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDEtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODAyOlxcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODAzLVxcdCAgICAgdHA7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA0LVxcdCAgICAgdHBfcHJldiA9IHRwLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNTpcXHRcXHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDYtXFx0XFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDoxOS44MzUyNTMyNTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxNzk4NTcwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gTmV0bGluayBBUEkgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSB0YXJnZXQgdGhlIGB0Y2AgZmlsdGVyIG5ldGxpbmsgQVBJIHdpdGggU3l6a2FsbGVyLiBSaWdodCwgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gVGhleSBoYW5kbGUgbmV0bGluayBtZXNzYWdlcyBkaXJlY3RseS4gSSBrbm93IHRoZXkncmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZXkncmUgcHJldHR5IGxhcmdlLCBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLCBhbmQgY3J1Y2lhbGx5LCB0aGV5J3JlIGluIHRoZSBzeW1ib2wgdGFibGUsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4gVGhlIGluc3RydWN0aW9ucyBhcmUgdmVyeSBjbGVhcjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLlwiXG5cblRoaW5raW5nIGFib3V0IGl0IG1vcmUsIGB0Y19uZXdfdGZpbHRlcmAgaXMgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCBtZWFucyBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLCBzbyBpdCdzIGEgdmVyeSBzb2xpZCBjaG9pY2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgb3RoZXIgZnVuY3Rpb25zLiBTaG91bGQgSSBhZGQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2A/IE5vLCB0aGF0J3Mgb2ZmbG9hZC1zcGVjaWZpYywgbm90IGNvcmUgdG8gdGhlIGZpbHRlciBsb2dpYy4gV2hhdCBhYm91dCBgdGNmX3Byb3RvX2Rlc3Ryb3lgPyBJdCdzIHN0YXRpYywgc28gaXQgKm1pZ2h0KiBiZSBpbmxpbmVkLiBCdXQsIGl0J3MgY2FsbGVkIGZyb20gbXVsdGlwbGUgcGxhY2VzLCBzbyBtYXliZSBub3Q/XG5cbkknbGwgc3RpY2sgd2l0aCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBmb3Igbm93LiBMZXQncyBtYWtlIHN1cmUgbm90aGluZyB1c2VmdWwgaXMgZXhwb3J0ZWQgdGhhdCBkZXBlbmRzIG9uIHRoZW0sIGp1c3QgaW4gY2FzZSFcblxuTGV0IG1lIHNlZS4uLkkgd2lsbCBjaGVjayB0byBzZWUgaWYgb3RoZXIgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCB0aGF0IGNhbGwgYHRjZl9wcm90b19kZXN0cm95YCBvciBgdGNmX3Byb3RvX3B1dGAuXG5cbk9rYXksIEkgc2VlIHRoYXQgYHRjZl9nZXRfbmV4dF9wcm90b2AgZG9lcyBjYWxsIGB0Y2ZfcHJvdG9fcHV0YCwgYW5kIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgIGFsc28gY2FsbHMgaXQuXG5cbkp1c3QgZ29pbmcgdG8gcmUtY2hlY2sgYHRjX25ld190ZmlsdGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6NDYuMDE1MTEzMDMyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQwMjg5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTIyNDY9c3RhdGljIGJvb2wgaXNfaW5ncmVzc19vcl9jbHNhY3Qoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyNTE6c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciB0Y19maWx0ZXJfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XFx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTE4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjQ2LjI3OTE0NzM4OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk4OTkwMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIFJldmlldyBmb3IgVHJhZmZpYyBDb250cm9sKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV0bGluayBzZXR1cC4gUmlnaHQsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBJJ20gZm9jdXNpbmcgb24uIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIG1lbnRpb25zIGB1MzJfZGVzdHJveWAgYW5kIGBmbG93ZXIgb24gaW5ncmVzc2AsIHNvIHRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50OiBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIHNlZW0gcHJvbWlzaW5nLCBkZWZpbml0ZWx5LiBBbmQgb2YgY291cnNlLCBgTkVUX1NDSEVEYCBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIGFueXRoaW5nIHRyYWZmaWMgY29udHJvbCByZWxhdGVkLiBIYW5nIG9uIGEgc2Vjb25kLi4uIHNpbmNlIGBORVRfQ0xTX1UzMmAgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXJlIHNlbGVjdGVkIGJ5IGBORVRfQ0xTYCwgSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYE5FVF9DTFNgIHNlcGFyYXRlbHksIHdoaWNoIHN0cmVhbWxpbmVzIHRoaW5ncyBhIGJpdC4gU28gcmVhbGx5LCBJIGp1c3QgbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIGlmIGBORVRfQ0xTX0FDVGAgaXMgYWxzbyBhIHJlcXVpcmVtZW50LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNsc19hcGkuY2AsIHdoaWNoIGlzIGNvbXBpbGVkIHdoZW4gYE5FVF9DTFNgIGlzIGVuYWJsZWQsIHNvIHRoYXQgd2lsbCBob3BlZnVsbHkgY292ZXIgaXQuIEEgcXVpY2sgbG9vayBhdCBgbmV0L3NjaGVkL01ha2VmaWxlYCBzaG91bGQgY29uZmlybSBldmVyeXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAyNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1MS4wNzgxNDAxMDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDMwMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsc19hcGkub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXFx0XFx0Kz0gc2NoX2FwaS5vIHNjaF9ibGFja2hvbGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcXHRcXHQrPSBjbHNfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVxcdCs9IGFjdF9hcGkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1MS4xMjYxNzU5MDdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MzkyODgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyB0aGUgUGFja2V0IENsYXNzaWZpZXIgZm9yIE15IFN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIGl0IHNlZW1zIGBORVRfQ0xTYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlLCB0aGUgb25lIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYGNsc19hcGkuY2AuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHRvIGdldCBgTkVUX0NMU2AgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29uZmlncyB0aGF0ICpzZWxlY3QqIGl0IGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgZW5hYmxpbmcgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gVGhlc2UgYXJlIHRoZSBib29sZWFuIG9wdGlvbnMgdGhhdCwgd2hlbiBzZXQsIHB1bGwgYE5FVF9DTFNgIGluLlxuXG5Ob3csIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBORVRfU0NIRURgIGlzIHRoZSBwcmltYXJ5IG1lbnVjb25maWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLlxuXG5CZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGRvbid0IGhhdmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb2YgdGhlaXIgb3duLiBHb3R0YSBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBibG9ja2VycyBJJ20gbWlzc2luZy4gTGV0IG1lIGdvIHRocm91Z2ggdGhlbSwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1NS4zNzAxMDY5NzRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzE2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1NS40MTM4MjY3OTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkzOTYyNTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEyMDk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1Ny4zNTM0NTUwOTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjY0ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX0ZMT1dFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6NTcuMzk3NzI5NDc0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5ODI0MjM4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmFjZSBDb25kaXRpb24gRml4IGluIFRyYWZmaWMgQ29udHJvbCBGaWx0ZXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBhc3Nlc3NpbmcgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBObyBzcGVjaWFsIGRlcGVuZGVuY2llcywgd2hpY2ggaXMgYSBnb29kIHN0YXJ0LiBMZXQncyByZXZpc2l0IGB0Y19uZXdfdGZpbHRlcmAuIElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoZSBwcmltYXJ5IGhhbmRsZXJzPyBZZXMsIGl0J3MgY2FsbGVkIGZyb20gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBhbmQgYHRjZl9wcm90b19wdXRgLiBgdGNmX3Byb3RvX3B1dGAsIGluIHR1cm4sIGlzIHVzZWQgaW4gcXVpdGUgYSBmZXcgcGxhY2VzOiBgdGNmX2NoYWluX2ZsdXNoYCwgYHRjZl9nZXRfbmV4dF9wcm90b2AsIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgLCBgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eWAsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGB0Y19nZXRfdGZpbHRlcmAsIGFuZCBgdGNmX2NoYWluX2R1bXBgLiBUaGF0IHBvaW50cyB0byB0aGUgbmV0bGluayBoYW5kbGVyczogYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRzIHRvIGNvbnNpZGVyLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIHBhdGNoIGl0c2VsZi4gQWgsIEkgc2VlLCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbi4gSXQgbG9va3MgbGlrZSBgZGVzdHJveSgpYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgYHJ0bmxfbG9ja2Agd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuLiBUaGlzIG1lYW5zIGl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbmFsIGZpeC4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIVxuXG5HaXZlbiB0aGUgZm9jdXMgb24gdGhlIG5ldGxpbmsgaGFuZGxlcnMgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXJlIHRoZSBrZXkgc3ltYm9scyB0byB0YXJnZXQuXG5cblJlZ2FyZGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQuIGBORVRfU0NIRURgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB1MzIgYW5kIGZsb3dlciBjbGFzc2lmaWVycywgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgYWxzbyBjcml0aWNhbC4gTGV0J3MgYWRkIGBORVRfQ0xTX0JBU0lDYCBhcyBpdCdzIG9mdGVuIGEgZ29vZCBkZWZhdWx0LiAgTm8sIG9uIHNlY29uZCB0aG91Z2h0LCBsZXQncyBqdXN0IHVzZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfVTMyYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuXG5cbkRvIEkgbmVlZCB0byBlbmFibGUgYE5FVF9DTFNgIGV4cGxpY2l0bHk/IFRoZSBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGF0IGF1dG9tYXRpY2FsbHkgc2luY2UgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBzZWxlY3QgaXQsIGFuZCB0aGUgU3l6a2FsbGVyIGNvbmZpZyBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGUgZGVwZW5kZW5jaWVzLiBCdXQgbGV0J3MgY2hlY2suIFdhaXQsIGBORVRfQ0xTYCBkb2Vzbid0IGV2ZW4gaGF2ZSBhIHByb21wdCwgc28gaXQncyBub3QgZGlyZWN0bHkgY29uZmlndXJhYmxlLiBTbyB3ZSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjEzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU1OjA2LjM4MDE1Njk0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzgxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcXFwiQ2xhc3NpZmljYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDgwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4Mi1cXHRib29sXFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NDpjb25maWcgTkVUX0NMU19CQVNJQ1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cXHR0cmlzdGF0ZSBcXFwiRWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDkzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXFxubmV0L3NjaGVkL0tjb25maWc6NTE2OmNvbmZpZyBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTM4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUzOTpjb25maWcgTkVUX0NMU19GTE9XXFxubmV0L3NjaGVkL0tjb25maWctNTQwLVxcdHRyaXN0YXRlIFxcXCJGbG93IGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01NDktXFxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbCBHcm91cCBDbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTgxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cXHR0cmlzdGF0ZSBcXFwiTWF0Y2gtYWxsIGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXFxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cXHRib29sIFxcXCJBY3Rpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NTowNi40MjQ2MDEyOTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg4MTE3Nzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKlxuXG5Pa2F5LCBzbyBgTkVUX0NMU2AgaXMgYmFzaWNhbGx5IGEgYm9vbGVhbiwgbm8gcHJvbXB0aW5nIG5lZWRlZCB0aGVyZS4gV2UndmUgZ290IGBORVRfU0NIRURgLCBgTkVUX0NMU19VMzJgLCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcyB0aGUgbWFpbiBvcHRpb25zLlxuXG5BbHJpZ2h0LCBsZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBXaGF0IGZ1bmN0aW9ucyBhcmUgKmFjdHVhbGx5KiBtb2RpZmllZD8gTG9va3MgbGlrZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIHRoZSBrZXkgb25lLiBOb3csIGxldCdzIHNlZSB3aGljaCBmdW5jdGlvbnMgY2FsbCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgc2VlIGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYHRjX25ld190ZmlsdGVyYC4gQW5kIGB0Y2ZfcHJvdG9fcHV0YD8gVGhhdCdzIGNhbGxlZCBmcm9tIGEgYnVuY2ggb2YgcGxhY2VzOiBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBgdGNfZ2V0X3RmaWx0ZXJgLCBgdGNmX2NoYWluX2R1bXBgLCBgdGNmX2NoYWluX2ZsdXNoYCwgYHRjZl9nZXRfbmV4dF9wcm90b2AsIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgLCBhbmQgYHRjZl9jaGFpbl90cF9kZWxldGVfZW1wdHlgLlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIHRvIGZvY3VzIG9uIHNlZW0gdG8gYmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRoZXkgYXJlIHRoZSBtYWluIHBvaW50cyB3aGVyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBjYWxsZWQuXG5cbkknbGwgdXNlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBmb3Igc2V0dGluZyByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE5OCwiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTU6MTIuMzA1NzgxNjczWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5MzI5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow794kf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 12:37:34 +0000 UTC FinishedAt: 2026-08-02 12:55:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32", "NET_CLS_FLOWER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "69963a0678a347d57c4ac8b16939dba216eb95ce", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_CLS_U32", "NET_CLS_FLOWER" ], "series_id": "e04e34a0-4bd6-4941-bbaa-10df42bede29" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tc_new_tfilter", "tc_del_tfilter", "tc_get_tfilter" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX25ld190ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2RlbF90ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2dldF90ZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXImIzM5O3MgZGVzdHJveSBjYWxsYmFjayBjb3VsZCBiZSBjYWxsZWQgd2l0aG91dCB0aGUgcnRubF9sb2NrIGhlbGQgd2hlbiBpdCBpcyByZXF1aXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluaywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEyMzc3NDMyNTQzYTVhOTVjZGZjZDkxYjU5OTlhZDJjOTU3ZjNiOWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjUzOjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTQ0Myw3ICYjNDM7NDQzLDIyIEBAIHN0YXRpYyB2b2lkIHRjZl9jaGFpbl9wdXQoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4pO1xuIHN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcbiBcdFx0XHQgICAgICBib29sIHNpZ19kZXN0cm95LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuLVx0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTtcbiYjNDM7XHQvKiBBIGxvY2tlZCBjbGFzc2lmaWVyJiMzOTtzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcbiYjNDM7XHQgKiBydG5sX2RlcmVmZXJlbmNlKCkgYW5kIG11dGF0ZXMgc2hhcmVkIHN0cnVjdHVyZXMgKGUuZy4gdGhlXG4mIzQzO1x0ICogdGNfdV9jb21tb24gaGFzaCBsaXN0KSB0aGF0IGFyZSBvbmx5IHNhZmUgdW5kZXIgcnRubF9sb2NrLiBXaGVuIGFuXG4mIzQzO1x0ICogdW5sb2NrZWQgY2xhc3NpZmllciYjMzk7cyByZXF1ZXN0IChlLmcuIGZsb3dlciBvbiBpbmdyZXNzKSBsb3NlcyB0aGVcbiYjNDM7XHQgKiB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZSgpIHJhY2UgYW5kIGVuZHMgdXAgZHJvcHBpbmcgdGhlIGxhc3RcbiYjNDM7XHQgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1blxuJiM0MztcdCAqIHdpdGhvdXQgcnRubCBoZWxkLiBUYWtlIGl0IGhlcmUgaW4gdGhhdCBjYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCEodHAtXHUwMDNlb3BzLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ0ZfUFJPVE9fT1BTX0RPSVRfVU5MT0NLRUQpO1xuJiM0MztcbiYjNDM7XHRpZiAobm90X2xvY2tsZXNzKVxuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCB8fCBub3RfbG9ja2xlc3MsIGV4dGFjayk7XG4mIzQzO1x0aWYgKG5vdF9sb2NrbGVzcylcbiYjNDM7XHRcdHJ0bmxfdW5sb2NrKCk7XG4gXHR0Y2ZfcHJvdG9fY291bnRfdXNlc3codHAsIGZhbHNlKTtcbiBcdGlmIChzaWdfZGVzdHJveSlcbiBcdFx0dGNmX3Byb3RvX3NpZ25hbF9kZXN0cm95ZWQodHAtXHUwMDNlY2hhaW4sIHRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZGVsX3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZ2V0X3RmaWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtIHdoZXJlIGEgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTIzNzc0MzI1NDNhNWE5NWNkZmNkOTFiNTk5OWFkMmM5NTdmM2I5YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTI6NTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwppbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9jbHNfYXBpLmMKQEAgLTQ0Myw3ICYjNDM7NDQzLDIyIEBAIHN0YXRpYyB2b2lkIHRjZl9jaGFpbl9wdXQoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4pOwogc3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLAogCQkJICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewotCXRwLSZndDtvcHMtJmd0O2Rlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTsKJiM0MzsJLyogQSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIChlLmcuIHUzMl9kZXN0cm95KSB1c2VzCiYjNDM7CSAqIHJ0bmxfZGVyZWZlcmVuY2UoKSBhbmQgbXV0YXRlcyBzaGFyZWQgc3RydWN0dXJlcyAoZS5nLiB0aGUKJiM0MzsJICogdGNfdV9jb21tb24gaGFzaCBsaXN0KSB0aGF0IGFyZSBvbmx5IHNhZmUgdW5kZXIgcnRubF9sb2NrLiBXaGVuIGFuCiYjNDM7CSAqIHVubG9ja2VkIGNsYXNzaWZpZXImIzM5O3MgcmVxdWVzdCAoZS5nLiBmbG93ZXIgb24gaW5ncmVzcykgbG9zZXMgdGhlCiYjNDM7CSAqIHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlKCkgcmFjZSBhbmQgZW5kcyB1cCBkcm9wcGluZyB0aGUgbGFzdAomIzQzOwkgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1bgomIzQzOwkgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS4KJiM0MzsJICovCiYjNDM7CWJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCAmYW1wOyZhbXA7CiYjNDM7CQkhKHRwLSZndDtvcHMtJmd0O2ZsYWdzICZhbXA7IFRDRl9QUk9UT19PUFNfRE9JVF9VTkxPQ0tFRCk7CiYjNDM7CiYjNDM7CWlmIChub3RfbG9ja2xlc3MpCiYjNDM7CQlydG5sX2xvY2soKTsKJiM0MzsJdHAtJmd0O29wcy0mZ3Q7ZGVzdHJveSh0cCwgcnRubF9oZWxkIHx8IG5vdF9sb2NrbGVzcywgZXh0YWNrKTsKJiM0MzsJaWYgKG5vdF9sb2NrbGVzcykKJiM0MzsJCXJ0bmxfdW5sb2NrKCk7CiAJdGNmX3Byb3RvX2NvdW50X3VzZXN3KHRwLCBmYWxzZSk7CiAJaWYgKHNpZ19kZXN0cm95KQogCQl0Y2ZfcHJvdG9fc2lnbmFsX2Rlc3Ryb3llZCh0cC0mZ3Q7Y2hhaW4sIHRwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IFRyYWZmaWMgQ29udHJvbCBTdWJzeXN0ZW0qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjazogYGJvb2wgbm90X2xvY2tsZXNzYC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBncmFiIHRoZSBgcnRubF9sb2NrKClgIGJlZm9yZSBjYWxsaW5nIGB0cC0mZ3Q7b3BzLSZndDtkZXN0cm95YC4gVGhlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSBjaGVja2luZyBpZiB3ZSAqZG9uJiMzOTt0KiBhbHJlYWR5IGhvbGQgdGhlIFJUTkwgbG9jayAqYW5kKiBpZiB0aGUgcHJvdG9jb2wgb3BlcmF0aW9uIGl0c2VsZiBpc24mIzM5O3QgZXhwbGljaXRseSBtYXJrZWQgYXMgYmVpbmcgJiMzNDt1bmxvY2tlZCYjMzQ7LiBUaGUgbG9naWMgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGlmIHdlJiMzOTtyZSBub3QgbG9ja2VkIGFuZCB0aGUgb3BlcmF0aW9uIGlzbiYjMzk7dCBkZXNpZ25lZCB0byBiZSBsb2NrbGVzcywgd2UgKm5lZWQqIHRvIGdyYWIgdGhhdCBsb2NrIGJlZm9yZSBjYWxsaW5nIGBkZXN0cm95YC4gTWFrZXMgc2Vuc2U7IGl0JiMzOTtzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBmaXggaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB0cmFmZmljIGNvbnRyb2wgc3Vic3lzdGVtLiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2U7IGRlZmluaXRlbHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIHRoaXMgYXMgYSBoaWdoIHByaW9yaXR5IGZvciBvdXIgZnV6emluZyBlZmZvcnRzLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGltZSB0byBjaGVjayB0aGUgYHRjZl9wcm90b19kZXN0cm95YCBmdW5jdGlvbiBpdHNlbGYsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3MgZmluZCBhbGwgdGhlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbiB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9wcm90b19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jPTQ0MT1zdGF0aWMgdm9pZCB0Y2ZfY2hhaW5fcHV0KHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDQyLVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0NDM6c3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NDQtXHRcdFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDcwPXN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDczLVx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZ0cC1cdTAwM2VyZWZjbnQpKVxubmV0L3NjaGVkL2Nsc19hcGkuYzo0NzQ6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwLCBydG5sX2hlbGQsIHRydWUsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ3NS19XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xOTUyPXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvICp0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjQtXHRcdG11dGV4X3VubG9jayhcdTAwMjZjaGFpbi1cdTAwM2VmaWx0ZXJfY2hhaW5fbG9jayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5NjU6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjYtXHRcdHJldHVybiBFUlJfUFRSKC1FQUdBSU4pO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3NC1cdGlmICh0cCkge1xubmV0L3NjaGVkL2Nsc19hcGkuYzoxOTc1Olx0XHR0Y2ZfcHJvdG9fZGVzdHJveSh0cF9uZXcsIHJ0bmxfaGVsZCwgZmFsc2UsIE5VTEwpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc2LVx0XHR0cF9uZXcgPSB0cDtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3Ny1cdH0gZWxzZSBpZiAoZXJyKSB7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5Nzg6XHRcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NzktXHRcdHRwX25ldyA9IEVSUl9QVFIoZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzYxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRmxvdyBvZiBOZXR3b3JrIFRyYWZmaWMgQ29udHJvbCBTdHJ1Y3R1cmVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHRjZl9wcm90b19kZXN0cm95YCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbmV2ZXIgd2UmIzM5O3JlIGNsZWFuaW5nIHVwIHByb3RvY29sLXJlbGF0ZWQgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnZva2VkIGZyb20gdHdvIGtleSBwb2ludHM6IGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gTXkgZm9jdXMgbm93IHNoaWZ0cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGZvciAqdGhvc2UqIGZ1bmN0aW9ucy4gS25vd2luZyB3aG8gY2FsbHMgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIHdpbGwgZ2l2ZSBtZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGVuIGFuZCB3aHkgYHRjZl9wcm90b19kZXN0cm95YCBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBlbnRpcmUgbGlmZWN5Y2xlIG9mIHRoZXNlIHByb3RvY29sIGVsZW1lbnRzIHdpdGhpbiB0aGUgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yay4gVGhpcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSB0aGlzIGZpbmFsIGNsZWFudXAgc3RhZ2UuIEkmIzM5O2xsIHBpbnBvaW50IHRoZSBpbnNlcnRpb24gYW5kIGRlbGV0aW9uIHBhdGh3YXlzIHRvIGVuc3VyZSBvdXIgcmVzb3VyY2VzIGFyZSBtYW5hZ2VkIGVmZmljaWVudGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjZl9wcm90b19wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9NDQzPXN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ2OS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDcwOnN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NzEtXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz03NjQ9c3RhdGljIHZvaWQgdGNmX2NoYWluX2ZsdXNoKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBib29sIHJ0bmxfaGVsZClcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTc4Mi1cdFx0dHBfbmV4dCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQodHAtXHUwMDNlbmV4dCwgMSk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjc4MzpcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzg0LVx0XHR0cCA9IHRwX25leHQ7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMTY1PXRjZl9nZXRfbmV4dF9wcm90byhzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbiwgc3RydWN0IHRjZl9wcm90byAqdHApXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTY5LVx0aWYgKHRwKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTcwOlx0XHR0Y2ZfcHJvdG9fcHV0KHRwLCB0cnVlLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3MS1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMy1cdFx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYxNDpcdFx0XHQgICAgIHRjZl9wcm90b19wdXQodHBfcHJldiwgdHJ1ZSwgTlVMTCkpIHtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxNS1cdFx0XHRpZiAodHAtXHUwMDNlb3BzLVx1MDAzZXJlb2ZmbG9hZCkge1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYzMy1lcnJfcGxheWJhY2tfcmVtb3ZlOlxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNjM0Olx0dGNmX3Byb3RvX3B1dCh0cCwgdHJ1ZSwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE2MzUtXHR0Y2ZfY2hhaW5fcHV0KGNoYWluKTtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE5ODU9c3RhdGljIHZvaWQgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIwMjItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIwMjM6XHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIGV4dGFjayk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIwMjQtfVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjI1MT1zdGF0aWMgaW50IHRjX25ld190ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI0NjItXHRcdGlmICh0cCBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI0NjM6XHRcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjQ2NC1cdFx0aWYgKCF0cF9jcmVhdGVkKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjQ4Nz1zdGF0aWMgaW50IHRjX2RlbF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDItXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI2MDM6XHRcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDQtXHRcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgc2tiLCBuLCB0cCwgYmxvY2ssIHEsIHBhcmVudCwgZmgsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNjMwLVx0XHRpZiAodHAgXHUwMDI2XHUwMDI2ICFJU19FUlIodHApKVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNjMxOlx0XHRcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MzItXHRcdHRjZl9jaGFpbl9wdXQoY2hhaW4pO1xuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjY0Nj1zdGF0aWMgaW50IHRjX2dldF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI3NTktXHRcdGlmICh0cCBcdTAwMjZcdTAwMjYgIUlTX0VSUih0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjI3NjA6XHRcdFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjc2MS1cdFx0dGNmX2NoYWluX3B1dChjaGFpbik7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA1LVx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNjpcdFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpLFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA3LVx0XHQgICAgICgqcF9pbmRleCkmIzQzOyYjNDM7KSB7XG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODQ4LWVycm91dDpcbm5ldC9zY2hlZC9jbHNfYXBpLmM6Mjg0OTpcdHRjZl9wcm90b19wdXQodHAsIHRydWUsIE5VTEwpO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0yODUwLVx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMzkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29yZSBUcmFmZmljIENvbnRyb2wgUmFjZSBDb25kaXRpb24gRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBuZXQvc2NoZWQvY2xzX2FwaS5jYC4gU2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgY2FuIGdldCBjYWxsZWQgd2l0aG91dCB0aGUgYHJ0bmxfbG9ja2AgYmVpbmcgaGVsZCwgd2hpY2ggYSBwYXJ0aWN1bGFyIGNsYXNzaWZpZXIgbmVlZHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgcm9vdCBjYXVzZSBzZWVtcyB0byBiZSB3aGVuIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgbG9zZXMgYSByYWNlLCBkcm9wcGluZyB0aGUgbGFzdCByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllciYjMzk7cyBwcm90by4gQ2xldmVyLgoKVGhlIGZpeD8gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBCZWZvcmUgd2UgY2FsbCBgdHAtJmd0O29wcy0mZ3Q7ZGVzdHJveWAsIHRoZSBjb2RlIG5vdyBjaGVja3MgaWYgYHJ0bmxfaGVsZGAgaXMgZmFsc2UgKmFuZCogaWYgdGhlIGNsYXNzaWZpZXIgaXNuJiMzOTt0IGxvY2tsZXNz4oCUbWVhbmluZyBpdCBhY3R1YWxseSByZXF1aXJlcyB0aGUgbG9jayAoYCEodHAtJmd0O29wcy0mZ3Q7ZmxhZ3MgJmFtcDsgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKWApLiBJZiBib3RoIG9mIHRob3NlIGFyZSB0cnVlLCB0aGUgY29kZSAqdGFrZXMqIHRoZSBgcnRubF9sb2NrKClgIGZpcnN0LiBTaW1wbGUsIGJ1dCBlZmZlY3RpdmUuIEdvdHRhIGVuc3VyZSB0aGF0IGxvY2sgaXMgdGFrZW4uCgpUaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGZpeCBpbiB0aGUgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3ltYm9scyB0byB0YXJnZXQuIFRoZSBvYnZpb3VzIG9uZXMgYXJlIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgLiBBbmQgdGhlbiBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIGlzIGEgZ29vZCBjYW5kaWRhdGUsIGJ1dCBob2xkIG9uLCB0aGF0IG9uZSBpcyBzdGF0aWMuIFN0aWxsLCBpdCBpcyB1c2VkLCBzbyBsZXQmIzM5O3MgaW52ZXN0aWdhdGUgdGhlIGVudHJ5IHBvaW50cy4gU28gdGhlIGVudHJ5IHBvaW50cyBhcmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBjYWxsIHRoZSBmaXhlZCBjb2RlLiBHb29kLiBOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zLiBKdXN0IGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlJiMzOTtzIG5vdGhpbmcgb2J2aW91cyBJJiMzOTttIG1pc3NpbmcgYXQgdGhpcyBzdGFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbHNfYXBpLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXHRcdCYjNDM7PSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05FVF9DTFMpXHRcdCYjNDM7PSBjbHNfYXBpLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXHQmIzQzOz0gYWN0X2FwaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRXhhbWluaW5nIE5ldHdvcmsgQ2xhc3NpZmllciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgTkVUX0NMU2AuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGRlZXBlci4gSSBrbm93IHRoaXMgbW9kdWxlLCBhbmQgbXkgZXhwZXJpZW5jZSBpbW1lZGlhdGVseSBmbGFncyBgTkVUX1NDSEVEYCBhcyBwb3RlbnRpYWxseSBiZWluZyB0aWVkIHRvIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9DTFNgIGhhcyBhIGRlcGVuZGVuY3kgb24gYE5FVF9TQ0hFRGAuIEl0JiMzOTtzIGEgY29tbW9uIHBhaXJpbmcsIHNvIEkgZXhwZWN0IGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAuIENoZWNraW5nIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gY29uZmlybXMgaXQ6IGluZGVlZCwgYE5FVF9DTFNgIGRvZXMgcmVxdWlyZSBgTkVUX1NDSEVEYC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgcGllY2Ugb2YgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcJiMzNDtDbGFzc2lmaWNhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWctNDgwLVxubmV0L3NjaGVkL0tjb25maWc6NDgxOmNvbmZpZyBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXHRib29sXG5uZXQvc2NoZWQvS2NvbmZpZy00ODMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cdHRyaXN0YXRlIFwmIzM0O0VsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUwNjpjb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MzgtXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxubmV0L3NjaGVkL0tjb25maWctNTUxLVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbCBHcm91cCBDbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTYxLVxubmV0L3NjaGVkL0tjb25maWc6NTYyOmNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NzEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxubmV0L3NjaGVkL0tjb25maWctNTgzLVx0dHJpc3RhdGUgXCYjMzQ7TWF0Y2gtYWxsIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NTgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgYE5FVF9DTFNgIEJvb2xlYW4qKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBpdCYjMzk7cyBub3QgYSBzdGFuZGFsb25lIHZhcmlhYmxlLCBpcyBpdD8gSXQmIzM5O3MgYmVpbmcgKmluZmx1ZW5jZWQqIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBsaWtlbHkgdXBzdHJlYW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1dobyYjMzk7cyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lPyYjMzQ7LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCBvdXQgd2hhdCBvdGhlciBjb25maWdzIGFyZSBjb250cm9sbGluZyB0aGUgc3RhdGUgb2YgYE5FVF9DTFNgLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbDsgdGhpcyB3aWxsIGd1aWRlIG1lIGluIGdyYXNwaW5nIHRoZSBmdWxsIHBpY3R1cmUgYW5kIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGNvbmZsaWN0cyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgbGlua2VkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX0NMUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXHR0cmlzdGF0ZSBcJiMzNDtFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NjpcdHNlbGVjdCBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTg6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNDk5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTA4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTUwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MTY9Y29uZmlnIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTE4Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1NDE6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTQyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cdHRyaXN0YXRlIFwmIzM0O0NvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTUyOlx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NjI9Y29uZmlnIE5FVF9DTFNfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXHR0cmlzdGF0ZSBcJiMzNDtCUEYtYmFzZWQgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTY0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTc0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTU3NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01ODI9Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cdHRyaXN0YXRlIFwmIzM0O01hdGNoLWFsbCBjbGFzc2lmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU5Mj1jb25maWcgTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNTkzLVx0Ym9vbCBcJiMzNDtFeHRlbmRlZCBNYXRjaGVzXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1OTQ6XHRzZWxlY3QgTkVUX0NMU1xubmV0L3NjaGVkL0tjb25maWctNTk1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cdGJvb2wgXCYjMzQ7QWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzA0Olx0c2VsZWN0IE5FVF9DTFNcbm5ldC9zY2hlZC9LY29uZmlnLTcwNS1cdHNlbGVjdCBORVRfWEdSRVNTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3ODUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgTmV0d29yayBTY2hlZHVsZXJzIGFuZCBDbGFzc2lmaWVycyoqCgpPa2F5LCBzbyB3ZSBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgdHJhZmZpYyBzaGFwaW5nIGZ1bmN0aW9uYWxpdHksIG9idmlvdXNseS4gVGhlbiB3ZSYjMzk7bGwgbmVlZCBzb21lIGNsYXNzaWZpZXJzIHRvIGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoYXQgc2NoZWR1bGVyLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgdTMyX2Rlc3Ryb3lgIGFuZCAmIzM0O2Zsb3dlciBvbiBpbmdyZXNzLCYjMzQ7IHdoaWNoIHRlbGxzIG1lIHRoYXQgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgc29saWQgY2hvaWNlcy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgb24gdGhlIGxpc3QuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY3kgb2YgYE5FVF9TQ0hFRGAgYnkgcmVhZGluZyBgbmV0L0tjb25maWdgLCBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEyMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIGFuZCBUcmFmZmljIEZpbHRlciBBbmFseXNpcyoqCgpBbHJpZ2h0LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHBvaW50IGZvciB0aGlzIHNlZW1zIHRvIGJlIGBORVRfU0NIRURgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBNeSBpbW1lZGlhdGUgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQuIEkgc2VlIGEgbW9kaWZpY2F0aW9uIHRvIGB0Y2ZfcHJvdG9fZGVzdHJveWAuIEludGVyZXN0aW5nLiBXaGF0IGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBiZWluZyB0b3VjaGVkIGhlcmU/IEkgc2VlIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBhcmUgZXhwb3NlZC4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBleHBvcnRlZCBhbmQgaW50ZW5kZWQgZm9yIHdpZGVyIHVzZSwgb3IgYXJlIHRoZXkgZGVjbGFyZWQgYXMgc3RhdGljLCBsaW1pdGluZyB0aGVpciBzY29wZT8gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIHByb3ZpZGUgZnVydGhlciBpbnNpZ2h0cyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19uZXdfdGZpbHRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc19hcGkuYz0yMjQ2PXN0YXRpYyBib29sIGlzX2luZ3Jlc3Nfb3JfY2xzYWN0KHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgUWRpc2MgKnEpXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUwLVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyMjUxOnN0YXRpYyBpbnQgdGNfbmV3X3RmaWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVx0XHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmM9NDExNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgdGNfZmlsdGVyX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXVEZJTFRFUiwgLmRvaXQgPSB0Y19uZXdfdGZpbHRlcixcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDExOC1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHJ0bmV0bGluayBIYW5kbGVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgcnRuZXRsaW5rIGhhbmRsZXJzLiBUaGUgdGV4dCBub3RlcyB0aGF0IHRoZXkmIzM5O3JlIHN0YXRpYywgd2hpY2ggaW5pdGlhbGx5IGdvdCBtZSB0aGlua2luZy4gSWYgdGhleSYjMzk7cmUgc3RhdGljLCBhbmQgZXNwZWNpYWxseSBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgdGhlbiB0aGV5ICp3b3VsZG4mIzM5O3QqIGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgd2l0aGluIHRoZSBrZXJuZWwgaW1hZ2UuIEJ1dCB3YWl0LCBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgcnRubF9tc2dfaGFuZGxlcmAuIFRoYXQgc2V0dGxlcyBpdDsgdGhleSAqY2FuJiMzOTt0KiBiZSBpbmxpbmVkLiBUaGF0IGZ1bmN0aW9uIHBvaW50ZXIgY2FsbCBrZWVwcyB0aGVtIGluIHRoZSBzeW1ib2wgdGFibGUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIHRoZXkgYXJlIGluIHRoZSBzeW1ib2wgdGFibGUsIHRoZW4gc3l6a2FsbGVyLCBvciBhbnkgb3RoZXIgZnV6emVyLCBjYW4gc3RpbGwgdGFyZ2V0IGFuZCB0cmlnZ2VyIHRob3NlIGhhbmRsZXJzLgoKTm93LCBsZXQgbWUgY2hlY2sgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSAqYWxzbyogc3RhdGljLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBhcHBsaWVzIGFjcm9zcyBvdGhlciBjb2RlLiBPa2F5LCBgdGNmX3Byb3RvX2Rlc3Ryb3lgLCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLCBgdGNmX3Byb3RvX3B1dGAgYW5kIGB0Y2ZfY2hhaW5fZmx1c2hgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMsIGl0IGFwcGVhcnMuIEJ1dCB3aGF0IGFib3V0IGB0Y2ZfZ2V0X25leHRfcHJvdG9gPyBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGF0IHRvIHNlZSBpZiBpdCYjMzk7cyBhdmFpbGFibGUgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y2ZfZ2V0X25leHRfcHJvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MTEyMz1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExMjQ6X190Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTI1LXtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTExNjQ9c3RydWN0IHRjZl9wcm90byAqXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNjU6dGNmX2dldF9uZXh0X3Byb3RvKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cClcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2Ni17XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNjc6XHRzdHJ1Y3QgdGNmX3Byb3RvICp0cF9uZXh0ID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2OC1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExNzMtfVxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTc0OkVYUE9SVF9TWU1CT0wodGNmX2dldF9uZXh0X3Byb3RvKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3NS1cbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMC1cdFx0XHRcdFx0XHRcdCAgY2JfcHJpdik7XG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTE6XHRcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7IHRwO1xubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjEyLVx0XHQgICAgIHRwX3ByZXYgPSB0cCxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYxMzpcdFx0XHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxNC1cdFx0XHQgICAgIHRjZl9wcm90b19wdXQodHBfcHJldiwgdHJ1ZSwgTlVMTCkpIHtcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTIyMjE9c3RhdGljIHZvaWQgdGZpbHRlcl9ub3RpZnlfY2hhaW4oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqb3NrYixcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMjgtXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyMjk6XHRmb3IgKHRwID0gdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjIzMDpcdCAgICAgdHA7IHRwID0gdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCkpXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMzEtXHRcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgb3NrYiwgbiwgdHAsIGJsb2NrLCBxLCBwYXJlbnQsIE5VTEwsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXG4tLVxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODAxLVxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODAyOlx0Zm9yICh0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCBOVUxMKTtcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjgwMy1cdCAgICAgdHA7XG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDQtXHQgICAgIHRwX3ByZXYgPSB0cCxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNTpcdFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDYtXHRcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTmV0bGluayBBUEkgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgYHRjYCBmaWx0ZXIgbmV0bGluayBBUEkgd2l0aCBTeXprYWxsZXIuIFJpZ2h0LCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBhcmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzLiBUaGV5IGhhbmRsZSBuZXRsaW5rIG1lc3NhZ2VzIGRpcmVjdGx5LiBJIGtub3cgdGhleSYjMzk7cmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIHByZXR0eSBsYXJnZSwgZGVmaW5pdGVseSBub3QgaW5saW5lZCwgYW5kIGNydWNpYWxseSwgdGhleSYjMzk7cmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB2ZXJ5IGNsZWFyOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMuJiMzNDsKClRoaW5raW5nIGFib3V0IGl0IG1vcmUsIGB0Y19uZXdfdGZpbHRlcmAgaXMgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCBtZWFucyBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLCBzbyBpdCYjMzk7cyBhIHZlcnkgc29saWQgY2hvaWNlLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgb3RoZXIgZnVuY3Rpb25zLiBTaG91bGQgSSBhZGQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2A/IE5vLCB0aGF0JiMzOTtzIG9mZmxvYWQtc3BlY2lmaWMsIG5vdCBjb3JlIHRvIHRoZSBmaWx0ZXIgbG9naWMuIFdoYXQgYWJvdXQgYHRjZl9wcm90b19kZXN0cm95YD8gSXQmIzM5O3Mgc3RhdGljLCBzbyBpdCAqbWlnaHQqIGJlIGlubGluZWQuIEJ1dCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gbXVsdGlwbGUgcGxhY2VzLCBzbyBtYXliZSBub3Q/CgpJJiMzOTtsbCBzdGljayB3aXRoIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGZvciBub3cuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyB1c2VmdWwgaXMgZXhwb3J0ZWQgdGhhdCBkZXBlbmRzIG9uIHRoZW0sIGp1c3QgaW4gY2FzZSEKCkxldCBtZSBzZWUuLi5JIHdpbGwgY2hlY2sgdG8gc2VlIGlmIG90aGVyIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgdGhhdCBjYWxsIGB0Y2ZfcHJvdG9fZGVzdHJveWAgb3IgYHRjZl9wcm90b19wdXRgLgoKT2theSwgSSBzZWUgdGhhdCBgdGNmX2dldF9uZXh0X3Byb3RvYCBkb2VzIGNhbGwgYHRjZl9wcm90b19wdXRgLCBhbmQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2AgYWxzbyBjYWxscyBpdC4KCkp1c3QgZ29pbmcgdG8gcmUtY2hlY2sgYHRjX25ld190ZmlsdGVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfYXBpLmM9MjI0Nj1zdGF0aWMgYm9vbCBpc19pbmdyZXNzX29yX2Nsc2FjdChzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgc3RydWN0IFFkaXNjICpxKVxuLS1cbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjI1MTpzdGF0aWMgaW50IHRjX25ld190ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1Mi1cdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTQxMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIHRjX2ZpbHRlcl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xubmV0L3NjaGVkL2Nsc19hcGkuYzo0MTE3Olx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQxMTgtXHQgLmZsYWdzID0gUlROTF9GTEFHX0RPSVRfVU5MT0NLRUR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAyNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBSZXZpZXcgZm9yIFRyYWZmaWMgQ29udHJvbCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgbmV0bGluayBzZXR1cC4gUmlnaHQsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBJJiMzOTttIGZvY3VzaW5nIG9uLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyBwYXRjaCBtZW50aW9ucyBgdTMyX2Rlc3Ryb3lgIGFuZCBgZmxvd2VyIG9uIGluZ3Jlc3NgLCBzbyB0aGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludDogYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBzZWVtIHByb21pc2luZywgZGVmaW5pdGVseS4gQW5kIG9mIGNvdXJzZSwgYE5FVF9TQ0hFRGAgaXMgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciBhbnl0aGluZyB0cmFmZmljIGNvbnRyb2wgcmVsYXRlZC4gSGFuZyBvbiBhIHNlY29uZC4uLiBzaW5jZSBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGFyZSBzZWxlY3RlZCBieSBgTkVUX0NMU2AsIEkgZG9uJiMzOTt0IG5lZWQgdG8gc3BlY2lmeSBgTkVUX0NMU2Agc2VwYXJhdGVseSwgd2hpY2ggc3RyZWFtbGluZXMgdGhpbmdzIGEgYml0LiBTbyByZWFsbHksIEkganVzdCBuZWVkIHRvIGVuYWJsZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfVTMyYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgY2hlY2sgaWYgYE5FVF9DTFNfQUNUYCBpcyBhbHNvIGEgcmVxdWlyZW1lbnQuIFRoZSBwYXRjaCBtb2RpZmllcyBgY2xzX2FwaS5jYCwgd2hpY2ggaXMgY29tcGlsZWQgd2hlbiBgTkVUX0NMU2AgaXMgZW5hYmxlZCwgc28gdGhhdCB3aWxsIGhvcGVmdWxseSBjb3ZlciBpdC4gQSBxdWljayBsb29rIGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIHNob3VsZCBjb25maXJtIGV2ZXJ5dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nsc19hcGkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19ORVRfQ0xTX0FDVClcdCYjNDM7PSBhY3RfYXBpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgdGhlIFBhY2tldCBDbGFzc2lmaWVyIGZvciBNeSBTeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIGl0IHNlZW1zIGBORVRfQ0xTYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlLCB0aGUgb25lIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYGNsc19hcGkuY2AuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHRvIGdldCBgTkVUX0NMU2AgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29uZmlncyB0aGF0ICpzZWxlY3QqIGl0IGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgZW5hYmxpbmcgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gVGhlc2UgYXJlIHRoZSBib29sZWFuIG9wdGlvbnMgdGhhdCwgd2hlbiBzZXQsIHB1bGwgYE5FVF9DTFNgIGluLgoKTm93LCBqdXN0IGEgcXVpY2sgY29uZmlybWF0aW9uLCBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4KCkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGRvbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9mIHRoZWlyIG93bi4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGJsb2NrZXJzIEkmIzM5O20gbWlzc2luZy4gTGV0IG1lIGdvIHRocm91Z2ggdGhlbSwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0NMU19VMzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9DTFNfRkxPV0VSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz01NjI9Y29uZmlnIE5FVF9DTFNfQlBGXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTcxLVxubmV0L3NjaGVkL0tjb25maWc6NTcyOmNvbmZpZyBORVRfQ0xTX0ZMT1dFUlxubmV0L3NjaGVkL0tjb25maWctNTczLVx0dHJpc3RhdGUgXCYjMzQ7Rmxvd2VyIGNsYXNzaWZpZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMTMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA3MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmFjZSBDb25kaXRpb24gRml4IGluIFRyYWZmaWMgQ29udHJvbCBGaWx0ZXJpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuIE5vIHNwZWNpYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnQuIExldCYjMzk7cyByZXZpc2l0IGB0Y19uZXdfdGZpbHRlcmAuIElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoZSBwcmltYXJ5IGhhbmRsZXJzPyBZZXMsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgYW5kIGB0Y2ZfcHJvdG9fcHV0YC4gYHRjZl9wcm90b19wdXRgLCBpbiB0dXJuLCBpcyB1c2VkIGluIHF1aXRlIGEgZmV3IHBsYWNlczogYHRjZl9jaGFpbl9mbHVzaGAsIGB0Y2ZfZ2V0X25leHRfcHJvdG9gLCBgdGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzYCwgYHRjZl9jaGFpbl90cF9kZWxldGVfZW1wdHlgLCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBgdGNfZ2V0X3RmaWx0ZXJgLCBhbmQgYHRjZl9jaGFpbl9kdW1wYC4gVGhhdCBwb2ludHMgdG8gdGhlIG5ldGxpbmsgaGFuZGxlcnM6IGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50cyB0byBjb25zaWRlci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIHBhdGNoIGl0c2VsZi4gQWgsIEkgc2VlLCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbi4gSXQgbG9va3MgbGlrZSBgZGVzdHJveSgpYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgYHJ0bmxfbG9ja2Agd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuLiBUaGlzIG1lYW5zIGl0JiMzOTtzIGEgY3JpdGljYWwgZnVuY3Rpb25hbCBmaXguIERlZmluaXRlbHkgd29ydGggZnV6emluZyEKCkdpdmVuIHRoZSBmb2N1cyBvbiB0aGUgbmV0bGluayBoYW5kbGVycyBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldC4KClJlZ2FyZGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQuIGBORVRfU0NIRURgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdTMyIGFuZCBmbG93ZXIgY2xhc3NpZmllcnMsIGBORVRfQ0xTX1UzMmAgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXJlIGFsc28gY3JpdGljYWwuIExldCYjMzk7cyBhZGQgYE5FVF9DTFNfQkFTSUNgIGFzIGl0JiMzOTtzIG9mdGVuIGEgZ29vZCBkZWZhdWx0LiAgTm8sIG9uIHNlY29uZCB0aG91Z2h0LCBsZXQmIzM5O3MganVzdCB1c2UgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgLgoKRG8gSSBuZWVkIHRvIGVuYWJsZSBgTkVUX0NMU2AgZXhwbGljaXRseT8gVGhlIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoYXQgYXV0b21hdGljYWxseSBzaW5jZSBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIHNlbGVjdCBpdCwgYW5kIHRoZSBTeXprYWxsZXIgY29uZmlnIHN5c3RlbSBzaG91bGQgaGFuZGxlIHRoZSBkZXBlbmRlbmNpZXMuIEJ1dCBsZXQmIzM5O3MgY2hlY2suIFdhaXQsIGBORVRfQ0xTYCBkb2VzbiYjMzk7dCBldmVuIGhhdmUgYSBwcm9tcHQsIHNvIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBjb25maWd1cmFibGUuIFNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcJiMzNDtDbGFzc2lmaWNhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWctNDgwLVxubmV0L3NjaGVkL0tjb25maWc6NDgxOmNvbmZpZyBORVRfQ0xTXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXHRib29sXG5uZXQvc2NoZWQvS2NvbmZpZy00ODMtXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cdHRyaXN0YXRlIFwmIzM0O0VsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUwNjpjb25maWcgTkVUX0NMU19GV1xubmV0L3NjaGVkL0tjb25maWctNTA3LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG1hcmsgKEZXKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01MzgtXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xubmV0L3NjaGVkL0tjb25maWctNTQwLVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBjbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxubmV0L3NjaGVkL0tjb25maWctNTUxLVx0dHJpc3RhdGUgXCYjMzQ7Q29udHJvbCBHcm91cCBDbGFzc2lmaWVyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWctNTYxLVxubmV0L3NjaGVkL0tjb25maWc6NTYyOmNvbmZpZyBORVRfQ0xTX0JQRlxubmV0L3NjaGVkL0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7QlBGLWJhc2VkIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NzEtXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtGbG93ZXIgY2xhc3NpZmllclwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxubmV0L3NjaGVkL0tjb25maWctNTgzLVx0dHJpc3RhdGUgXCYjMzQ7TWF0Y2gtYWxsIGNsYXNzaWZpZXJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG4tLVxubmV0L3NjaGVkL0tjb25maWctNzAxLVxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzAzLVx0Ym9vbCBcJiMzNDtBY3Rpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTk4CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDI2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKgoKT2theSwgc28gYE5FVF9DTFNgIGlzIGJhc2ljYWxseSBhIGJvb2xlYW4sIG5vIHByb21wdGluZyBuZWVkZWQgdGhlcmUuIFdlJiMzOTt2ZSBnb3QgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgIGFzIHRoZSBtYWluIG9wdGlvbnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gV2hhdCBmdW5jdGlvbnMgYXJlICphY3R1YWxseSogbW9kaWZpZWQ/IExvb2tzIGxpa2UgYHRjZl9wcm90b19kZXN0cm95YCBpcyB0aGUga2V5IG9uZS4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZ1bmN0aW9ucyBjYWxsIGB0Y2ZfcHJvdG9fZGVzdHJveWAgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jeSBjaGFpbi4gSSBzZWUgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLiBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHRjX25ld190ZmlsdGVyYC4gQW5kIGB0Y2ZfcHJvdG9fcHV0YD8gVGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGJ1bmNoIG9mIHBsYWNlczogYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYHRjX2dldF90ZmlsdGVyYCwgYHRjZl9jaGFpbl9kdW1wYCwgYHRjZl9jaGFpbl9mbHVzaGAsIGB0Y2ZfZ2V0X25leHRfcHJvdG9gLCBgdGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzYCwgYW5kIGB0Y2ZfY2hhaW5fdHBfZGVsZXRlX2VtcHR5YC4KClRoZXJlZm9yZSwgdGhlIGtleSBlbnRyeSBwb2ludHMgdG8gZm9jdXMgb24gc2VlbSB0byBiZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gVGhleSBhcmUgdGhlIG1haW4gcG9pbnRzIHdoZXJlIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNhbGxlZC4KCkkmIzM5O2xsIHVzZSB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX1UzMiYjMzQ7LAogICAgJiMzNDtORVRfQ0xTX0ZMT1dFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjX25ld190ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2RlbF90ZmlsdGVyJiMzNDssCiAgICAmIzM0O3RjX2dldF90ZmlsdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXImIzM5O3MgZGVzdHJveSBjYWxsYmFjayBjb3VsZCBiZSBjYWxsZWQgd2l0aG91dCB0aGUgcnRubF9sb2NrIGhlbGQgd2hlbiBpdCBpcyByZXF1aXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluaywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDssCiAgICAmIzM0O05FVF9DTFNfRkxPV0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNfbmV3X3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZGVsX3RmaWx0ZXImIzM0OywKICAgICYjMzQ7dGNfZ2V0X3RmaWx0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdHJhZmZpYyBjb250cm9sICh0Yykgc3Vic3lzdGVtIHdoZXJlIGEgY2xhc3NpZmllciYjMzk7cyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MjMuMTMwNzgyMDc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MjUyOTQzODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzoyMy4xMzA3ODgwNzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjMwMzU0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMjM3NzQzMjU0M2E1YTk1Y2RmY2Q5MWI1OTk5YWQyYzk1N2YzYjliXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NTM6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25ldC9zY2hlZC9jbHNfYXBpLmNcXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9jbHNfYXBpLmNcXG4rKysgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXFxuQEAgLTQ0Myw3ICs0NDMsMjIgQEAgc3RhdGljIHZvaWQgdGNmX2NoYWluX3B1dChzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbik7XFxuIHN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcXG4gXFx0XFx0XFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuLVxcdHRwLVxcdTAwM2VvcHMtXFx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCwgZXh0YWNrKTtcXG4rXFx0LyogQSBsb2NrZWQgY2xhc3NpZmllcidzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcXG4rXFx0ICogcnRubF9kZXJlZmVyZW5jZSgpIGFuZCBtdXRhdGVzIHNoYXJlZCBzdHJ1Y3R1cmVzIChlLmcuIHRoZVxcbitcXHQgKiB0Y191X2NvbW1vbiBoYXNoIGxpc3QpIHRoYXQgYXJlIG9ubHkgc2FmZSB1bmRlciBydG5sX2xvY2suIFdoZW4gYW5cXG4rXFx0ICogdW5sb2NrZWQgY2xhc3NpZmllcidzIHJlcXVlc3QgKGUuZy4gZmxvd2VyIG9uIGluZ3Jlc3MpIGxvc2VzIHRoZVxcbitcXHQgKiB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZSgpIHJhY2UgYW5kIGVuZHMgdXAgZHJvcHBpbmcgdGhlIGxhc3RcXG4rXFx0ICogcmVmZXJlbmNlIG9uIGEgbG9ja2VkIGNsYXNzaWZpZXIncyBwcm90bywgZGVzdHJveSgpIHdvdWxkIHJ1blxcbitcXHQgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS5cXG4rXFx0ICovXFxuK1xcdGJvb2wgbm90X2xvY2tsZXNzID0gIXJ0bmxfaGVsZCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQhKHRwLVxcdTAwM2VvcHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKTtcXG4rXFxuK1xcdGlmIChub3RfbG9ja2xlc3MpXFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHR0cC1cXHUwMDNlb3BzLVxcdTAwM2VkZXN0cm95KHRwLCBydG5sX2hlbGQgfHwgbm90X2xvY2tsZXNzLCBleHRhY2spO1xcbitcXHRpZiAobm90X2xvY2tsZXNzKVxcbitcXHRcXHRydG5sX3VubG9jaygpO1xcbiBcXHR0Y2ZfcHJvdG9fY291bnRfdXNlc3codHAsIGZhbHNlKTtcXG4gXFx0aWYgKHNpZ19kZXN0cm95KVxcbiBcXHRcXHR0Y2ZfcHJvdG9fc2lnbmFsX2Rlc3Ryb3llZCh0cC1cXHUwMDNlY2hhaW4sIHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MjQuMjU0NDAwMjUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA4MTI5MzE3MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjM3NzQzMjU0M2E1YTk1Y2RmY2Q5MWI1OTk5YWQyYzk1N2YzYjliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjo1MzoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfYXBpLmMgYi9uZXQvc2NoZWQvY2xzX2FwaS5jXG5pbmRleCBmZWU0NTI0YWRjOThlLi40ZTZhMjgxMmE0ZjMyIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuY1xuKysrIGIvbmV0L3NjaGVkL2Nsc19hcGkuY1xuQEAgLTQ0Myw3ICs0NDMsMjIgQEAgc3RhdGljIHZvaWQgdGNmX2NoYWluX3B1dChzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbik7XG4gc3RhdGljIHZvaWQgdGNmX3Byb3RvX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxuIFx0XHRcdCAgICAgIGJvb2wgc2lnX2Rlc3Ryb3ksIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHR0cC1cdTAwM2VvcHMtXHUwMDNlZGVzdHJveSh0cCwgcnRubF9oZWxkLCBleHRhY2spO1xuK1x0LyogQSBsb2NrZWQgY2xhc3NpZmllcidzIGRlc3Ryb3kgY2FsbGJhY2sgKGUuZy4gdTMyX2Rlc3Ryb3kpIHVzZXNcbitcdCAqIHJ0bmxfZGVyZWZlcmVuY2UoKSBhbmQgbXV0YXRlcyBzaGFyZWQgc3RydWN0dXJlcyAoZS5nLiB0aGVcbitcdCAqIHRjX3VfY29tbW9uIGhhc2ggbGlzdCkgdGhhdCBhcmUgb25seSBzYWZlIHVuZGVyIHJ0bmxfbG9jay4gV2hlbiBhblxuK1x0ICogdW5sb2NrZWQgY2xhc3NpZmllcidzIHJlcXVlc3QgKGUuZy4gZmxvd2VyIG9uIGluZ3Jlc3MpIGxvc2VzIHRoZVxuK1x0ICogdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWUoKSByYWNlIGFuZCBlbmRzIHVwIGRyb3BwaW5nIHRoZSBsYXN0XG4rXHQgKiByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllcidzIHByb3RvLCBkZXN0cm95KCkgd291bGQgcnVuXG4rXHQgKiB3aXRob3V0IHJ0bmwgaGVsZC4gVGFrZSBpdCBoZXJlIGluIHRoYXQgY2FzZS5cbitcdCAqL1xuK1x0Ym9vbCBub3RfbG9ja2xlc3MgPSAhcnRubF9oZWxkIFx1MDAyNlx1MDAyNlxuK1x0XHQhKHRwLVx1MDAzZW9wcy1cdTAwM2VmbGFncyBcdTAwMjYgVENGX1BST1RPX09QU19ET0lUX1VOTE9DS0VEKTtcbitcbitcdGlmIChub3RfbG9ja2xlc3MpXG4rXHRcdHJ0bmxfbG9jaygpO1xuK1x0dHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3kodHAsIHJ0bmxfaGVsZCB8fCBub3RfbG9ja2xlc3MsIGV4dGFjayk7XG4rXHRpZiAobm90X2xvY2tsZXNzKVxuK1x0XHRydG5sX3VubG9jaygpO1xuIFx0dGNmX3Byb3RvX2NvdW50X3VzZXN3KHRwLCBmYWxzZSk7XG4gXHRpZiAoc2lnX2Rlc3Ryb3kpXG4gXHRcdHRjZl9wcm90b19zaWduYWxfZGVzdHJveWVkKHRwLVx1MDAzZWNoYWluLCB0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzoyNC4yNTQ0MDI0MDFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkwMTAzNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaDogVHJhZmZpYyBDb250cm9sIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvc2NoZWQvY2xzX2FwaS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjazogYGJvb2wgbm90X2xvY2tsZXNzYC4gQmFzaWNhbGx5LCBpdCdzIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIGdyYWIgdGhlIGBydG5sX2xvY2soKWAgYmVmb3JlIGNhbGxpbmcgYHRwLVx1MDAzZW9wcy1cdTAwM2VkZXN0cm95YC4gVGhlIGNvbmRpdGlvbiBzZWVtcyB0byBiZSBjaGVja2luZyBpZiB3ZSAqZG9uJ3QqIGFscmVhZHkgaG9sZCB0aGUgUlROTCBsb2NrICphbmQqIGlmIHRoZSBwcm90b2NvbCBvcGVyYXRpb24gaXRzZWxmIGlzbid0IGV4cGxpY2l0bHkgbWFya2VkIGFzIGJlaW5nIFwidW5sb2NrZWRcIi4gVGhlIGxvZ2ljIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBpZiB3ZSdyZSBub3QgbG9ja2VkIGFuZCB0aGUgb3BlcmF0aW9uIGlzbid0IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzLCB3ZSAqbmVlZCogdG8gZ3JhYiB0aGF0IGxvY2sgYmVmb3JlIGNhbGxpbmcgYGRlc3Ryb3lgLiBNYWtlcyBzZW5zZTsgaXQncyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4IGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbS4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlOyBkZWZpbml0ZWx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4gSSdsbCBmbGFnIHRoaXMgYXMgYSBoaWdoIHByaW9yaXR5IGZvciBvdXIgZnV6emluZyBlZmZvcnRzLlxuXG5Ob3csIGxldCdzIGRpdmUgZGVlcGVyIGFuZCBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFRpbWUgdG8gY2hlY2sgdGhlIGB0Y2ZfcHJvdG9fZGVzdHJveWAgZnVuY3Rpb24gaXRzZWxmLCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyBsZXQncyBmaW5kIGFsbCB0aGUgY2FsbGVycyBvZiB0aGF0IGZ1bmN0aW9uIHRvIHRyYWNlIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzozMC4xNDQ1MDkzODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI1NjMxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNmX3Byb3RvX2Rlc3Ryb3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTQ0MT1zdGF0aWMgdm9pZCB0Y2ZfY2hhaW5fcHV0KHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ0Mi1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQ0MzpzdGF0aWMgdm9pZCB0Y2ZfcHJvdG9fZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBydG5sX2hlbGQsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00NDQtXFx0XFx0XFx0ICAgICAgYm9vbCBzaWdfZGVzdHJveSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00NzA9c3RhdGljIHZvaWQgdGNmX3Byb3RvX3B1dChzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBydG5sX2hlbGQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTQ3My1cXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZ0cC1cXHUwMDNlcmVmY250KSlcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQ3NDpcXHRcXHR0Y2ZfcHJvdG9fZGVzdHJveSh0cCwgcnRubF9oZWxkLCB0cnVlLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDc1LX1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTk1Mj1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWUoc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NjQtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjaGFpbi1cXHUwMDNlZmlsdGVyX2NoYWluX2xvY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTk2NTpcXHRcXHR0Y2ZfcHJvdG9fZGVzdHJveSh0cF9uZXcsIHJ0bmxfaGVsZCwgZmFsc2UsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk2Ni1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUFHQUlOKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTk3NC1cXHRpZiAodHApIHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE5NzU6XFx0XFx0dGNmX3Byb3RvX2Rlc3Ryb3kodHBfbmV3LCBydG5sX2hlbGQsIGZhbHNlLCBOVUxMKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE5NzYtXFx0XFx0dHBfbmV3ID0gdHA7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc3LVxcdH0gZWxzZSBpZiAoZXJyKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxOTc4OlxcdFxcdHRjZl9wcm90b19kZXN0cm95KHRwX25ldywgcnRubF9oZWxkLCBmYWxzZSwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xOTc5LVxcdFxcdHRwX25ldyA9IEVSUl9QVFIoZXJyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6MzAuMTg3MDgwNzg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwNTQ5MDkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBGbG93IG9mIE5ldHdvcmsgVHJhZmZpYyBDb250cm9sIFN0cnVjdHVyZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGB0Y2ZfcHJvdG9fZGVzdHJveWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgY2FsbGVkIHdoZW5ldmVyIHdlJ3JlIGNsZWFuaW5nIHVwIHByb3RvY29sLXJlbGF0ZWQgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnZva2VkIGZyb20gdHdvIGtleSBwb2ludHM6IGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gTXkgZm9jdXMgbm93IHNoaWZ0cyB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGZvciAqdGhvc2UqIGZ1bmN0aW9ucy4gS25vd2luZyB3aG8gY2FsbHMgYHRjZl9wcm90b19wdXRgIGFuZCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgIHdpbGwgZ2l2ZSBtZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB3aGVuIGFuZCB3aHkgYHRjZl9wcm90b19kZXN0cm95YCBnZXRzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBlbnRpcmUgbGlmZWN5Y2xlIG9mIHRoZXNlIHByb3RvY29sIGVsZW1lbnRzIHdpdGhpbiB0aGUgdHJhZmZpYyBjb250cm9sIGZyYW1ld29yay4gVGhpcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSB0aGlzIGZpbmFsIGNsZWFudXAgc3RhZ2UuIEknbGwgcGlucG9pbnQgdGhlIGluc2VydGlvbiBhbmQgZGVsZXRpb24gcGF0aHdheXMgdG8gZW5zdXJlIG91ciByZXNvdXJjZXMgYXJlIG1hbmFnZWQgZWZmaWNpZW50bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1MzozNy42OTI1NzQyMDJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYzNzg5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNmX3Byb3RvX3B1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9NDQzPXN0YXRpYyB2b2lkIHRjZl9wcm90b19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIHJ0bmxfaGVsZCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDY5LVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6NDcwOnN0YXRpYyB2b2lkIHRjZl9wcm90b19wdXQoc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgcnRubF9oZWxkLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNDcxLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz03NjQ9c3RhdGljIHZvaWQgdGNmX2NoYWluX2ZsdXNoKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBib29sIHJ0bmxfaGVsZClcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzgyLVxcdFxcdHRwX25leHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLVxcdTAwM2VuZXh0LCAxKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjc4MzpcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtNzg0LVxcdFxcdHRwID0gdHBfbmV4dDtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MTE2NT10Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTY5LVxcdGlmICh0cClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjExNzA6XFx0XFx0dGNmX3Byb3RvX3B1dCh0cCwgdHJ1ZSwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xMTcxLVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xNTkzPXRjZl9ibG9ja19wbGF5YmFja19vZmZsb2FkcyhzdHJ1Y3QgdGNmX2Jsb2NrICpibG9jaywgZmxvd19zZXR1cF9jYl90ICpjYixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMy1cXHRcXHRcXHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTQ6XFx0XFx0XFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpKSB7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjE1LVxcdFxcdFxcdGlmICh0cC1cXHUwMDNlb3BzLVxcdTAwM2VyZW9mZmxvYWQpIHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYzMy1lcnJfcGxheWJhY2tfcmVtb3ZlOlxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTYzNDpcXHR0Y2ZfcHJvdG9fcHV0KHRwLCB0cnVlLCBOVUxMKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTE2MzUtXFx0dGNmX2NoYWluX3B1dChjaGFpbik7XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE5ODU9c3RhdGljIHZvaWQgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eShzdHJ1Y3QgdGNmX2NoYWluICpjaGFpbixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjAyMi1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIwMjM6XFx0dGNmX3Byb3RvX3B1dCh0cCwgcnRubF9oZWxkLCBleHRhY2spO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjAyNC19XFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTIyNTE9c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI0NjItXFx0XFx0aWYgKHRwIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjQ2MzpcXHRcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjQ2NC1cXHRcXHRpZiAoIXRwX2NyZWF0ZWQpXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTI0ODc9c3RhdGljIGludCB0Y19kZWxfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MDItXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNjAzOlxcdFxcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNjA0LVxcdFxcdHRmaWx0ZXJfbm90aWZ5KG5ldCwgc2tiLCBuLCB0cCwgYmxvY2ssIHEsIHBhcmVudCwgZmgsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI2MzAtXFx0XFx0aWYgKHRwIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIodHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjYzMTpcXHRcXHRcXHR0Y2ZfcHJvdG9fcHV0KHRwLCBydG5sX2hlbGQsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjYzMi1cXHRcXHR0Y2ZfY2hhaW5fcHV0KGNoYWluKTtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmM9MjY0Nj1zdGF0aWMgaW50IHRjX2dldF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjc1OS1cXHRcXHRpZiAodHAgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cCkpXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyNzYwOlxcdFxcdFxcdHRjZl9wcm90b19wdXQodHAsIHJ0bmxfaGVsZCwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yNzYxLVxcdFxcdHRjZl9jaGFpbl9wdXQoY2hhaW4pO1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDUtXFx0XFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODA2OlxcdFxcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDctXFx0XFx0ICAgICAoKnBfaW5kZXgpKyspIHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjg0OC1lcnJvdXQ6XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODQ5OlxcdHRjZl9wcm90b19wdXQodHAsIHRydWUsIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjg1MC1cXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjUzOjM3Ljc2ODk1ODU2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjI4ODMxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvcmUgVHJhZmZpYyBDb250cm9sIFJhY2UgQ29uZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG5ldC9zY2hlZC9jbHNfYXBpLmNgLiBTZWVtcyBsaWtlIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGNhbiBnZXQgY2FsbGVkIHdpdGhvdXQgdGhlIGBydG5sX2xvY2tgIGJlaW5nIGhlbGQsIHdoaWNoIGEgcGFydGljdWxhciBjbGFzc2lmaWVyIG5lZWRzLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUgcm9vdCBjYXVzZSBzZWVtcyB0byBiZSB3aGVuIGB0Y2ZfY2hhaW5fdHBfaW5zZXJ0X3VuaXF1ZWAgbG9zZXMgYSByYWNlLCBkcm9wcGluZyB0aGUgbGFzdCByZWZlcmVuY2Ugb24gYSBsb2NrZWQgY2xhc3NpZmllcidzIHByb3RvLiBDbGV2ZXIuXG5cblRoZSBmaXg/IEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBCZWZvcmUgd2UgY2FsbCBgdHAtXHUwMDNlb3BzLVx1MDAzZWRlc3Ryb3lgLCB0aGUgY29kZSBub3cgY2hlY2tzIGlmIGBydG5sX2hlbGRgIGlzIGZhbHNlICphbmQqIGlmIHRoZSBjbGFzc2lmaWVyIGlzbid0IGxvY2tsZXNz4oCUbWVhbmluZyBpdCBhY3R1YWxseSByZXF1aXJlcyB0aGUgbG9jayAoYCEodHAtXHUwMDNlb3BzLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ0ZfUFJPVE9fT1BTX0RPSVRfVU5MT0NLRUQpYCkuIElmIGJvdGggb2YgdGhvc2UgYXJlIHRydWUsIHRoZSBjb2RlICp0YWtlcyogdGhlIGBydG5sX2xvY2soKWAgZmlyc3QuIFNpbXBsZSwgYnV0IGVmZmVjdGl2ZS4gR290dGEgZW5zdXJlIHRoYXQgbG9jayBpcyB0YWtlbi5cblxuVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBmaXggaW4gdGhlIHRyYWZmaWMgY29udHJvbCBzdWJzeXN0ZW0sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgb2J2aW91cyBvbmVzIGFyZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gQW5kIHRoZW4gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBpcyBhIGdvb2QgY2FuZGlkYXRlLCBidXQgaG9sZCBvbiwgdGhhdCBvbmUgaXMgc3RhdGljLiBTdGlsbCwgaXQgaXMgdXNlZCwgc28gbGV0J3MgaW52ZXN0aWdhdGUgdGhlIGVudHJ5IHBvaW50cy4gU28gdGhlIGVudHJ5IHBvaW50cyBhcmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBjYWxsIHRoZSBmaXhlZCBjb2RlLiBHb29kLiBOb3csIEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG5ldC9zY2hlZC9jbHNfYXBpLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMuIEp1c3QgYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUncyBub3RoaW5nIG9idmlvdXMgSSdtIG1pc3NpbmcgYXQgdGhpcyBzdGFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1Mzo0OC4zOTc3OTIwMjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MjIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2xzX2FwaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXFx0Kz0gYWN0X2FwaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjUzOjQ4LjQ0NDIxOTI4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDg1MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgQ2xhc3NpZmllciBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnIGluIHF1ZXN0aW9uIGlzIGBORVRfQ0xTYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgZGVlcGVyLiBJIGtub3cgdGhpcyBtb2R1bGUsIGFuZCBteSBleHBlcmllbmNlIGltbWVkaWF0ZWx5IGZsYWdzIGBORVRfU0NIRURgIGFzIHBvdGVudGlhbGx5IGJlaW5nIHRpZWQgdG8gaXQuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGBORVRfQ0xTYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBORVRfU0NIRURgLiBJdCdzIGEgY29tbW9uIHBhaXJpbmcsIHNvIEkgZXhwZWN0IGEgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAuIENoZWNraW5nIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gY29uZmlybXMgaXQ6IGluZGVlZCwgYE5FVF9DTFNgIGRvZXMgcmVxdWlyZSBgTkVUX1NDSEVEYC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgcGllY2Ugb2YgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1Mzo1NS43OTI3NDM1NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjM3NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDc5PWNvbW1lbnQgXFxcIkNsYXNzaWZpY2F0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnLTQ4MC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODE6Y29uZmlnIE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy00ODItXFx0Ym9vbFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ4My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0ODQ6Y29uZmlnIE5FVF9DTFNfQkFTSUNcXG5uZXQvc2NoZWQvS2NvbmZpZy00ODUtXFx0dHJpc3RhdGUgXFxcIkVsZW1lbnRhcnkgY2xhc3NpZmljYXRpb24gKEJBU0lDKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5My1cXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTQ6Y29uZmlnIE5FVF9DTFNfUk9VVEU0XFxubmV0L3NjaGVkL0tjb25maWctNDk1LVxcdHRyaXN0YXRlIFxcXCJSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MDUtXFxubmV0L3NjaGVkL0tjb25maWc6NTA2OmNvbmZpZyBORVRfQ0xTX0ZXXFxubmV0L3NjaGVkL0tjb25maWctNTA3LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgbWFyayAoRlcpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUzOC1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1Mzk6Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTQ5LVxcbm5ldC9zY2hlZC9LY29uZmlnOjU1MDpjb25maWcgTkVUX0NMU19DR1JPVVBcXG5uZXQvc2NoZWQvS2NvbmZpZy01NTEtXFx0dHJpc3RhdGUgXFxcIkNvbnRyb2wgR3JvdXAgQ2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU2MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NjI6Y29uZmlnIE5FVF9DTFNfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNTYzLVxcdHRyaXN0YXRlIFxcXCJCUEYtYmFzZWQgY2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU4MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODI6Y29uZmlnIE5FVF9DTFNfTUFUQ0hBTExcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODMtXFx0dHJpc3RhdGUgXFxcIk1hdGNoLWFsbCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNzAxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjcwMjpjb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTM6NTUuODM5OTg5NjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzE4OTI1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkVUX0NMU2AgQm9vbGVhbioqXG5cbk9rYXksIHNvIGBORVRfQ0xTYCBpcyBkZWZpbmVkIGFzIGEgYm9vbGVhbiDigJMgdGhhdCBtdWNoIGlzIGNsZWFyLiBCdXQgaXQncyBub3QgYSBzdGFuZGFsb25lIHZhcmlhYmxlLCBpcyBpdD8gSXQncyBiZWluZyAqaW5mbHVlbmNlZCogYnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIGxpa2VseSB1cHN0cmVhbS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hvJ3MgcHVsbGluZyB0aGUgc3RyaW5ncyBvbiB0aGlzIG9uZT9cIi4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgb3V0IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgY29udHJvbGxpbmcgdGhlIHN0YXRlIG9mIGBORVRfQ0xTYC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWw7IHRoaXMgd2lsbCBndWlkZSBtZSBpbiBncmFzcGluZyB0aGUgZnVsbCBwaWN0dXJlIGFuZCBpZGVudGlmeWluZyBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb25mbGljdHMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBsaW5rZWQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDowMC44MTE4ODU4NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDAyMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfQ0xTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9NDg0PWNvbmZpZyBORVRfQ0xTX0JBU0lDXFxubmV0L3NjaGVkL0tjb25maWctNDg1LVxcdHRyaXN0YXRlIFxcXCJFbGVtZW50YXJ5IGNsYXNzaWZpY2F0aW9uIChCQVNJQylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NDg2OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNDg3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5Ny1cXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5ODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTA4OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUxNj1jb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUxODpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTUxOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01Mzk9Y29uZmlnIE5FVF9DTFNfRkxPV1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0MC1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU0MTpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXFxubmV0L3NjaGVkL0tjb25maWctNTUxLVxcdHRyaXN0YXRlIFxcXCJDb250cm9sIEdyb3VwIENsYXNzaWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTUyOlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjU2NDpcXHRzZWxlY3QgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU2NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01NzI9Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTgyPWNvbmZpZyBORVRfQ0xTX01BVENIQUxMXFxubmV0L3NjaGVkL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJNYXRjaC1hbGwgY2xhc3NpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo1ODQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy01ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTkyPWNvbmZpZyBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNTkzLVxcdGJvb2wgXFxcIkV4dGVuZGVkIE1hdGNoZXNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTk0OlxcdHNlbGVjdCBORVRfQ0xTXFxubmV0L3NjaGVkL0tjb25maWctNTk1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcwMj1jb25maWcgTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDMtXFx0Ym9vbCBcXFwiQWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3MDQ6XFx0c2VsZWN0IE5FVF9DTFNcXG5uZXQvc2NoZWQvS2NvbmZpZy03MDUtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6MDAuODU1ODk0MjY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NzUxNTQ4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW5hYmxpbmcgTmV0d29yayBTY2hlZHVsZXJzIGFuZCBDbGFzc2lmaWVycyoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gZW5hYmxlIGBORVRfU0NIRURgIOKAkyB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHRyYWZmaWMgc2hhcGluZyBmdW5jdGlvbmFsaXR5LCBvYnZpb3VzbHkuIFRoZW4gd2UnbGwgbmVlZCBzb21lIGNsYXNzaWZpZXJzIHRvIGFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoYXQgc2NoZWR1bGVyLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgdTMyX2Rlc3Ryb3lgIGFuZCBcImZsb3dlciBvbiBpbmdyZXNzLFwiIHdoaWNoIHRlbGxzIG1lIHRoYXQgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgc29saWQgY2hvaWNlcy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgb24gdGhlIGxpc3QuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGVwZW5kZW5jeSBvZiBgTkVUX1NDSEVEYCBieSByZWFkaW5nIGBuZXQvS2NvbmZpZ2AsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDowNS4zMzEwNTM3NDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzOTUzNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6MDUuMzk1MDE1MzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4ODkwOTI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gYW5kIFRyYWZmaWMgRmlsdGVyIEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBwb2ludCBmb3IgdGhpcyBzZWVtcyB0byBiZSBgTkVUX1NDSEVEYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4gTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvcmUgb2Ygd2hhdCdzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBjcml0aWNhbCBzeW1ib2xzIGludm9sdmVkLiBJIHNlZSBhIG1vZGlmaWNhdGlvbiB0byBgdGNmX3Byb3RvX2Rlc3Ryb3lgLiBJbnRlcmVzdGluZy4gV2hhdCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgYmVpbmcgdG91Y2hlZCBoZXJlPyBJIHNlZSBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGV4cG9zZWQuIEFyZSB0aGVzZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYW5kIGludGVuZGVkIGZvciB3aWRlciB1c2UsIG9yIGFyZSB0aGV5IGRlY2xhcmVkIGFzIHN0YXRpYywgbGltaXRpbmcgdGhlaXIgc2NvcGU/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBwcm92aWRlIGZ1cnRoZXIgaW5zaWdodHMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjEyLjQ4MzkyNzAzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NTMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTIyNDY9c3RhdGljIGJvb2wgaXNfaW5ncmVzc19vcl9jbHNhY3Qoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyNTE6c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciB0Y19maWx0ZXJfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XFx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTE4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjEyLjUzMDc4NjAyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjYwMzExODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBydG5ldGxpbmsgSGFuZGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBydG5ldGxpbmsgaGFuZGxlcnMuIFRoZSB0ZXh0IG5vdGVzIHRoYXQgdGhleSdyZSBzdGF0aWMsIHdoaWNoIGluaXRpYWxseSBnb3QgbWUgdGhpbmtpbmcuIElmIHRoZXkncmUgc3RhdGljLCBhbmQgZXNwZWNpYWxseSBpZiB0aGV5J3JlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB0aGVuIHRoZXkgKndvdWxkbid0KiBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIHdpdGhpbiB0aGUga2VybmVsIGltYWdlLiBCdXQgd2FpdCwgSSBzZWUgdGhhdCB0aGV5J3JlIGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBgcnRubF9tc2dfaGFuZGxlcmAuIFRoYXQgc2V0dGxlcyBpdDsgdGhleSAqY2FuJ3QqIGJlIGlubGluZWQuIFRoYXQgZnVuY3Rpb24gcG9pbnRlciBjYWxsIGtlZXBzIHRoZW0gaW4gdGhlIHN5bWJvbCB0YWJsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSwgaWYgdGhleSBhcmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgdGhlbiBzeXprYWxsZXIsIG9yIGFueSBvdGhlciBmdXp6ZXIsIGNhbiBzdGlsbCB0YXJnZXQgYW5kIHRyaWdnZXIgdGhvc2UgaGFuZGxlcnMuXG5cbk5vdywgbGV0IG1lIGNoZWNrIGZvciBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgKmFsc28qIHN0YXRpYy4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBhcHBsaWVzIGFjcm9zcyBvdGhlciBjb2RlLiBPa2F5LCBgdGNmX3Byb3RvX2Rlc3Ryb3lgLCBgdGNmX2NoYWluX3RwX2luc2VydF91bmlxdWVgLCBgdGNmX3Byb3RvX3B1dGAgYW5kIGB0Y2ZfY2hhaW5fZmx1c2hgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMsIGl0IGFwcGVhcnMuIEJ1dCB3aGF0IGFib3V0IGB0Y2ZfZ2V0X25leHRfcHJvdG9gPyBJcyBpdCBleHBvcnRlZD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoYXQgdG8gc2VlIGlmIGl0J3MgYXZhaWxhYmxlIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY1OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDoxOS43OTExMDA1MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTQ2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjZl9nZXRfbmV4dF9wcm90b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfYXBpLmM9MTEyMz1zdGF0aWMgc3RydWN0IHRjZl9wcm90byAqXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTI0Ol9fdGNmX2dldF9uZXh0X3Byb3RvKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgdGNmX3Byb3RvICp0cClcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExMjUte1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0xMTY0PXN0cnVjdCB0Y2ZfcHJvdG8gKlxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MTE2NTp0Y2ZfZ2V0X25leHRfcHJvdG8oc3RydWN0IHRjZl9jaGFpbiAqY2hhaW4sIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2Ni17XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTY3OlxcdHN0cnVjdCB0Y2ZfcHJvdG8gKnRwX25leHQgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgdHApO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE2OC1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTE3My19XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxMTc0OkVYUE9SVF9TWU1CT0wodGNmX2dldF9uZXh0X3Byb3RvKTtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTExNzUtXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jPTE1OTM9dGNmX2Jsb2NrX3BsYXliYWNrX29mZmxvYWRzKHN0cnVjdCB0Y2ZfYmxvY2sgKmJsb2NrLCBmbG93X3NldHVwX2NiX3QgKmNiLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjEwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgY2JfcHJpdik7XFxubmV0L3NjaGVkL2Nsc19hcGkuYzoxNjExOlxcdFxcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7IHRwO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMTYxMi1cXHRcXHQgICAgIHRwX3ByZXYgPSB0cCxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjE2MTM6XFx0XFx0XFx0ICAgICB0cCA9IF9fdGNmX2dldF9uZXh0X3Byb3RvKGNoYWluLCB0cCksXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0xNjE0LVxcdFxcdFxcdCAgICAgdGNmX3Byb3RvX3B1dCh0cF9wcmV2LCB0cnVlLCBOVUxMKSkge1xcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yMjIxPXN0YXRpYyB2b2lkIHRmaWx0ZXJfbm90aWZ5X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKm9za2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTIyMjgtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyMjI5OlxcdGZvciAodHAgPSB0Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIE5VTEwpO1xcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjIzMDpcXHQgICAgIHRwOyB0cCA9IHRjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgdHApKVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjIzMS1cXHRcXHR0ZmlsdGVyX25vdGlmeShuZXQsIG9za2IsIG4sIHRwLCBibG9jaywgcSwgcGFyZW50LCBOVUxMLFxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz0yNzkyPXN0YXRpYyBib29sIHRjZl9jaGFpbl9kdW1wKHN0cnVjdCB0Y2ZfY2hhaW4gKmNoYWluLCBzdHJ1Y3QgUWRpc2MgKnEsIHUzMiBwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDEtXFxubmV0L3NjaGVkL2Nsc19hcGkuYzoyODAyOlxcdGZvciAodHAgPSBfX3RjZl9nZXRfbmV4dF9wcm90byhjaGFpbiwgTlVMTCk7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODAzLVxcdCAgICAgdHA7XFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yODA0LVxcdCAgICAgdHBfcHJldiA9IHRwLFxcbm5ldC9zY2hlZC9jbHNfYXBpLmM6MjgwNTpcXHRcXHQgICAgIHRwID0gX190Y2ZfZ2V0X25leHRfcHJvdG8oY2hhaW4sIHRwKSxcXG5uZXQvc2NoZWQvY2xzX2FwaS5jLTI4MDYtXFx0XFx0ICAgICB0Y2ZfcHJvdG9fcHV0KHRwX3ByZXYsIHRydWUsIE5VTEwpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDoxOS44MzUyNTMyNTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxNzk4NTcwNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gTmV0bGluayBBUEkgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSB0YXJnZXQgdGhlIGB0Y2AgZmlsdGVyIG5ldGxpbmsgQVBJIHdpdGggU3l6a2FsbGVyLiBSaWdodCwgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gVGhleSBoYW5kbGUgbmV0bGluayBtZXNzYWdlcyBkaXJlY3RseS4gSSBrbm93IHRoZXkncmUgc3RhdGljIGZ1bmN0aW9ucywgYnV0IHRoZXkncmUgcHJldHR5IGxhcmdlLCBkZWZpbml0ZWx5IG5vdCBpbmxpbmVkLCBhbmQgY3J1Y2lhbGx5LCB0aGV5J3JlIGluIHRoZSBzeW1ib2wgdGFibGUsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4gVGhlIGluc3RydWN0aW9ucyBhcmUgdmVyeSBjbGVhcjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLlwiXG5cblRoaW5raW5nIGFib3V0IGl0IG1vcmUsIGB0Y19uZXdfdGZpbHRlcmAgaXMgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCBtZWFucyBpdCAqY2Fubm90KiBiZSBpbmxpbmVkLCBzbyBpdCdzIGEgdmVyeSBzb2xpZCBjaG9pY2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgb3RoZXIgZnVuY3Rpb25zLiBTaG91bGQgSSBhZGQgYHRjZl9ibG9ja19wbGF5YmFja19vZmZsb2Fkc2A/IE5vLCB0aGF0J3Mgb2ZmbG9hZC1zcGVjaWZpYywgbm90IGNvcmUgdG8gdGhlIGZpbHRlciBsb2dpYy4gV2hhdCBhYm91dCBgdGNmX3Byb3RvX2Rlc3Ryb3lgPyBJdCdzIHN0YXRpYywgc28gaXQgKm1pZ2h0KiBiZSBpbmxpbmVkLiBCdXQsIGl0J3MgY2FsbGVkIGZyb20gbXVsdGlwbGUgcGxhY2VzLCBzbyBtYXliZSBub3Q/XG5cbkknbGwgc3RpY2sgd2l0aCBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBhbmQgYHRjX2dldF90ZmlsdGVyYCBmb3Igbm93LiBMZXQncyBtYWtlIHN1cmUgbm90aGluZyB1c2VmdWwgaXMgZXhwb3J0ZWQgdGhhdCBkZXBlbmRzIG9uIHRoZW0sIGp1c3QgaW4gY2FzZSFcblxuTGV0IG1lIHNlZS4uLkkgd2lsbCBjaGVjayB0byBzZWUgaWYgb3RoZXIgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCB0aGF0IGNhbGwgYHRjZl9wcm90b19kZXN0cm95YCBvciBgdGNmX3Byb3RvX3B1dGAuXG5cbk9rYXksIEkgc2VlIHRoYXQgYHRjZl9nZXRfbmV4dF9wcm90b2AgZG9lcyBjYWxsIGB0Y2ZfcHJvdG9fcHV0YCwgYW5kIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgIGFsc28gY2FsbHMgaXQuXG5cbkp1c3QgZ29pbmcgdG8gcmUtY2hlY2sgYHRjX25ld190ZmlsdGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6NDYuMDE1MTEzMDMyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQwMjg5ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX2FwaS5jPTIyNDY9c3RhdGljIGJvb2wgaXNfaW5ncmVzc19vcl9jbHNhY3Qoc3RydWN0IHRjZl9ibG9jayAqYmxvY2ssIHN0cnVjdCBRZGlzYyAqcSlcXG4tLVxcbm5ldC9zY2hlZC9jbHNfYXBpLmMtMjI1MC1cXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjIyNTE6c3RhdGljIGludCB0Y19uZXdfdGZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL2Nsc19hcGkuYy0yMjUyLVxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL2Nsc19hcGkuYz00MTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciB0Y19maWx0ZXJfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvY2xzX2FwaS5jOjQxMTc6XFx0ey5tc2d0eXBlID0gUlRNX05FV1RGSUxURVIsIC5kb2l0ID0gdGNfbmV3X3RmaWx0ZXIsXFxubmV0L3NjaGVkL2Nsc19hcGkuYy00MTE4LVxcdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRE9JVF9VTkxPQ0tFRH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU0OjQ2LjI3OTE0NzM4OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk4OTkwMjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIFJldmlldyBmb3IgVHJhZmZpYyBDb250cm9sKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbmV0bGluayBzZXR1cC4gUmlnaHQsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGFuZCBgdGNfZ2V0X3RmaWx0ZXJgIGFyZSB0aGUgaGFuZGxlcnMgdGhhdCBJJ20gZm9jdXNpbmcgb24uIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIG1lbnRpb25zIGB1MzJfZGVzdHJveWAgYW5kIGBmbG93ZXIgb24gaW5ncmVzc2AsIHNvIHRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50OiBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIHNlZW0gcHJvbWlzaW5nLCBkZWZpbml0ZWx5LiBBbmQgb2YgY291cnNlLCBgTkVUX1NDSEVEYCBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIGFueXRoaW5nIHRyYWZmaWMgY29udHJvbCByZWxhdGVkLiBIYW5nIG9uIGEgc2Vjb25kLi4uIHNpbmNlIGBORVRfQ0xTX1UzMmAgYW5kIGBORVRfQ0xTX0ZMT1dFUmAgYXJlIHNlbGVjdGVkIGJ5IGBORVRfQ0xTYCwgSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYE5FVF9DTFNgIHNlcGFyYXRlbHksIHdoaWNoIHN0cmVhbWxpbmVzIHRoaW5ncyBhIGJpdC4gU28gcmVhbGx5LCBJIGp1c3QgbmVlZCB0byBlbmFibGUgYE5FVF9TQ0hFRGAsIGBORVRfQ0xTX1UzMmAsIGFuZCBgTkVUX0NMU19GTE9XRVJgLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIGlmIGBORVRfQ0xTX0FDVGAgaXMgYWxzbyBhIHJlcXVpcmVtZW50LiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNsc19hcGkuY2AsIHdoaWNoIGlzIGNvbXBpbGVkIHdoZW4gYE5FVF9DTFNgIGlzIGVuYWJsZWQsIHNvIHRoYXQgd2lsbCBob3BlZnVsbHkgY292ZXIgaXQuIEEgcXVpY2sgbG9vayBhdCBgbmV0L3NjaGVkL01ha2VmaWxlYCBzaG91bGQgY29uZmlybSBldmVyeXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAyNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1MS4wNzgxNDAxMDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDMwMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsc19hcGkub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORVRfU0NIRUQpXFx0XFx0Kz0gc2NoX2FwaS5vIHNjaF9ibGFja2hvbGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkVUX0NMUylcXHRcXHQrPSBjbHNfYXBpLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVxcdCs9IGFjdF9hcGkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1MS4xMjYxNzU5MDdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MzkyODgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyB0aGUgUGFja2V0IENsYXNzaWZpZXIgZm9yIE15IFN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiwgYW5kIGl0IHNlZW1zIGBORVRfQ0xTYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlLCB0aGUgb25lIHRoYXQgYWN0dWFsbHkgY29tcGlsZXMgYGNsc19hcGkuY2AuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHRvIGdldCBgTkVUX0NMU2AgZW5hYmxlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29uZmlncyB0aGF0ICpzZWxlY3QqIGl0IGFyZSBlbmFibGVkLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgZW5hYmxpbmcgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYC4gVGhlc2UgYXJlIHRoZSBib29sZWFuIG9wdGlvbnMgdGhhdCwgd2hlbiBzZXQsIHB1bGwgYE5FVF9DTFNgIGluLlxuXG5Ob3csIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBORVRfU0NIRURgIGlzIHRoZSBwcmltYXJ5IG1lbnVjb25maWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoLlxuXG5CZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX0NMU19VMzJgIGFuZCBgTkVUX0NMU19GTE9XRVJgIGRvbid0IGhhdmUgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMgb2YgdGhlaXIgb3duLiBHb3R0YSBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBibG9ja2VycyBJJ20gbWlzc2luZy4gTGV0IG1lIGdvIHRocm91Z2ggdGhlbSwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1NS4zNzAxMDY5NzRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzE2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTE1LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1NS40MTM4MjY3OTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkzOTYyNTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEyMDk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NDo1Ny4zNTM0NTUwOTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjY0ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX0ZMT1dFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTU2Mj1jb25maWcgTkVUX0NMU19CUEZcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1NzI6Y29uZmlnIE5FVF9DTFNfRkxPV0VSXFxubmV0L3NjaGVkL0tjb25maWctNTczLVxcdHRyaXN0YXRlIFxcXCJGbG93ZXIgY2xhc3NpZmllclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTQ6NTcuMzk3NzI5NDc0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5ODI0MjM4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmFjZSBDb25kaXRpb24gRml4IGluIFRyYWZmaWMgQ29udHJvbCBGaWx0ZXJpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBhc3Nlc3NpbmcgaXRzIGZ1enppbmcgcG90ZW50aWFsLiBObyBzcGVjaWFsIGRlcGVuZGVuY2llcywgd2hpY2ggaXMgYSBnb29kIHN0YXJ0LiBMZXQncyByZXZpc2l0IGB0Y19uZXdfdGZpbHRlcmAuIElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBiZXNpZGVzIHRoZSBwcmltYXJ5IGhhbmRsZXJzPyBZZXMsIGl0J3MgY2FsbGVkIGZyb20gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBhbmQgYHRjZl9wcm90b19wdXRgLiBgdGNmX3Byb3RvX3B1dGAsIGluIHR1cm4sIGlzIHVzZWQgaW4gcXVpdGUgYSBmZXcgcGxhY2VzOiBgdGNmX2NoYWluX2ZsdXNoYCwgYHRjZl9nZXRfbmV4dF9wcm90b2AsIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgLCBgdGNmX2NoYWluX3RwX2RlbGV0ZV9lbXB0eWAsIGB0Y19uZXdfdGZpbHRlcmAsIGB0Y19kZWxfdGZpbHRlcmAsIGB0Y19nZXRfdGZpbHRlcmAsIGFuZCBgdGNmX2NoYWluX2R1bXBgLiBUaGF0IHBvaW50cyB0byB0aGUgbmV0bGluayBoYW5kbGVyczogYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRzIHRvIGNvbnNpZGVyLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIHBhdGNoIGl0c2VsZi4gQWgsIEkgc2VlLCBpdCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbi4gSXQgbG9va3MgbGlrZSBgZGVzdHJveSgpYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgYHJ0bmxfbG9ja2Agd2hlbiBpdCBzaG91bGQgaGF2ZSBiZWVuLiBUaGlzIG1lYW5zIGl0J3MgYSBjcml0aWNhbCBmdW5jdGlvbmFsIGZpeC4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIVxuXG5HaXZlbiB0aGUgZm9jdXMgb24gdGhlIG5ldGxpbmsgaGFuZGxlcnMgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAgYXJlIHRoZSBrZXkgc3ltYm9scyB0byB0YXJnZXQuXG5cblJlZ2FyZGluZyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQuIGBORVRfU0NIRURgIGlzIGVzc2VudGlhbCwgYW5kIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB1MzIgYW5kIGZsb3dlciBjbGFzc2lmaWVycywgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcmUgYWxzbyBjcml0aWNhbC4gTGV0J3MgYWRkIGBORVRfQ0xTX0JBU0lDYCBhcyBpdCdzIG9mdGVuIGEgZ29vZCBkZWZhdWx0LiAgTm8sIG9uIHNlY29uZCB0aG91Z2h0LCBsZXQncyBqdXN0IHVzZSBgTkVUX1NDSEVEYCwgYE5FVF9DTFNfVTMyYCwgYW5kIGBORVRfQ0xTX0ZMT1dFUmAuXG5cbkRvIEkgbmVlZCB0byBlbmFibGUgYE5FVF9DTFNgIGV4cGxpY2l0bHk/IFRoZSBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGF0IGF1dG9tYXRpY2FsbHkgc2luY2UgYE5FVF9DTFNfVTMyYCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBzZWxlY3QgaXQsIGFuZCB0aGUgU3l6a2FsbGVyIGNvbmZpZyBzeXN0ZW0gc2hvdWxkIGhhbmRsZSB0aGUgZGVwZW5kZW5jaWVzLiBCdXQgbGV0J3MgY2hlY2suIFdhaXQsIGBORVRfQ0xTYCBkb2Vzbid0IGV2ZW4gaGF2ZSBhIHByb21wdCwgc28gaXQncyBub3QgZGlyZWN0bHkgY29uZmlndXJhYmxlLiBTbyB3ZSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjEzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjU1OjA2LjM4MDE1Njk0MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzgxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9DTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz00Nzk9Y29tbWVudCBcXFwiQ2xhc3NpZmljYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWctNDgwLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4MTpjb25maWcgTkVUX0NMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4Mi1cXHRib29sXFxubmV0L3NjaGVkL0tjb25maWctNDgzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ4NDpjb25maWcgTkVUX0NMU19CQVNJQ1xcbm5ldC9zY2hlZC9LY29uZmlnLTQ4NS1cXHR0cmlzdGF0ZSBcXFwiRWxlbWVudGFyeSBjbGFzc2lmaWNhdGlvbiAoQkFTSUMpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDkzLVxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NDpjb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUwNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MDY6Y29uZmlnIE5FVF9DTFNfRldcXG5uZXQvc2NoZWQvS2NvbmZpZy01MDctXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBtYXJrIChGVylcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01MTUtXFxubmV0L3NjaGVkL0tjb25maWc6NTE2OmNvbmZpZyBORVRfQ0xTX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cXHR0cmlzdGF0ZSBcXFwiVW5pdmVyc2FsIDMyYml0IGNvbXBhcmlzb25zIHcvIGhhc2hpbmcgKFUzMilcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTM4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjUzOTpjb25maWcgTkVUX0NMU19GTE9XXFxubmV0L3NjaGVkL0tjb25maWctNTQwLVxcdHRyaXN0YXRlIFxcXCJGbG93IGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy01NDktXFxubmV0L3NjaGVkL0tjb25maWc6NTUwOmNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbm5ldC9zY2hlZC9LY29uZmlnLTU1MS1cXHR0cmlzdGF0ZSBcXFwiQ29udHJvbCBHcm91cCBDbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTYxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU2Mjpjb25maWcgTkVUX0NMU19CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy01NjMtXFx0dHJpc3RhdGUgXFxcIkJQRi1iYXNlZCBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU3Mjpjb25maWcgTkVUX0NMU19GTE9XRVJcXG5uZXQvc2NoZWQvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIkZsb3dlciBjbGFzc2lmaWVyXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTgxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjU4Mjpjb25maWcgTkVUX0NMU19NQVRDSEFMTFxcbm5ldC9zY2hlZC9LY29uZmlnLTU4My1cXHR0cmlzdGF0ZSBcXFwiTWF0Y2gtYWxsIGNsYXNzaWZpZXJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy03MDEtXFxubmV0L3NjaGVkL0tjb25maWc6NzAyOmNvbmZpZyBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcwMy1cXHRib29sIFxcXCJBY3Rpb25zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo1NTowNi40MjQ2MDEyOTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg4MTE3Nzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKlxuXG5Pa2F5LCBzbyBgTkVUX0NMU2AgaXMgYmFzaWNhbGx5IGEgYm9vbGVhbiwgbm8gcHJvbXB0aW5nIG5lZWRlZCB0aGVyZS4gV2UndmUgZ290IGBORVRfU0NIRURgLCBgTkVUX0NMU19VMzJgLCBhbmQgYE5FVF9DTFNfRkxPV0VSYCBhcyB0aGUgbWFpbiBvcHRpb25zLlxuXG5BbHJpZ2h0LCBsZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBXaGF0IGZ1bmN0aW9ucyBhcmUgKmFjdHVhbGx5KiBtb2RpZmllZD8gTG9va3MgbGlrZSBgdGNmX3Byb3RvX2Rlc3Ryb3lgIGlzIHRoZSBrZXkgb25lLiBOb3csIGxldCdzIHNlZSB3aGljaCBmdW5jdGlvbnMgY2FsbCBgdGNmX3Byb3RvX2Rlc3Ryb3lgIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgc2VlIGB0Y2ZfcHJvdG9fcHV0YCBhbmQgYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYC4gYHRjZl9jaGFpbl90cF9pbnNlcnRfdW5pcXVlYCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYHRjX25ld190ZmlsdGVyYC4gQW5kIGB0Y2ZfcHJvdG9fcHV0YD8gVGhhdCdzIGNhbGxlZCBmcm9tIGEgYnVuY2ggb2YgcGxhY2VzOiBgdGNfbmV3X3RmaWx0ZXJgLCBgdGNfZGVsX3RmaWx0ZXJgLCBgdGNfZ2V0X3RmaWx0ZXJgLCBgdGNmX2NoYWluX2R1bXBgLCBgdGNmX2NoYWluX2ZsdXNoYCwgYHRjZl9nZXRfbmV4dF9wcm90b2AsIGB0Y2ZfYmxvY2tfcGxheWJhY2tfb2ZmbG9hZHNgLCBhbmQgYHRjZl9jaGFpbl90cF9kZWxldGVfZW1wdHlgLlxuXG5UaGVyZWZvcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIHRvIGZvY3VzIG9uIHNlZW0gdG8gYmUgYHRjX25ld190ZmlsdGVyYCwgYHRjX2RlbF90ZmlsdGVyYCwgYW5kIGB0Y19nZXRfdGZpbHRlcmAuIFRoZXkgYXJlIHRoZSBtYWluIHBvaW50cyB3aGVyZSB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZSBjYWxsZWQuXG5cbkknbGwgdXNlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBmb3Igc2V0dGluZyByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE5OCwiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTU6MTIuMzA1NzgxNjczWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5MzI5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX0NMU19VMzJcIixcbiAgICBcIk5FVF9DTFNfRkxPV0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNfbmV3X3RmaWx0ZXJcIixcbiAgICBcInRjX2RlbF90ZmlsdGVyXCIsXG4gICAgXCJ0Y19nZXRfdGZpbHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRyYWZmaWMgY29udHJvbCAodGMpIHN1YnN5c3RlbSB3aGVyZSBhIGNsYXNzaWZpZXIncyBkZXN0cm95IGNhbGxiYWNrIGNvdWxkIGJlIGNhbGxlZCB3aXRob3V0IHRoZSBydG5sX2xvY2sgaGVsZCB3aGVuIGl0IGlzIHJlcXVpcmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow794kf[1] Phase: Succeeded StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 12:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 12:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2] Phase: Succeeded StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 12:55:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 12:55:23 +0000 UTC FinishedAt: 2026-08-02 12:55:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow794kf/series-workflow794kf-convert-artifact-337522258/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 12:55:33 +0000 UTC FinishedAt: 2026-08-02 13:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 12:55:33 +0000 UTC FinishedAt: 2026-08-02 13:15:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*fa895a8a-29b4-44b0-9bd0-2dcb82533686,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-workflow794kf/series-workflow794kf-convert-artifact-337522258/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": "797bbdce-bd22-4b25-8636-a879d15aa877", "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-workflow794kf/series-workflow794kf-build-action-255697616/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 12:55:33 +0000 UTC FinishedAt: 2026-08-02 13:15:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*fa895a8a-29b4-44b0-9bd0-2dcb82533686,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-workflow794kf/series-workflow794kf-convert-artifact-337522258/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": "797bbdce-bd22-4b25-8636-a879d15aa877", "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-workflow794kf/series-workflow794kf-build-action-255697616/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 13:15:58 +0000 UTC FinishedAt: 2026-08-02 13:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 13:15:58 +0000 UTC FinishedAt: 2026-08-02 13:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 13:15:58 +0000 UTC FinishedAt: 2026-08-02 13:16:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 13:15:58 +0000 UTC FinishedAt: 2026-08-02 13:16:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow794kf/series-workflow794kf-convert-artifact-3460776301/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 13:16:08 +0000 UTC FinishedAt: 2026-08-02 13:18:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 13:16:08 +0000 UTC FinishedAt: 2026-08-02 13:18:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*797bbdce-bd22-4b25-8636-a879d15aa877,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-workflow794kf/series-workflow794kf-build-action-255697616/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-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 13:18:32 +0000 UTC FinishedAt: 2026-08-02 13:18:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 13:18:32 +0000 UTC FinishedAt: 2026-08-02 13:18:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 13:18:32 +0000 UTC FinishedAt: 2026-08-02 13:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 13:18:32 +0000 UTC FinishedAt: 2026-08-02 13:38:18 +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:*fa895a8a-29b4-44b0-9bd0-2dcb82533686,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-workflow794kf/series-workflow794kf-convert-artifact-3460776301/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": "db151672-c1c7-43ab-bfec-a638443164eb", "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-workflow794kf/series-workflow794kf-build-action-581825225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 13:18:32 +0000 UTC FinishedAt: 2026-08-02 13:38:08 +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:*fa895a8a-29b4-44b0-9bd0-2dcb82533686,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-workflow794kf/series-workflow794kf-convert-artifact-3460776301/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": "db151672-c1c7-43ab-bfec-a638443164eb", "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-workflow794kf/series-workflow794kf-build-action-581825225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 13:38:18 +0000 UTC FinishedAt: 2026-08-02 13:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 13:38:18 +0000 UTC FinishedAt: 2026-08-02 13:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 13:38:18 +0000 UTC FinishedAt: 2026-08-02 13:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 13:38:18 +0000 UTC FinishedAt: 2026-08-02 13:40:01 +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:*db151672-c1c7-43ab-bfec-a638443164eb,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-workflow794kf/series-workflow794kf-build-action-581825225/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-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +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":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"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:*797bbdce-bd22-4b25-8636-a879d15aa877,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db151672-c1c7-43ab-bfec-a638443164eb,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-workflow794kf/series-workflow794kf-build-action-255697616/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-workflow794kf/series-workflow794kf-build-action-581825225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 13:40:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 13:40:16 +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":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"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-workflow794kf/series-workflow794kf-convert-artifact-2091501522/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 13:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 13:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 13:40:11 +0000 UTC FinishedAt: 2026-08-02 13:40:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 13:40:21 +0000 UTC FinishedAt: 2026-08-02 16:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow794kf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tc_new_tfilter","tc_del_tfilter","tc_get_tfilter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"69963a0678a347d57c4ac8b16939dba216eb95ce","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_CLS_U32","NET_CLS_FLOWER"],"series_id":"e04e34a0-4bd6-4941-bbaa-10df42bede29","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 13:40:21 +0000 UTC FinishedAt: 2026-08-02 16:43:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*797bbdce-bd22-4b25-8636-a879d15aa877,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db151672-c1c7-43ab-bfec-a638443164eb,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-workflow794kf/series-workflow794kf-build-action-255697616/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-workflow794kf/series-workflow794kf-build-action-581825225/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-workflow794kf/series-workflow794kf-convert-artifact-2091501522/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,}