Name: series-workflowqpqb5 Phase: Succeeded StartedAt: 2026-07-21 13:43:39 +0000 UTC FinishedAt: 2026-07-21 15:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[0] Phase: Succeeded StartedAt: 2026-07-21 13:43:39 +0000 UTC FinishedAt: 2026-07-21 14:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 13:43:39 +0000 UTC FinishedAt: 2026-07-21 14:23:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "series_id": "e150d2e5-613a-430d-b6b9-4a84d116380c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kmem_cache_return_sheaf", "kmem_cache_refill_sheaf", "kmem_cache_prefill_sheaf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYmIzM0OywKICAgICYjMzQ7a21lbV9jYWNoZV9yZWZpbGxfc2hlYWYmIzM0OywKICAgICYjMzQ7a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvciYjMzk7cyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U5MGVjOTY0MzdiYzM4MDM0NDc4Y2ExZjRjOTkwNjcxNzYwNzA5MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjIxOjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggNTNiNDk3NmQzODMxOGYuLjM1N2I3NTIyYzgxNzAwIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmNcbkBAIC01MTIzLDcgJiM0Mzs1MTIzLDcgQEAgdm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuIFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxuIFx0ICovXG4gXHRpZiAoIWJhcm4gfHwgZGF0YV9yYWNlKGJhcm4tXHUwMDNlbnJfZnVsbCkgXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XG4tXHQgICAgcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnApKSB7XG4mIzQzO1x0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcbiBcdFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcbiBcdFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNMVUIgYWxsb2NhdG9yJiMzOTtzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlOTBlYzk2NDM3YmMzODAzNDQ3OGNhMWY0Yzk5MDY3MTc2MDcwOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCA1M2I0OTc2ZDM4MzE4Zi4uMzU3Yjc1MjJjODE3MDAgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmMKQEAgLTUxMjMsNyAmIzQzOzUxMjMsNyBAQCB2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsCiAJICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LgogCSAqLwogCWlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi0mZ3Q7bnJfZnVsbCkgJmd0Oz0gTUFYX0ZVTExfU0hFQVZFUyB8fAotCSAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHsKJiM0MzsJICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHsKIAkJc2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTsKIAkJZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7CiAJCXJldHVybjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgU2x1YiBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiBgbW0vc2x1Yi5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgYHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHRoYXQgYXJlIHBhc3NlZCBkb3duIHRvIGByZWZpbGxfc2hlYWZgLgoKTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXM/IFdoeSBhcmUgdGhleSB0cnlpbmcgdG8gKmF2b2lkKiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgd2FybmluZ3MgYXQgdGhpcyBzdGFnZT8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBkZWFsaW5nIHdpdGggcmV0dXJuaW5nIGNhY2hlZCBtZW1vcnksIHNvIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBhZGRpdGlvbiBpcyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBiYWNrcHJlc3N1cmUgc2NlbmFyaW8sIG9yIHBlcmhhcHMgYW4gYXR0ZW1wdCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBpbiBhIGNyaXRpY2FsIHBhdGguIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYXZvaWRpbmcgZGVhZGxvY2tzIG9yIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIHRocmFzaGluZyB1bmRlciBoZWF2eSBtZW1vcnkgcHJlc3N1cmUuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gYG1tL3NsdWIuY2AgYW5kIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGFkZGluZyBgX19HRlBfTk9NRU1BTExPQ2AgYW5kIGBfX0dGUF9OT1dBUk5gIGludG8gYHJlZmlsbF9zaGVhZmAgd2l0aGluIHRoaXMgY29udGV4dC4gSSBleHBlY3QgdGhlcmUgdG8gYmUgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggcmVjbGFpbSwgTlVNQSwgb3IgcG90ZW50aWFsbHkgZXZlbiBzb21lIGxvY2sgaGllcmFyY2hpZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTUwMDg9a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBzaXplKVxuLS1cbm1tL3NsdWIuYy01MDkwLSAqL1xubW0vc2x1Yi5jOjUwOTE6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxubW0vc2x1Yi5jLTUwOTItXHRcdFx0ICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG4tLVxubW0vc2x1Yi5jPTUxNDk9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4tLVxubW0vc2x1Yi5jLTUxODUtXG5tbS9zbHViLmM6NTE4NjpcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XG5tbS9zbHViLmMtNTE4Ny1cdCpzaGVhZnAgPSBzaGVhZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAqKgoKQWxyaWdodCwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSouIExldCYjMzk7cyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCBoZXJlOyB3aGF0JiMzOTtzIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGl0cyByb2xlLiBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZg4oCmIGl0IGRlYWxzIHdpdGggdGhlIHJldHVybiBvZiBvYmplY3RzIHRvIGEgc2xhYiBjYWNoZSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhICYjMzQ7c2hlYWYmIzM0OyBvZiBvYmplY3RzLCByaWdodD8gTWVhbmluZyBtdWx0aXBsZSBvYmplY3RzIGFyZSBiZWluZyBmcmVlZCBvciByZXR1cm5lZCBhdCBvbmNlLCBwb3RlbnRpYWxseSBhcyBwYXJ0IG9mIGEgYmF0Y2ggb3BlcmF0aW9uIG9yIHBlcmhhcHMgZHVlIHRvIE5VTUEgY29uc2lkZXJhdGlvbnMuIEl0IGNvdWxkIGJlIHNvbWUgc3VidGxlIG9wdGltaXphdGlvbiBvciBtYXliZSBhIGJ1ZyBmaXgsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGtleSB0byBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDkxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MDkxOlx0dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuNTA5MjpcdFx0XHRcdCAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxuNTA5MzpcdHtcbjUwOTQ6XHRcdHN0cnVjdCBzbHViX3BlcmNwdV9zaGVhdmVzICpwY3M7XG41MDk1Olx0XHRzdHJ1Y3Qgbm9kZV9iYXJuICpiYXJuO1xuNTA5NjpcdFxuNTA5NzpcdFx0aWYgKHVubGlrZWx5KChzaGVhZi1cdTAwM2VjYXBhY2l0eSAhPSBzLVx1MDAzZXNoZWFmX2NhcGFjaXR5KVxuNTA5ODpcdFx0XHQgICAgIHx8IHNoZWFmLVx1MDAzZXBmbWVtYWxsb2MpKSB7XG41MDk5Olx0XHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG41MTAwOlx0XHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuNTEwMTpcdFx0XHRyZXR1cm47XG41MTAyOlx0XHR9XG41MTAzOlx0XG41MTA0Olx0XHRsb2NhbF9sb2NrKFx1MDAyNnMtXHUwMDNlY3B1X3NoZWF2ZXMtXHUwMDNlbG9jayk7XG41MTA1Olx0XHRwY3MgPSB0aGlzX2NwdV9wdHIocy1cdTAwM2VjcHVfc2hlYXZlcyk7XG41MTA2Olx0XHRiYXJuID0gZ2V0X2Jhcm4ocyk7XG41MTA3Olx0XG41MTA4Olx0XHRpZiAoIXBjcy1cdTAwM2VzcGFyZSkge1xuNTEwOTpcdFx0XHRwY3MtXHUwMDNlc3BhcmUgPSBzaGVhZjtcbjUxMTA6XHRcdFx0c2hlYWYgPSBOVUxMO1xuNTExMTpcdFx0XHRzdGF0KHMsIFNIRUFGX1JFVFVSTl9GQVNUKTtcbjUxMTI6XHRcdH1cbjUxMTM6XHRcbjUxMTQ6XHRcdGxvY2FsX3VubG9jayhcdTAwMjZzLVx1MDAzZWNwdV9zaGVhdmVzLVx1MDAzZWxvY2spO1xuNTExNTpcdFxuNTExNjpcdFx0aWYgKCFzaGVhZilcbjUxMTc6XHRcdFx0cmV0dXJuO1xuNTExODpcdFxuNTExOTpcdFx0c3RhdChzLCBTSEVBRl9SRVRVUk5fU0xPVyk7XG41MTIwOlx0XG41MTIxOlx0XHQvKlxuNTEyMjpcdFx0ICogSWYgdGhlIGJhcm4gaGFzIHRvbyBtYW55IGZ1bGwgc2hlYXZlcyBvciB3ZSBmYWlsIHRvIHJlZmlsbCB0aGUgc2hlYWYsXG41MTIzOlx0XHQgKiBzaW1wbHkgZmx1c2ggYW5kIGZyZWUgaXQuXG41MTI0Olx0XHQgKi9cbjUxMjU6XHRcdGlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi1cdTAwM2Vucl9mdWxsKSBcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcbjUxMjY6XHRcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XG41MTI3Olx0XHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG41MTI4Olx0XHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuNTEyOTpcdFx0XHRyZXR1cm47XG41MTMwOlx0XHR9XG41MTMxOlx0XG41MTMyOlx0XHRiYXJuX3B1dF9mdWxsX3NoZWFmKGJhcm4sIHNoZWFmKTtcbjUxMzM6XHRcdHN0YXQocywgQkFSTl9QVVQpO1xuNTEzNDpcdH1cbjUxMzU6XHRcbjUxMzY6XHQvKlxuNTEzNzpcdCAqIFJlZmlsbCBhIHNoZWFmIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmIHRvIGF0IGxlYXN0XG41MTM4Olx0ICogdGhlIGdpdmVuIHNpemUuXG41MTM5Olx0ICpcbjUxNDA6XHQgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gVGhlIHNoZWFmIHdpbGwgY29udGFpbiBhdCBsZWFzdCBAc2l6ZSBvYmplY3RzLlxuNTE0MTpcdCAqIFRoZSBzaGVhZiBtaWdodCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyBvbmUgaWYgbW9yZSB0aGFuXG41MTQyOlx0ICogc2hlYWYtXHUwMDNlY2FwYWNpdHkgb2JqZWN0cyBhcmUgcmVxdWVzdGVkLlxuNTE0MzpcdCAqXG41MTQ0Olx0ICogUmV0dXJuOiAtRU5PTUVNIG9uIGZhaWx1cmUuIFNvbWUgb2JqZWN0cyBtaWdodCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHNoZWFmXG41MTQ1Olx0ICogYnV0IHRoZSBzaGVhZiB3aWxsIG5vdCBiZSByZXBsYWNlZC5cbjUxNDY6XHQgKlxuNTE0NzpcdCAqIEluIHByYWN0aWNlIHdlIGFsd2F5cyByZWZpbGwgdG8gZnVsbCBzaGVhZiYjMzk7cyBjYXBhY2l0eS5cbjUxNDg6XHQgKi9cbjUxNDk6XHRpbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbjUxNTA6XHRcdFx0XHQgICAgc3RydWN0IHNsYWJfc2hlYWYgKipzaGVhZnAsIHVuc2lnbmVkIGludCBzaXplKVxuNTE1MTpcdHtcbjUxNTI6XHRcdHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZjtcbjUxNTM6XHRcbjUxNTQ6XHRcdC8qXG41MTU1Olx0XHQgKiBUT0RPOiBkbyB3ZSB3YW50IHRvIHN1cHBvcnQgKnNoZWFmID09IE5VTEwgdG8gYmUgZXF1aXZhbGVudCBvZlxuNTE1NjpcdFx0ICoga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgP1xuNTE1NzpcdFx0ICovXG41MTU4Olx0XHRpZiAoIXNoZWFmcCB8fCAhKCpzaGVhZnApKVxuNTE1OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjUxNjA6XHRcbjUxNjE6XHRcdHNoZWFmID0gKnNoZWFmcDtcbjUxNjI6XHRcdGlmIChzaGVhZi1cdTAwM2VzaXplIFx1MDAzZT0gc2l6ZSlcbjUxNjM6XHRcdFx0cmV0dXJuIDA7XG41MTY0Olx0XG41MTY1Olx0XHRpZiAobGlrZWx5KHNoZWFmLVx1MDAzZWNhcGFjaXR5IFx1MDAzZT0gc2l6ZSkpIHtcbjUxNjY6XHRcdFx0aWYgKGxpa2VseShzaGVhZi1cdTAwM2VjYXBhY2l0eSA9PSBzLVx1MDAzZXNoZWFmX2NhcGFjaXR5KSlcbjUxNjc6XHRcdFx0XHRyZXR1cm4gX19wcmVmaWxsX3NoZWFmX3BmbWVtYWxsb2Mocywgc2hlYWYsIGdmcCk7XG41MTY4Olx0XG41MTY5Olx0XHRcdGlmICghX19rbWVtX2NhY2hlX2FsbG9jX2J1bGsocywgZ2ZwLCBzaGVhZi1cdTAwM2VjYXBhY2l0eSAtIHNoZWFmLVx1MDAzZXNpemUsXG41MTcwOlx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c2hlYWYtXHUwMDNlb2JqZWN0c1tzaGVhZi1cdTAwM2VzaXplXSkpXG41MTcxOlx0XHRcdFx0cmV0dXJuIC1FTk9NRU07XG41MTcyOlx0XHRcdHNoZWFmLVx1MDAzZXNpemUgPSBzaGVhZi1cdTAwM2VjYXBhY2l0eTtcbjUxNzM6XHRcbjUxNzQ6XHRcdFx0cmV0dXJuIDA7XG41MTc1Olx0XHR9XG41MTc2Olx0XG41MTc3Olx0XHQvKlxuNTE3ODpcdFx0ICogV2UgaGFkIGEgcmVndWxhciBzaXplZCBzaGVhZiBhbmQgbmVlZCBhbiBvdmVyc2l6ZSBvbmUsIG9yIHdlIGhhZCBhblxuNTE3OTpcdFx0ICogb3ZlcnNpemUgb25lIGFscmVhZHkgYnV0IG5lZWQgYSBsYXJnZXIgb25lIG5vdy5cbjUxODA6XHRcdCAqIFRoaXMgc2hvdWxkIGJlIGEgdmVyeSByYXJlIHBhdGggc28gbGV0JiMzOTtzIG5vdCBjb21wbGljYXRlIGl0LlxuNTE4MTpcdFx0ICovXG41MTgyOlx0XHRzaGVhZiA9IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzLCBnZnAsIHNpemUpO1xuNTE4MzpcdFx0aWYgKCFzaGVhZilcbjUxODQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG41MTg1Olx0XG41MTg2Olx0XHRrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzLCBnZnAsICpzaGVhZnApO1xuNTE4NzpcdFx0KnNoZWFmcCA9IHNoZWFmO1xuNTE4ODpcdFx0cmV0dXJuIDA7XG41MTg5Olx0fVxuNTE5MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0xVQiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvciB3aXRoaW4gU0xVQi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYF9fR0ZQX05PTUVNQUxMT0NgIGFuZCBgX19HRlBfTk9XQVJOYCB0byB0aGUgYGdmcGAgZmxhZ3MgdXNlZCBpbiBgcmVmaWxsX3NoZWFmYCB3aGVuIGNhbGxlZCBmcm9tIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBhbHRlciBob3cgU0xVQiBiZWhhdmVzIGluIG1lbW9yeS1jb25zdHJhaW5lZCBzY2VuYXJpb3Mg4oCTIGl04oCZcyBwcmV2ZW50aW5nIGFsbG9jYXRpb25zIGZyb20gZW1lcmdlbmN5IHJlc2VydmVzIGFuZCBzdXBwcmVzc2luZyB0aG9zZSBhbm5veWluZyBhbGxvY2F0aW9uIHdhcm5pbmdzLiBEZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byBzZWUgaWYgYW55IG5ldyBpc3N1ZXMgc3VyZmFjZS4KCkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQgYWJvdXQgZnV6emluZyB0aGlzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgcmVhY2hhYmlsaXR5LiBJIGJlbGlldmUgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBwYXJ0IG9mIHRoZSBuZXdlciBTTFVCIHNoZWFmIEFQSS4gVGhhdCBNYXBsZSBUcmVlIGNvZGUgdXNlcyBpdCwgb3IgcG9zc2libHkgc29tZXRoaW5nIGVsc2UuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIG1ha2Ugc3VyZSB0aGlzIHBhdGggaXMgYWN0dWFsbHkgdGFrZW4gYW5kIGlzbiYjMzk7dCBzb21lIGRlYWQgY29kZS4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwIGFuZCBjb25maXJtIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NsYWIuaD05MTY9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTE4LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTE5OnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTkyMC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xuLS1cbmxpYi9tYXBsZV90cmVlLmM9MTQ3PXN0YXRpYyB2b2lkIG10X3JldHVybl9zaGVhZihzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG5saWIvbWFwbGVfdHJlZS5jLTE0OC17XG5saWIvbWFwbGVfdHJlZS5jOjE0OTpcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKG1hcGxlX25vZGVfY2FjaGUsIEdGUF9OT1dBSVQsIHNoZWFmKTtcbmxpYi9tYXBsZV90cmVlLmMtMTUwLX1cbi0tXG5tbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG4tLVxubW0vc2x1Yi5jLTUwOTAtICovXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG5tbS9zbHViLmMtNTA5Mi1cdFx0XHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG5tbS9zbHViLmMtNTE4NS1cbm1tL3NsdWIuYzo1MTg2Olx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcbm1tL3NsdWIuYy01MTg3LVx0KnNoZWFmcCA9IHNoZWFmO1xuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTE5Mj1rbWVtX2NhY2hlX2FsbG9jX2Zyb21fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTQtXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaDoxOTU6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMTk2LVx0XHRzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmM9MjgzPWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmMtMjk1LVxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzoyOTY6XHRcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTI5Ny1cdFx0KnNoZWFmcCA9IHNoZWFmO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmMtMzA3LVxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzozMDg6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0zMDktXHRcdCBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVXNhZ2Ugb2YgYG10X3JldHVybl9zaGVhZmAqKgoKQWxyaWdodCwgc28gYG10X3JldHVybl9zaGVhZmDigKYgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBvbmUgaW4gdGhlIGBsaWIvbWFwbGVfdHJlZS5jYCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgaXRzIGNvbnRleHQuIExldCYjMzk7cyBkaXZlIGJhY2sgaW50byBgbGliL21hcGxlX3RyZWUuY2AgYW5kIHRyYWNlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZW1wbG95ZWQuIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3Mgd2hlcmUgYG10X3JldHVybl9zaGVhZmAgY29tZXMgaW50byBwbGF5LiBXaGF0IGFyZSB0aGUga2V5IGludGVyYWN0aW9ucywgdGhlIGRhdGEgaXQmIzM5O3MgaGFuZGxpbmcsIGFuZCB3aGF0IGFyZSB0aGUgY29udHJvbCBmbG93IGltcGxpY2F0aW9ucz8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIE1hcGxlIFRyZWUgcHJpbWl0aXZlcyBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIGluIGl0cyB1c2FnZSB0aGF0IHN0YW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRfcmV0dXJuX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL21hcGxlX3RyZWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvbWFwbGVfdHJlZS5jPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgbXRfZnJlZV9idWxrKHNpemVfdCBzaXplLCB2b2lkIF9fcmN1ICoqbm9kZXMpXG4tLVxubGliL21hcGxlX3RyZWUuYy0xNDYtXG5saWIvbWFwbGVfdHJlZS5jOjE0NzpzdGF0aWMgdm9pZCBtdF9yZXR1cm5fc2hlYWYoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxubGliL21hcGxlX3RyZWUuYy0xNDgte1xuLS1cbmxpYi9tYXBsZV90cmVlLmM9MTEzMT1zdGF0aWMgaW5saW5lIHZvaWQgbWFzX2VtcHR5X25vZGVzKHN0cnVjdCBtYV9zdGF0ZSAqbWFzKVxuLS1cbmxpYi9tYXBsZV90cmVlLmMtMTEzNC1cdGlmIChtYXMtXHUwMDNlc2hlYWYpIHtcbmxpYi9tYXBsZV90cmVlLmM6MTEzNTpcdFx0bXRfcmV0dXJuX3NoZWFmKG1hcy1cdTAwM2VzaGVhZik7XG5saWIvbWFwbGVfdHJlZS5jLTExMzYtXHRcdG1hcy1cdTAwM2VzaGVhZiA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNMVUIgU2hlYWYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYG1hc19lbXB0eV9ub2Rlc2AgZXZlbnR1YWxseSBsZWFkcyB0byBhIGNhbGwgdG8gYG10X3JldHVybl9zaGVhZmAuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBpbnRlbmRlZC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIFNMVUIgc2hlYXZlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgaGF2ZSBhbnkgY29uZGl0aW9uYWwgY29kZS4gVGltZSB0byBkaWcgaW50byBgbW0vc2x1Yi5jYCBhbmQgc2VhcmNoIGZvciBhbnkgYENPTkZJR19gIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gc2hlYXZlcy4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGluc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qU0hFQUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjk3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgbW0vc2x1Yi5jYCDigJMgVGltZSB0byBUcmFjZSBUaGF0IGAjaWZkZWZgKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgU2x1YiBhbGxvY2F0b3IuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVoYXZpbmcgYXJvdW5kIHJldHVybmluZyBzaGVhdmVzLiBTbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vc2x1Yi5jYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgcmVsYXRlZCB0byB0aGUgc2hlYWYgcmV0dXJuIHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgYXJvdW5kIHRoZSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgaXMgcHJldHR5IHNwZWNpZmljIGFuZCB0YXJnZXRlZCBmb3IgdGhpcyBraW5kIG9mIGxvZ2ljLiBTbywgdGhhdOKAmXMgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgYmUgc2Nhbm5pbmcgdGhlIGNvZGUgZm9yIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyB3aXRoaW4gb3IgbmVhciB0aGF0IGZ1bmN0aW9uOyBpdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBhbnkgY29uZGl0aW9uYWwgY29kZSB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0byB1bmNvdmVyIHRoZSBkZXRhaWxzIEkgbmVlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcbi0tXG5tbS9zbHViLmMtMjA0LVxubW0vc2x1Yi5jOjIwNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcbi0tXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XG4tLVxubW0vc2x1Yi5jLTIxMi1cbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XG4tLVxubW0vc2x1Yi5jPTIzND1zdHJ1Y3Qgc2xhYl9vYmpfaXRlciB7XG4tLVxubW0vc2x1Yi5jLTIzNi1cdHZvaWQgKnN0YXJ0O1xubW0vc2x1Yi5jOjIzNzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMjM4LVx0dW5zaWduZWQgbG9uZyBmcmVlbGlzdF9jb3VudDtcbi0tXG5tbS9zbHViLmM9MjQ5PXZvaWQgKmZpeHVwX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxuLS1cbm1tL3NsdWIuYy0zMTItXG5tbS9zbHViLmM6MzEzOiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxubW0vc2x1Yi5jLTMxNC0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcdF9fU0xBQl9GTEFHX0JJVChfU0xBQl9DTVBYQ0hHX0RPVUJMRSlcbi0tXG5tbS9zbHViLmM9MzIzPXN0cnVjdCB0cmFjayB7XG5tbS9zbHViLmMtMzI0LVx0dW5zaWduZWQgbG9uZyBhZGRyO1x0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xubW0vc2x1Yi5jOjMyNTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0zMjYtXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XG4tLVxubW0vc2x1Yi5jPTMzMz1lbnVtIHRyYWNrX2l0ZW0geyBUUkFDS19BTExPQywgVFJBQ0tfRlJFRSB9O1xubW0vc2x1Yi5jLTMzNC1cbm1tL3NsdWIuYzozMzU6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcbm1tL3NsdWIuYy0zMzYtc3RhdGljIGludCBzeXNmc19zbGFiX2FkZChzdHJ1Y3Qga21lbV9jYWNoZSAqKTtcbi0tXG5tbS9zbHViLmM9MzUyPWVudW0gc3RhdF9pdGVtIHtcbi0tXG5tbS9zbHViLmMtMzgxLVxubW0vc2x1Yi5jOjM4MjojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy0zODMtc3RydWN0IGttZW1fY2FjaGVfc3RhdHMge1xuLS1cbm1tL3NsdWIuYz0zODg9c3RhdGljIGlubGluZSB2b2lkIHN0YXQoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsIGVudW0gc3RhdF9pdGVtIHNpKVxubW0vc2x1Yi5jLTM4OS17XG5tbS9zbHViLmM6MzkwOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTM5MS1cdC8qXG4tLVxubW0vc2x1Yi5jPTQwMD12b2lkIHN0YXRfYWRkKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSwgaW50IHYpXG5tbS9zbHViLmMtNDAxLXtcbm1tL3NsdWIuYzo0MDI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtNDAzLVx0cmF3X2NwdV9hZGQocy1cdTAwM2VjcHVfc3RhdHMtXHUwMDNlc3RhdFtzaV0sIHYpO1xuLS1cbm1tL3NsdWIuYz00NDQ9c3RydWN0IGttZW1fY2FjaGVfbm9kZSB7XG4tLVxubW0vc2x1Yi5jLTQ0Ny1cdHN0cnVjdCBsaXN0X2hlYWQgcGFydGlhbDtcbm1tL3NsdWIuYzo0NDg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNDQ5LVx0YXRvbWljX2xvbmdfdCBucl9zbGFicztcbi0tXG5tbS9zbHViLmM9NTE4PXN0YXRpYyBpbmxpbmUgZnJlZXB0cl90IGZyZWVsaXN0X3B0cl9lbmNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTUyMi1cbm1tL3NsdWIuYzo1MjM6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXG5tbS9zbHViLmMtNTI0LVx0ZW5jb2RlZCA9ICh1bnNpZ25lZCBsb25nKXB0ciBeIHMtXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcik7XG4tLVxubW0vc2x1Yi5jPTUzMT1zdGF0aWMgaW5saW5lIHZvaWQgKmZyZWVsaXN0X3B0cl9kZWNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTUzNS1cbm1tL3NsdWIuYzo1MzY6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXG5tbS9zbHViLmMtNTM3LVx0ZGVjb2RlZCA9ICh2b2lkICopKHB0ci52IF4gcy1cdTAwM2VyYW5kb20gXiBzd2FiKHB0cl9hZGRyKSk7XG4tLVxubW0vc2x1Yi5jPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZyZWVwb2ludGVyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsIHZvaWQgKmZwKVxuLS1cbm1tL3NsdWIuYy01NTgtXG5tbS9zbHViLmM6NTU5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTU2MC1cdEJVR19PTihvYmplY3QgPT0gZnApOyAvKiBuYWl2ZSBkZXRlY3Rpb24gb2YgZG91YmxlIGZyZWUgb3IgY29ycnVwdGlvbiAqL1xuLS1cbm1tL3NsdWIuYz02NTE9X191cGRhdGVfZnJlZWxpc3RfZmFzdChzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGZyZWVsaXN0X2NvdW50ZXJzICpvbGQsXG4tLVxubW0vc2x1Yi5jLTY1My17XG5tbS9zbHViLmM6NjU0OiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxubW0vc2x1Yi5jLTY1NS1cdHJldHVybiB0cnlfY21weGNoZ19mcmVlbGlzdChcdTAwMjZzbGFiLVx1MDAzZWZyZWVsaXN0X2NvdW50ZXJzLFxuLS1cbm1tL3NsdWIuYz02ODk9c3RhdGljIGlubGluZSBib29sIF9fc2xhYl91cGRhdGVfZnJlZWxpc3Qoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy03MDctXG5tbS9zbHViLmM6NzA4OiNpZmRlZiBTTFVCX0RFQlVHX0NNUFhDSEdcbm1tL3NsdWIuYy03MDktXHRwcl9pbmZvKFwmIzM0OyVzICVzOiBjbXB4Y2hnIGRvdWJsZSByZWRvIFwmIzM0Oywgbiwgcy1cdTAwM2VuYW1lKTtcbi0tXG5tbS9zbHViLmM9NzE1PXN0YXRpYyBpbmxpbmUgYm9vbCBzbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTczNC1cbm1tL3NsdWIuYzo3MzU6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xubW0vc2x1Yi5jLTczNi1cdHByX2luZm8oXCYjMzQ7JXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXCYjMzQ7LCBuLCBzLVx1MDAzZW5hbWUpO1xuLS1cbm1tL3NsdWIuYz03NjI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9vcmlnX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNzc3LVxubW0vc2x1Yi5jOjc3ODojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxubW0vc2x1Yi5jLTc3OS1cbi0tXG5tbS9zbHViLmM9OTA2PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTkxMS1cbm1tL3NsdWIuYzo5MTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTEzLVxuLS1cbm1tL3NsdWIuYz0xMDM0PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxuLS1cbm1tL3NsdWIuYy0xMDQzLVxubW0vc2x1Yi5jOjEwNDQ6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXG5tbS9zbHViLmMtMTA0NS1zdGF0aWMgbm9pbmxpbmUgZGVwb3Rfc3RhY2tfaGFuZGxlX3Qgc2V0X3RyYWNrX3ByZXBhcmUoZ2ZwX3QgZ2ZwX2ZsYWdzKVxuLS1cbm1tL3NsdWIuYz0xMDYzPXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcbi0tXG5tbS9zbHViLmMtMTA2OC1cbm1tL3NsdWIuYzoxMDY5OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTEwNzAtXHRwLVx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcbi0tXG5tbS9zbHViLmM9MTA5Nz1zdGF0aWMgdm9pZCBwcmludF90cmFjayhjb25zdCBjaGFyICpzLCBzdHJ1Y3QgdHJhY2sgKnQsIHVuc2lnbmVkIGxvbmcgcHJfdGltZSlcbi0tXG5tbS9zbHViLmMtMTEwNS1cdCAgICAgICBzLCAodm9pZCAqKXQtXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXHUwMDNld2hlbiwgdC1cdTAwM2VjcHUsIHQtXHUwMDNlcGlkKTtcbm1tL3NsdWIuYzoxMTA2OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTExMDctXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cdTAwM2VoYW5kbGUpO1xuLS1cbm1tL3NsdWIuYz0xMjk3PXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXG4tLVxubW0vc2x1Yi5jLTEzMDMtXG5tbS9zbHViLmM6MTMwNDojaWZkZWYgQ09ORklHX0tNU0FOXG5tbS9zbHViLmMtMTMwNS0jZGVmaW5lIHBhZF9jaGVja19hdHRyaWJ1dGVzIG5vaW5saW5lIF9fbm9fa21zYW5fY2hlY2tzXG4tLVxubW0vc2x1Yi5jPTIwNDY9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcbi0tXG5tbS9zbHViLmMtMjA2MS1cbm1tL3NsdWIuYzoyMDYyOiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXG5tbS9zbHViLmMtMjA2My1cbm1tL3NsdWIuYzoyMDY0OiNpZmRlZiBDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR19ERUJVR1xubW0vc2x1Yi5jLTIwNjUtXG4tLVxubW0vc2x1Yi5jPTIxMjc9aW50IGFsbG9jX3NsYWJfb2JqX2V4dHMoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0yMTgxLVx0bmV3X2V4dHMgPSAodW5zaWduZWQgbG9uZyl2ZWM7XG5tbS9zbHViLmM6MjE4MjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjE4My1cdG5ld19leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcbi0tXG5tbS9zbHViLmM9MjI0OT1zdGF0aWMgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtMjI2OC1cbm1tL3NsdWIuYzoyMjY5OiNpZmRlZiBDT05GSUdfTUVNQ0dcbm1tL3NsdWIuYy0yMjcwLVx0XHRvYmpfZXh0cyB8PSBNRU1DR19EQVRBX09CSkVYVFM7XG4tLVxubW0vc2x1Yi5jLTIyODUtXG5tbS9zbHViLmM6MjI4NjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjI4Ny1cdFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xuLS1cbm1tL3NsdWIuYz0yMzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0yMzIwLVxubW0vc2x1Yi5jOjIzMjE6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXG5tbS9zbHViLmMtMjMyMi1cbi0tXG5tbS9zbHViLmM9MjQyNT1hbGxvY190YWdnaW5nX3NsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqKnAsXG4tLVxubW0vc2x1Yi5jLTI0MzItXG5tbS9zbHViLmM6MjQzMzojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjQzNC1cbi0tXG5tbS9zbHViLmM9MjU1NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcbi0tXG5tbS9zbHViLmMtMjU2MC1cbm1tL3NsdWIuYzoyNTYxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcbm1tL3NsdWIuYy0yNTYyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XG4tLVxubW0vc2x1Yi5jPTI1OTc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxuLS1cbm1tL3NsdWIuYy0yNjI1LVxubW0vc2x1Yi5jOjI2MjY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTI2MjctXHRpZiAoc3RpbGxfYWNjZXNzaWJsZSkge1xuLS1cbm1tL3NsdWIuYz0zMjUzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTMyODAtXG5tbS9zbHViLmM6MzI4MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzI4Mi0vKiBQcmUtaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIHNlcXVlbmNlIGNhY2hlICovXG4tLVxubW0vc2x1Yi5jPTM1NDk9c3RhdGljIHZvaWQgKmFsbG9jX3NpbmdsZV9mcm9tX3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTM1NTUtXG5tbS9zbHViLmM6MzU1NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy0zNTU3LVx0aWYgKHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfQ09OU0lTVEVOQ1lfQ0hFQ0tTKSB7XG4tLVxubW0vc2x1Yi5jPTM1ODM9c3RhdGljIGlubGluZSB2b2lkICpuZXh0X3NsYWJfb2JqKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0zNTg1LXtcbm1tL3NsdWIuYzozNTg2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cbm1tL3NsdWIuYy0zNTg3LVx0aWYgKGl0ZXItXHUwMDNlcmFuZG9tKSB7XG4tLVxubW0vc2x1Yi5jPTM2MzM9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2xhYl9vYmpfaXRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTM2MzktXG5tbS9zbHViLmM6MzY0MDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzY0MS1cdGl0ZXItXHUwMDNlcmFuZG9tID0gKHNsYWItXHUwMDNlb2JqZWN0cyBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHMtXHUwMDNlcmFuZG9tX3NlcSk7XG4tLVxubW0vc2x1Yi5jPTM4NjU9c3RhdGljIHZvaWQgKmdldF9mcm9tX2FueV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnBfZmxhZ3MsXG4tLVxubW0vc2x1Yi5jLTM4Njcte1xubW0vc2x1Yi5jOjM4Njg6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMzg2OS1cdHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3Q7XG4tLVxubW0vc2x1Yi5jPTQxNDY9c3RhdGljIGludCBzbHViX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUpXG4tLVxubW0vc2x1Yi5jLTQxNTgtXG5tbS9zbHViLmM6NDE1OTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MTYwLXN0YXRpYyBpbnQgY291bnRfZnJlZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmM9NDIzMD1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXG4tLVxubW0vc2x1Yi5jLTQyNDQtXG5tbS9zbHViLmM6NDI0NTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MjQ2LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxuLS1cbm1tL3NsdWIuYz00NTAzPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcbm1tL3NsdWIuYy00NTA0LXtcbm1tL3NsdWIuYzo0NTA1OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTQ1MDYtXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZzdHJpY3RfbnVtYSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTYwOTk9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjEwOC1cbm1tL3NsdWIuYzo2MTA5OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXG5tbS9zbHViLmMtNjExMC1cdC8qXG4tLVxubW0vc2x1Yi5jPTYzNTY9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTYzNzEtXG5tbS9zbHViLmM6NjM3MjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtNjM3My0vKiBEbyBub3QgaW5saW5lIHRoZSByYXJlIG1lbWNnIGNoYXJnaW5nIGZhaWxlZCBwYXRoIGludG8gdGhlIGFsbG9jYXRpb24gcGF0aCAqL1xuLS1cbm1tL3NsdWIuYz02Mzg3PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxuLS1cbm1tL3NsdWIuYy02NDAxLVxubW0vc2x1Yi5jOjY0MDI6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTY0MDMtc3RhdGljIHZvaWQgc2xhYl9mcmVlX2FmdGVyX3JjdV9kZWJ1ZyhzdHJ1Y3QgcmN1X2hlYWQgKnJjdV9oZWFkKVxuLS1cbm1tL3NsdWIuYy02NDMwLVxubW0vc2x1Yi5jOjY0MzE6I2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDXG5tbS9zbHViLmMtNjQzMi12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxubW0vc2x1Yi5jPTY0OTM9c3RhdGljIGlubGluZSBzaXplX3Qgc2xhYl9rc2l6ZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjQ5Ni1cbm1tL3NsdWIuYzo2NDk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTY0OTgtXHQvKlxuLS1cbm1tL3NsdWIuYz02NTIyPXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTY1MzktXG5tbS9zbHViLmM6NjU0MDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy02NTQxLVx0c2tpcF9vcmlnX3NpemVfY2hlY2soc2xhYi1cdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xuLS1cbm1tL3NsdWIuYz03MTQwPV9fcmVmaWxsX29iamVjdHNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqKnAsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG1pbixcbi0tXG5tbS9zbHViLmMtNzIxMy1cbm1tL3NsdWIuYzo3MjE0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTcyMTUtc3RhdGljIHVuc2lnbmVkIGludFxuLS1cbm1tL3NsdWIuYz03NTU3PWluaXRfa21lbV9jYWNoZV9ub2RlKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4pXG4tLVxubW0vc2x1Yi5jLTc1NjEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXBhcnRpYWwpO1xubW0vc2x1Yi5jOjc1NjI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzU2My1cdGF0b21pY19sb25nX3NldChcdTAwMjZuLVx1MDAzZW5yX3NsYWJzLCAwKTtcbi0tXG5tbS9zbHViLmMtNzU2OC1cbm1tL3NsdWIuYzo3NTY5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc1NzAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmM9NzYzOD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXG4tLVxubW0vc2x1Yi5jLTc2NjEtXG5tbS9zbHViLmM6NzY2MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03NjYzLVx0aW5pdF9vYmplY3Qoa21lbV9jYWNoZV9ub2RlLCBuLCBTTFVCX1JFRF9BQ1RJVkUpO1xuLS1cbm1tL3NsdWIuYz03NzAwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc3MDMtXHRwY3NfZGVzdHJveShzKTtcbm1tL3NsdWIuYzo3NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc3MDUtXHRmcmVlX3BlcmNwdShzLVx1MDAzZWNwdV9zdGF0cyk7XG4tLVxubW0vc2x1Yi5jPTc4MDA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc4MTMtXG5tbS9zbHViLmM6NzgxNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03ODE1LVx0Lypcbi0tXG5tbS9zbHViLmMtNzg3Ni1cbm1tL3NsdWIuYzo3ODc3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc4NzgtXHRpZiAoZmxhZ3MgXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xuLS1cbm1tL3NsdWIuYy03ODkxLVx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFx1MDAyNnNpemUsIFx1MDAyNnMtXHUwMDNlZmxhZ3MpO1xubW0vc2x1Yi5jOjc4OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzg5My1cdGlmIChmbGFncyBcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xuLS1cbm1tL3NsdWIuYz03OTU2PXN0YXRpYyB2b2lkIGxpc3Rfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbm1tL3NsdWIuYy03OTU3LXtcbm1tL3NsdWIuYzo3OTU4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc5NTktXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xuLS1cbm1tL3NsdWIuYz04MDIzPWludCBfX2ttZW1fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTgwNDktXG5tbS9zbHViLmM6ODA1MDojaWZkZWYgQ09ORklHX1BSSU5US1xubW0vc2x1Yi5jLTgwNTEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtODA2NS1cdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XG5tbS9zbHViLmM6ODA2NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04MDY3LVx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xuLS1cbm1tL3NsdWIuYy04MDc4LVx0XHRyZXR1cm47XG5tbS9zbHViLmM6ODA3OTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04MDgwLVx0b2JqcCA9IGZpeHVwX3JlZF9sZWZ0KHMsIG9ianApO1xuLS1cbm1tL3NsdWIuYy04MDgyLVx0a3BwLVx1MDAzZWtwX3JldCA9ICh2b2lkICopdHJhY2twLVx1MDAzZWFkZHI7XG5tbS9zbHViLmM6ODA4MzojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy04MDg0LVx0e1xuLS1cbm1tL3NsdWIuYz04MTU2PWNvcmVfcGFyYW0oc2x1Yl9taW5fb2JqZWN0cywgc2x1Yl9taW5fb2JqZWN0cywgdWludCwgMCk7XG5tbS9zbHViLmMtODE1Ny1cbm1tL3NsdWIuYzo4MTU4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTgxNTktc3RhdGljIGludCBfX2luaXQgc2V0dXBfc2xhYl9zdHJpY3RfbnVtYShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuLS1cbm1tL3NsdWIuYz04MTc1PV9fY29yZV9wYXJhbV9jYihzbGFiX3N0cmljdF9udW1hLCBcdTAwMjZwYXJhbV9vcHNfc2xhYl9zdHJpY3RfbnVtYSwgTlVMTCwgMCk7XG4tLVxubW0vc2x1Yi5jLTgxNzgtXG5tbS9zbHViLmM6ODE3OTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtODE4MC0vKlxuLS1cbm1tL3NsdWIuYz04NDI0PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqIF9faW5pdCBib290c3RyYXAoc3RydWN0IGttZW1fY2FjaGUgKnN0YXRpY19jYWNoZSlcbi0tXG5tbS9zbHViLmMtODQzNy1cbm1tL3NsdWIuYzo4NDM4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTg0MzktXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2bi1cdTAwM2VmdWxsLCBzbGFiX2xpc3QpXG4tLVxubW0vc2x1Yi5jPTg1ODM9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcbi0tXG5tbS9zbHViLmMtODU4Ny1cdFdBUk5fT04oIWZsdXNod3EpO1xubW0vc2x1Yi5jOjg1ODg6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxubW0vc2x1Yi5jLTg1ODktXHRwcmFuZG9tX2luaXRfb25jZShcdTAwMjZzbGFiX3JuZF9zdGF0ZSk7XG4tLVxubW0vc2x1Yi5jPTg1OTM9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm1tL3NsdWIuYy04NjAyLVx0cy1cdTAwM2VmbGFncyA9IGttZW1fY2FjaGVfZmxhZ3MoZmxhZ3MsIHMtXHUwMDNlbmFtZSk7XG5tbS9zbHViLmM6ODYwMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcbm1tL3NsdWIuYy04NjA0LVx0cy1cdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcbi0tXG5tbS9zbHViLmMtODYwNy1cdHMtXHUwMDNlY3RvciA9IGFyZ3MtXHUwMDNlY3Rvcjtcbm1tL3NsdWIuYzo4NjA4OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcbm1tL3NsdWIuYy04NjA5LVx0cy1cdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cdTAwM2V1c2Vyb2Zmc2V0O1xuLS1cbm1tL3NsdWIuYy04NjI3LVxubW0vc2x1Yi5jOjg2Mjg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXG5tbS9zbHViLmMtODYyOS1cdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFx1MDAyNlx1MDAyNiAhKHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfTk9fQ01QWENIRykpIHtcbi0tXG5tbS9zbHViLmMtODY0Ny1cbm1tL3NsdWIuYzo4NjQ4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTg2NDktXHRzLVx1MDAzZXJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpbyA9IDEwMDA7XG4tLVxubW0vc2x1Yi5jLTg2NjAtXG5tbS9zbHViLmM6ODY2MTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy04NjYyLVx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxuLS1cbm1tL3NsdWIuYy04NjkxLVxubW0vc2x1Yi5jOjg2OTI6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcbm1tL3NsdWIuYy04NjkzLXN0YXRpYyBpbnQgY291bnRfaW51c2Uoc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jPTg2OTg9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtODcwMy1cbm1tL3NsdWIuYzo4NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTg3MDUtc3RhdGljIHZvaWQgdmFsaWRhdGVfc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jPTg3ODY9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcbm1tL3NsdWIuYy04Nzg3LVxubW0vc2x1Yi5jOjg3ODg6I2lmZGVmIENPTkZJR19ERUJVR19GU1xubW0vc2x1Yi5jLTg3ODktLypcbi0tXG5tbS9zbHViLmM9ODg0ND1zdGF0aWMgaW50IGFkZF9sb2NhdGlvbihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtODg1NC1cbm1tL3NsdWIuYzo4ODU1OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTg4NTYtXHRoYW5kbGUgPSBSRUFEX09OQ0UodHJhY2stXHUwMDNlaGFuZGxlKTtcbi0tXG5tbS9zbHViLmM9ODkzNj1zdGF0aWMgdm9pZCBwcm9jZXNzX3NsYWIoc3RydWN0IGxvY190cmFjayAqdCwgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTg5NTQtXG5tbS9zbHViLmM6ODk1NTojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTg5NTYtZW51bSBzbGFiX3N0YXRfdHlwZSB7XG4tLVxubW0vc2x1Yi5jPTg5Njg9c3RhdGljIHNzaXplX3Qgc2hvd19zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTg5OTEtXG5tbS9zbHViLmM6ODk5MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04OTkzLVx0aWYgKGZsYWdzIFx1MDAyNiBTT19BTEwpIHtcbi0tXG5tbS9zbHViLmMtOTAyNS1cdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7JWx1XCYjMzQ7LCB0b3RhbCk7XG5tbS9zbHViLmM6OTAyNjojaWZkZWYgQ09ORklHX05VTUFcbm1tL3NsdWIuYy05MDI3LVx0Zm9yIChub2RlID0gMDsgbm9kZSBcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUmIzQzOyYjNDM7KSB7XG4tLVxubW0vc2x1Yi5jPTkxNzk9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xubW0vc2x1Yi5jLTkxODAtXG5tbS9zbHViLmM6OTE4MTojaWZkZWYgQ09ORklHX1pPTkVfRE1BXG5tbS9zbHViLmMtOTE4Mi1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MTg2PVNMQUJfQVRUUl9STyhjYWNoZV9kbWEpO1xuLS1cbm1tL3NsdWIuYy05MTg4LVxubW0vc2x1Yi5jOjkxODk6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxubW0vc2x1Yi5jLTkxOTAtc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MjAxPVNMQUJfQVRUUl9STyhkZXN0cm95X2J5X3JjdSk7XG5tbS9zbHViLmMtOTIwMi1cbm1tL3NsdWIuYzo5MjAzOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTkyMDQtc3RhdGljIHNzaXplX3Qgc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MjcyPVNMQUJfQVRUUih2YWxpZGF0ZSk7XG4tLVxubW0vc2x1Yi5jLTkyNzUtXG5tbS9zbHViLmM6OTI3NjojaWZkZWYgQ09ORklHX0ZBSUxTTEFCXG5tbS9zbHViLmMtOTI3Ny1zdGF0aWMgc3NpemVfdCBmYWlsc2xhYl9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMTI9U0xBQl9BVFRSKHNocmluayk7XG5tbS9zbHViLmMtOTMxMy1cbm1tL3NsdWIuYzo5MzE0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTkzMTUtc3RhdGljIHNzaXplX3QgcmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTMzNj1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcbi0tXG5tbS9zbHViLmMtOTMzOC1cbm1tL3NsdWIuYzo5MzM5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTkzNDAtc3RhdGljIGludCBzaG93X3N0YXQoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZiwgZW51bSBzdGF0X2l0ZW0gc2kpXG4tLVxubW0vc2x1Yi5jLTkzNTgtXG5tbS9zbHViLmM6OTM1OTojaWZkZWYgQ09ORklHX1NNUFxubW0vc2x1Yi5jLTkzNjAtXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xuLS1cbm1tL3NsdWIuYz05NDIwPVNUQVRfQVRUUihTSEVBRl9SRVRVUk5fU0xPVywgc2hlYWZfcmV0dXJuX3Nsb3cpO1xuLS1cbm1tL3NsdWIuYy05NDIyLVxubW0vc2x1Yi5jOjk0MjM6I2lmZGVmIENPTkZJR19LRkVOQ0Vcbm1tL3NsdWIuYy05NDI0LXN0YXRpYyBzc2l6ZV90IHNraXBfa2ZlbmNlX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTQ0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3Qgc2xhYl9hdHRyc1tdID0ge1xuLS1cbm1tL3NsdWIuYy05NDY0LVx0XHUwMDI2c2xhYnNfY3B1X3BhcnRpYWxfYXR0ci5hdHRyLFxubW0vc2x1Yi5jOjk0NjU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTQ2Ni1cdFx1MDAyNnRvdGFsX29iamVjdHNfYXR0ci5hdHRyLFxuLS1cbm1tL3NsdWIuYy05NDc1LSNlbmRpZlxubW0vc2x1Yi5jOjk0NzY6I2lmZGVmIENPTkZJR19aT05FX0RNQVxubW0vc2x1Yi5jLTk0NzctXHRcdTAwMjZjYWNoZV9kbWFfYXR0ci5hdHRyLFxubW0vc2x1Yi5jLTk0NzgtI2VuZGlmXG5tbS9zbHViLmM6OTQ3OTojaWZkZWYgQ09ORklHX05VTUFcbm1tL3NsdWIuYy05NDgwLVx0XHUwMDI2cmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX2F0dHIuYXR0cixcbm1tL3NsdWIuYy05NDgxLSNlbmRpZlxubW0vc2x1Yi5jOjk0ODI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtOTQ4My1cdFx1MDAyNmFsbG9jX2Zhc3RwYXRoX2F0dHIuYXR0cixcbi0tXG5tbS9zbHViLmMtOTUwOS0jZW5kaWZcbm1tL3NsdWIuYzo5NTEwOiNpZmRlZiBDT05GSUdfRkFJTFNMQUJcbm1tL3NsdWIuYy05NTExLVx0XHUwMDI2ZmFpbHNsYWJfYXR0ci5hdHRyLFxubW0vc2x1Yi5jLTk1MTItI2VuZGlmXG5tbS9zbHViLmM6OTUxMzojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtOTUxNC1cdFx1MDAyNnVzZXJzaXplX2F0dHIuYXR0cixcbm1tL3NsdWIuYy05NTE1LSNlbmRpZlxubW0vc2x1Yi5jOjk1MTY6I2lmZGVmIENPTkZJR19LRkVOQ0Vcbm1tL3NsdWIuYy05NTE3LVx0XHUwMDI2c2tpcF9rZmVuY2VfYXR0ci5hdHRyLFxuLS1cbm1tL3NsdWIuYz05NzY2PXN0YXRpYyBpbnQgc2xhYl9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubW0vc2x1Yi5jLTk4MDctXG5tbS9zbHViLmM6OTgwODojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy05ODA5LVx0XHR7XG4tLVxubW0vc2x1Yi5jPTk5NzE9X19pbml0Y2FsbChzbGFiX2RlYnVnZnNfaW5pdCk7XG4tLVxubW0vc2x1Yi5jLTk5NzUtICovXG5tbS9zbHViLmM6OTk3NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy05OTc3LXZvaWQgZ2V0X3NsYWJpbmZvKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYmluZm8gKnNpbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY0NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZToKCioqU2hlYXZlcyBhbmQgdGhlIFNMVUIgQWxsb2NhdG9yKioKClJpZ2h0LCBzbyBJIHdhcyBkaWdnaW5nIGludG8gdGhlIGNvZGUsIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb24gZm9yIHNoZWF2ZXMuIFRoYXQmIzM5O3MgYSBiaXQgb2RkOyB0aGV5JiMzOTtyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQ09ORklHX1NMVUJgIHNob3VsZCBiZSB0aGUga2V5LCBidXQgb2YgY291cnNlLCB0aGF0JiMzOTtzIGp1c3QgdGhlIGFsbG9jYXRvciBpdHNlbGYuIEl0JiMzOTtzIHRoZSBkZWZhdWx0LCBhbmQgcHJldHR5IG11Y2ggYWx3YXlzIGVuYWJsZWQgaW4gbW9zdCBjb25maWdzIEkmIzM5O3ZlIHNlZW4uCgpUaGVuIGl0IGhpdCBtZSAtIHdoYXQgYWJvdXQgYENPTkZJR19TTFVCX1RJTllgPyBUaGF0JiMzOTtzIHRoZSBvbmUgdGhhdCBkZWFscyB3aXRoIHNtYWxsZXIgc3lzdGVtcywgcmlnaHQ/IE1pZ2h0IHRoYXQgaGF2ZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBzaGVhdmVzLCBvciBldmVuIG9taXQgdGhlbSBlbnRpcmVseT8gSXTigJlzIGEgZ29vZCBxdWVzdGlvbiB0byBpbnZlc3RpZ2F0ZSB0aGUgZGVzaWduIGRpZmZlcmVuY2VzLgoKT2theSwgYmVzdCBiZXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG1tL3NsdWIuY2AgYW5kIGh1bnQgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IHRpZXMgaW50byBgQ09ORklHX1NMVUJfVElOWWAuIFRoYXQgc2hvdWxkIHRlbGwgbWUgd2hldGhlciBvciBob3cgc2hlYXZlcyBhcmUgaGFuZGxlZCBpbiB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19TTFVCX1RJTlkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTE5Mz1lbnVtIHNsYWJfZmxhZ3Mge1xuLS1cbm1tL3NsdWIuYy0xOTgtXG5tbS9zbHViLmM6MTk5OiNpZm5kZWYgQ09ORklHX1NMVUJfVElOWVxubW0vc2x1Yi5jLTIwMC0jZGVmaW5lIF9fZmFzdHBhdGhfaW5saW5lIF9fYWx3YXlzX2lubGluZVxuLS1cbm1tL3NsdWIuYz0yNDk9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXG4tLVxubW0vc2x1Yi5jLTI2Ny1cbm1tL3NsdWIuYzoyNjg6I2lmbmRlZiBDT05GSUdfU0xVQl9USU5ZXG5tbS9zbHViLmMtMjY5LS8qXG4tLVxubW0vc2x1Yi5jPTM4MDA9c3RhdGljIHZvaWQgKmdldF9mcm9tX3BhcnRpYWxfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMzgyOC1cbm1tL3NsdWIuYzozODI5Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XG5tbS9zbHViLmMtMzgzMC1cdFx0XHRvYmplY3QgPSBhbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHMsIG4sIHNsYWIsXG4tLVxubW0vc2x1Yi5jPTQ0MzA9c3RhdGljIHZvaWQgKl9fX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbm9kZSxcbi0tXG5tbS9zbHViLmMtNDQ3OC1cbm1tL3NsdWIuYzo0NDc5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgfHwga21lbV9jYWNoZV9kZWJ1ZyhzKSkge1xubW0vc2x1Yi5jLTQ0ODAtXHRcdG9iamVjdCA9IGFsbG9jX3NpbmdsZV9mcm9tX25ld19zbGFiKHMsIHNsYWIsIGFjKTtcbi0tXG5tbS9zbHViLmM9NTYwOT1zdGF0aWMgdm9pZCBfX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTU2MTktXG5tbS9zbHViLmM6NTYyMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcbm1tL3NsdWIuYy01NjIxLVx0XHRmcmVlX3RvX3BhcnRpYWxfbGlzdChzLCBzbGFiLCBoZWFkLCB0YWlsLCBjbnQsIGFkZHIpO1xuLS1cbm1tL3NsdWIuYz03MzExPXN0YXRpYyBib29sIF9fa21lbV9jYWNoZV9hbGxvY19idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcbi0tXG5tbS9zbHViLmMtNzMxNS1cbm1tL3NsdWIuYzo3MzE2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgfHwga21lbV9jYWNoZV9kZWJ1ZyhzKSkge1xubW0vc2x1Yi5jLTczMTctXHRcdGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgYWMgPSB7XG4tLVxubW0vc2x1Yi5jPTc0NDQ9c3RhdGljIHVuc2lnbmVkIGludCBzbHViX21heF9vcmRlciA9XG5tbS9zbHViLmM6NzQ0NTpcdElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgPyAxIDogUEFHRV9BTExPQ19DT1NUTFlfT1JERVI7XG5tbS9zbHViLmMtNzQ0Ni1zdGF0aWMgdW5zaWduZWQgaW50IHNsdWJfbWluX29iamVjdHM7XG4tLVxubW0vc2x1Yi5jPTc3NDk9c3RhdGljIHVuc2lnbmVkIGludCBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHkoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTc3NTYtXG5tbS9zbHViLmM6Nzc1NzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfREVCVUdfRkxBR1MpXG5tbS9zbHViLmMtNzc1OC1cdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIGBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHlgIGlzIGdpdmluZyBtZSBhIHplcm8gcmVzdWx0IHdoZW4gYENPTkZJR19TTFVCX1RJTllgIGlzIGluIHBsYXkuIFJpZ2h0LCBzbyBzaGVhdmVzIGFyZSBlZmZlY3RpdmVseSBkaXNhYmxlZCB1bmRlciB0aGF0IGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLiBCdXQgd2UgZG9uJiMzOTt0ICpuZWVkKiB0aGF0IHRpbnkgU0xVQiBzZXR1cDsgd2UmIzM5O3JlIGFpbWluZyBmb3IgYSBzdGFuZGFyZCBTTFVCIGNvbmZpZ3VyYXRpb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgYENPTkZJR19TTFVCX1RJTllgIGlzICpub3QqIGVuYWJsZWQuIEkgbmVlZCByZWd1bGFyIFNMVUIuCgpOb3csIGlzIHRoZXJlIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBmbGFnIHRoYXQgKnNwZWNpZmljYWxseSogZW5hYmxlcyBzaGVhdmVzLCBldmVuIHRob3VnaCB0aGV5IHNlZW0gdG8gYmUgdGhlIGRlZmF1bHQgdW5kZXIgU0xVQiB1bmxlc3MgYENPTkZJR19TTFVCX1RJTllgIG9yIGBTTEFCX0RFQlVHX0ZMQUdTYCBhcmUgc2V0PyBJIGRvbiYjMzk7dCB0aGluayBzbywgdGhlIG1hcGxlIHRyZWUgaXMgYWx3YXlzIHRoZXJlLgoKUmlnaHQsIHNvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgaXMgYSBjb3JlIFNMVUIgZnVuY3Rpb24gYW5kIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgaXQgd29ya3MgYW5kIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gT2theSwgaXQgY2FsbHMgYHJlZmlsbF9zaGVhZmAgd2l0aCBhIGJ1bmNoIG9mIGZsYWdzOiBgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBhIHNlY29uZCBsb29rLiBUaGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGlzIGRlZmluaXRlbHkgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZXhhY3QgYmVoYXZpb3IuCgpBcmUgdGhlcmUgb3RoZXIgZW50cnkgcG9pbnRzIGludG8gdGhhdCBsb2dpYz8gTGV0JiMzOTtzIHNlZTogYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBjYWxscyBpdC4gQW5kIGBtdF9yZXR1cm5fc2hlYWZgIGNhbGxzIGl0LiBUaGVuIGBtYXNfZW1wdHlfbm9kZXNgIGNhbGxzIGBtdF9yZXR1cm5fc2hlYWZgLgoKT2theSwgbmV4dCBzdG9wOiBsZXQmIzM5O3MgZGl2ZSBpbnRvIGByZWZpbGxfc2hlYWZgIHdpdGhpbiBgbW0vc2x1Yi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVmaWxsX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NsdWIuYz0yNzkzPXJlZmlsbF9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxuLS1cbm1tL3NsdWIuYy0yNzk1LVxubW0vc2x1Yi5jOjI3OTY6c3RhdGljIGludCByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZixcbm1tL3NsdWIuYy0yNzk3LVx0XHRcdCBnZnBfdCBnZnApXG4tLVxubW0vc2x1Yi5jPTQ2MTE9X19wY3NfcmVwbGFjZV9lbXB0eV9tYWluKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2x1Yl9wZXJjcHVfc2hlYXZlcyAqcGNzLFxuLS1cbm1tL3NsdWIuYy00NjcwLVxubW0vc2x1Yi5jOjQ2NzE6XHRpZiAocmVmaWxsX3NoZWFmKHMsIGVtcHR5LCBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSkge1xubW0vc2x1Yi5jLTQ2NzItXHRcdC8qXG4tLVxubW0vc2x1Yi5jPTQ5NzE9RVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX25vZGVfbm9wcm9mKTtcbm1tL3NsdWIuYy00OTcyLVxubW0vc2x1Yi5jOjQ5NzM6c3RhdGljIGludCBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbm1tL3NsdWIuYy00OTc0LVx0XHRcdFx0ICAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmLCBnZnBfdCBnZnApXG4tLVxubW0vc2x1Yi5jLTQ5ODItXG5tbS9zbHViLmM6NDk4MzpcdHJldCA9IHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwX25vbWVtYWxsb2MpO1xubW0vc2x1Yi5jLTQ5ODQtXG4tLVxubW0vc2x1Yi5jLTQ5OTEtXHQgKi9cbm1tL3NsdWIuYzo0OTkyOlx0cmV0ID0gcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnApO1xubW0vc2x1Yi5jLTQ5OTMtXHRzaGVhZi1cdTAwM2VwZm1lbWFsbG9jID0gdHJ1ZTtcbi0tXG5tbS9zbHViLmM9NTAwNz1zdHJ1Y3Qgc2xhYl9zaGVhZiAqXG5tbS9zbHViLmM6NTAwODprbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG5tbS9zbHViLmMtNTAwOS17XG4tLVxubW0vc2x1Yi5jLTUwNzAtXHRcdGlmIChzaGVhZi1cdTAwM2VzaXplIFx1MDAzYyBzaXplIFx1MDAyNlx1MDAyNlxubW0vc2x1Yi5jOjUwNzE6XHRcdCAgICBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzLCBzaGVhZiwgZ2ZwKSkge1xubW0vc2x1Yi5jLTUwNzItXHRcdFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcbi0tXG5tbS9zbHViLmMtNTA4MS0vKlxubW0vc2x1Yi5jOjUwODI6ICogVXNlIHRoaXMgdG8gcmV0dXJuIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcbm1tL3NsdWIuYy01MDgzLSAqXG4tLVxubW0vc2x1Yi5jPTUwOTE9dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuLS1cbm1tL3NsdWIuYy01MTI1LVx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVx1MDAzZW5yX2Z1bGwpIFx1MDAzZT0gTUFYX0ZVTExfU0hFQVZFUyB8fFxubW0vc2x1Yi5jOjUxMjY6XHQgICAgcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSkge1xubW0vc2x1Yi5jLTUxMjctXHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG4tLVxubW0vc2x1Yi5jLTUxMzYtLypcbm1tL3NsdWIuYzo1MTM3OiAqIFJlZmlsbCBhIHNoZWFmIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmIHRvIGF0IGxlYXN0XG5tbS9zbHViLmMtNTEzOC0gKiB0aGUgZ2l2ZW4gc2l6ZS5cbi0tXG5tbS9zbHViLmMtNTE0OC0gKi9cbm1tL3NsdWIuYzo1MTQ5OmludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxubW0vc2x1Yi5jLTUxNTAtXHRcdFx0ICAgIHN0cnVjdCBzbGFiX3NoZWFmICoqc2hlYWZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5tbS9zbHViLmMtNTE1NS1cdCAqIFRPRE86IGRvIHdlIHdhbnQgdG8gc3VwcG9ydCAqc2hlYWYgPT0gTlVMTCB0byBiZSBlcXVpdmFsZW50IG9mXG5tbS9zbHViLmM6NTE1NjpcdCAqIGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpID9cbm1tL3NsdWIuYy01MTU3LVx0ICovXG4tLVxubW0vc2x1Yi5jLTUxNjYtXHRcdGlmIChsaWtlbHkoc2hlYWYtXHUwMDNlY2FwYWNpdHkgPT0gcy1cdTAwM2VzaGVhZl9jYXBhY2l0eSkpXG5tbS9zbHViLmM6NTE2NzpcdFx0XHRyZXR1cm4gX19wcmVmaWxsX3NoZWFmX3BmbWVtYWxsb2Mocywgc2hlYWYsIGdmcCk7XG5tbS9zbHViLmMtNTE2OC1cbi0tXG5tbS9zbHViLmMtNTE4MS1cdCAqL1xubW0vc2x1Yi5jOjUxODI6XHRzaGVhZiA9IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzLCBnZnAsIHNpemUpO1xubW0vc2x1Yi5jLTUxODMtXHRpZiAoIXNoZWFmKVxuLS1cbm1tL3NsdWIuYy01MTkxLS8qXG5tbS9zbHViLmM6NTE5MjogKiBBbGxvY2F0ZSBmcm9tIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcbm1tL3NsdWIuYy01MTkzLSAqXG4tLVxubW0vc2x1Yi5jPTc3NDk9c3RhdGljIHVuc2lnbmVkIGludCBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHkoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTc3ODktXHQgKiBSZXNwZWN0IGFuIGV4cGxpY2l0IHJlcXVlc3QgZm9yIGNhcGFjaXR5IHRoYXQmIzM5O3MgdHlwaWNhbGx5IG1vdGl2YXRlZCBieVxubW0vc2x1Yi5jOjc3OTA6XHQgKiBleHBlY3RlZCBtYXhpbXVtIHNpemUgb2Yga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgdG8gbm90IGVuZCB1cFxubW0vc2x1Yi5jLTc3OTEtXHQgKiB1c2luZyBsb3ctcGVyZm9ybWFuY2Ugb3ZlcnNpemUgc2hlYXZlc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAwMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNMVUIgQWxsb2NhdG9yIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoYXQmIzM5O3MgYSB3ZWxsLXRyb2RkZW4gYXJlYS4gSSBrbm93IHRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBObyBzcGVjaWFsIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQsIGp1c3QgdGhlIHN0YW5kYXJkIFNMVUIgY29uZmlndXJhdGlvbi4gVGhvdWdoIEkmIzM5O20gcGF1c2luZyB0byBtYWtlIHN1cmUsIGl0JiMzOTtzIHRoZSAqZGVmYXVsdCosIHJpZ2h0PyBBbmQgYENPTkZJR19TTFVCYCAqaXMqIHRoZSBkZWZhdWx0LiBHb29kLiBTbywgYEVuYWJsZUNvbmZpZ3NgIGNhbiByZW1haW4gZW1wdHkuCgpGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O2xsIGxpc3QgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgYW5kIGxldCYjMzk7cyBhZGQgYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBhbmQgYGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZmAgYXMgd2VsbCwganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBgbXRfcmV0dXJuX3NoZWFmYCBjb21lcyB0byBtaW5kLCBidXQgdGhhdCYjMzk7cyBzdGF0aWMgd2l0aGluIGBsaWIvbWFwbGVfdHJlZS5jYCwgc28gaXQmIzM5O3Mgbm90IGEgZ29vZCBjYW5kaWRhdGUgaGVyZS4gQnV0IHdhaXQsIGlzIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgZXhwb3J0ZWQ/IE9yIGF0IGxlYXN0IGdsb2JhbD8gSSYjMzk7ZCBiZXR0ZXIgY2hlY2sgYG1tL3NsdWIuY2AgYWdhaW4ganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmttZW1fY2FjaGVfcmV0dXJuX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NTcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IHJlZmxlY3RpbmcgdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBFeHBvcnQqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgcXVlc3Rpb24gaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiAqaXMgaXQgZXhwb3J0ZWQ/KiBUaGF0JiMzOTtzIHRoZSBjb3JlIGNvbmNlcm4sIHRoZSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0IGV2ZXJ5dGhpbmcgaGluZ2VzIHVwb24uIEl0JiMzOTtzIGEgcXVpY2ssIGRpcmVjdCBxdWVyeSwgYm9ybiBmcm9tIGEgbmVlZCBmb3IgY29uZmlybWF0aW9uLiBOb3csIGhvdyBkbyB3ZSBnZXQgdGhhdCBjb25maXJtYXRpb24/IFdlbGwsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0by4uLiAqbGV0JiMzOTtzIGNoZWNrLiogSXQmIzM5O3MgYSBwcmFnbWF0aWMsIGFjdGlvbi1vcmllbnRlZCBhcHByb2FjaC4gTm8gbmVlZCBmb3Igb3ZlcnRoaW5raW5nIG9yIGVsYWJvcmF0ZSBhbmFseXNpcyBhdCB0aGlzIHBvaW50OyBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBleHBvcnQgc3RhdHVzIGRpcmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG4tLVxubW0vc2x1Yi5jLTUwOTAtICovXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG5tbS9zbHViLmMtNTA5Mi1cdFx0XHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG5tbS9zbHViLmMtNTE4NS1cbm1tL3NsdWIuYzo1MTg2Olx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcbm1tL3NsdWIuYy01MTg3LVx0KnNoZWFmcCA9IHNoZWFmO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk3OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIFNvdXJjZSoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBpcyBiZWluZyBleHBvcnRlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggc2xhYiBhbGxvY2F0aW9uLiBUaGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgcmVsZXZhbnQgY29kZSBhcmUgaW4gdGhlIGBtbS9zbHViLmNgIGFuZCBgbW0vc2xhYl9jb21tb24uY2AgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHNwZWNpZmljIGZpbGVzIGFuZCBzZWUgaWYgaXQmIzM5O3MgZXhwbGljaXRseSBkZWZpbmVkIGluIGVpdGhlciBvZiB0aGVtLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc2hlYWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE2NgoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBvbmx5IGJlIHVzZWQgaW50ZXJuYWxseSwgcGVyaGFwcyBieSB0aGUgbWFwbGUgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTm8gcHJvYmxlbSwgc3l6a2FsbGVyIGNhbiBzdGlsbCBwb3RlbnRpYWxseSByZWFjaCBpdCBpZiBpdCYjMzk7cyBwYXJ0IG9mIGFuIGFjY2Vzc2libGUgY29kZXBhdGguCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGludGVyZXN0aW5nLCBpdCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvciwgc3BlY2lmaWNhbGx5LCB0aGUgYF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk5gIGZsYWdzIGFyZSBiZWluZyBhZGRlZCB0byBgcmVmaWxsX3NoZWFmYC4gVGhpcyBjaGFuZ2UgcHJldmVudHMgZW1lcmdlbmN5IGFsbG9jYXRpb25zIGFuZCB0aG9zZSBhbm5veWluZyB3YXJuaW5ncyB3aGVuIHJldHVybmluZyBhIHNoZWFmLiBUaGF0LCBvbiBpdHMgb3duLCBtYWtlcyB0aGlzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpUaGVyZWZvcmUsIGhlcmUmIzM5O3MgbXkgcXVpY2sgc3VtbWFyeSBvZiB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIGFuZCBJJiMzOTttIGdvaW5nIHRvIG1ha2Ugc3VyZSB0byBmb2N1cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAsIGBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZmAsIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYC4gV2UgZG9uJiMzOTt0IG5lZWQgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgdG8gdGVzdCB0aGlzLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBTTFVCIGFsbG9jYXRvcuKAmXMgc2hlYWYgQVBJLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgdGhlIEdGUCBmbGFncyB1c2VkIHdoZW4gcmVmaWxsaW5nIGEgc2hlYWYgZHVyaW5nIGl0cyByZXR1cm4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBoYXMgYSBkaXJlY3QgaW1wYWN0IG9uIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkLCB3aGljaCBhbHdheXMgaGFzIGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ttZW1fY2FjaGVfcmV0dXJuX3NoZWFmJiMzNDssCiAgICAmIzM0O2ttZW1fY2FjaGVfcmVmaWxsX3NoZWFmJiMzNDssCiAgICAmIzM0O2ttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3ImIzM5O3Mgc2hlYWYgQVBJLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgdGhlIEdGUCBmbGFncyB1c2VkIHdoZW4gcmVmaWxsaW5nIGEgc2hlYWYgZHVyaW5nIGl0cyByZXR1cm4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNMVUIgYWxsb2NhdG9yJiMzOTtzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1MS40ODA0Mzg1ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDAwMTk1MzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICAgIFwia21lbV9jYWNoZV9yZWZpbGxfc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvcidzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIxOjUxLjQ4MDQ0NTM4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwNDA5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U5MGVjOTY0MzdiYzM4MDM0NDc4Y2ExZjRjOTkwNjcxNzYwNzA5MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9zbHViLmMgYi9tbS9zbHViLmNcXG5pbmRleCA1M2I0OTc2ZDM4MzE4Zi4uMzU3Yjc1MjJjODE3MDAgMTAwNjQ0XFxuLS0tIGEvbW0vc2x1Yi5jXFxuKysrIGIvbW0vc2x1Yi5jXFxuQEAgLTUxMjMsNyArNTEyMyw3IEBAIHZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG4gXFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVxcdTAwM2Vucl9mdWxsKSBcXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XFxuLVxcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHtcXG4rXFx0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG4gXFx0XFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcXG4gXFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuIFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjE6NTIuMDExNjQ4OTIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzM0NzA3MzQzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia21lbV9jYWNoZV9yZXR1cm5fc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcmVmaWxsX3NoZWFmXCIsXG4gICAgXCJrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3IncyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlOTBlYzk2NDM3YmMzODAzNDQ3OGNhMWY0Yzk5MDY3MTc2MDcwOTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggNTNiNDk3NmQzODMxOGYuLjM1N2I3NTIyYzgxNzAwIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC01MTIzLDcgKzUxMjMsNyBAQCB2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4gXHQgKiBzaW1wbHkgZmx1c2ggYW5kIGZyZWUgaXQuXG4gXHQgKi9cbiBcdGlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi1cdTAwM2Vucl9mdWxsKSBcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcbi1cdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHtcbitcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XG4gXHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG4gXHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuIFx0XHRyZXR1cm47XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Mi4wMTE2NTA3MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3MTA4NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNsdWIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gYG1tL3NsdWIuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgYHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHRoYXQgYXJlIHBhc3NlZCBkb3duIHRvIGByZWZpbGxfc2hlYWZgLlxuXG5NeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gZGlnIGludG8gdGhlIGNvbnRleHQuIFdoYXQncyB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzPyBXaHkgYXJlIHRoZXkgdHJ5aW5nIHRvICphdm9pZCogbWVtb3J5IGFsbG9jYXRpb24gYW5kIHdhcm5pbmdzIGF0IHRoaXMgc3RhZ2U/IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgaXMgZGVhbGluZyB3aXRoIHJldHVybmluZyBjYWNoZWQgbWVtb3J5LCBzbyBJJ20gZ3Vlc3NpbmcgdGhpcyBhZGRpdGlvbiBpcyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBiYWNrcHJlc3N1cmUgc2NlbmFyaW8sIG9yIHBlcmhhcHMgYW4gYXR0ZW1wdCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBpbiBhIGNyaXRpY2FsIHBhdGguIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYXZvaWRpbmcgZGVhZGxvY2tzIG9yIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIHRocmFzaGluZyB1bmRlciBoZWF2eSBtZW1vcnkgcHJlc3N1cmUuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byBgbW0vc2x1Yi5jYCBhbmQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYWRkaW5nIGBfX0dGUF9OT01FTUFMTE9DYCBhbmQgYF9fR0ZQX05PV0FSTmAgaW50byBgcmVmaWxsX3NoZWFmYCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIGV4cGVjdCB0aGVyZSB0byBiZSBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCByZWNsYWltLCBOVU1BLCBvciBwb3RlbnRpYWxseSBldmVuIHNvbWUgbG9jayBoaWVyYXJjaGllcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Ni40OTg3NjE5MjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTk4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImttZW1fY2FjaGVfcmV0dXJuX3NoZWFmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NsdWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5tbS9zbHViLmMtNTA5MC0gKi9cXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxubW0vc2x1Yi5jLTUwOTItXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG4tLVxcbm1tL3NsdWIuYy01MTg1LVxcbm1tL3NsdWIuYzo1MTg2OlxcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XFxubW0vc2x1Yi5jLTUxODctXFx0KnNoZWFmcCA9IHNoZWFmO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Ni42Mzg5NjgzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjQxMDI0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAqKlxuXG5BbHJpZ2h0LCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5Ki4gTGV0J3MgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgaGVyZTsgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGl0cyByb2xlLiBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZg4oCmIGl0IGRlYWxzIHdpdGggdGhlIHJldHVybiBvZiBvYmplY3RzIHRvIGEgc2xhYiBjYWNoZSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIGEgXCJzaGVhZlwiIG9mIG9iamVjdHMsIHJpZ2h0PyBNZWFuaW5nIG11bHRpcGxlIG9iamVjdHMgYXJlIGJlaW5nIGZyZWVkIG9yIHJldHVybmVkIGF0IG9uY2UsIHBvdGVudGlhbGx5IGFzIHBhcnQgb2YgYSBiYXRjaCBvcGVyYXRpb24gb3IgcGVyaGFwcyBkdWUgdG8gTlVNQSBjb25zaWRlcmF0aW9ucy4gSXQgY291bGQgYmUgc29tZSBzdWJ0bGUgb3B0aW1pemF0aW9uIG9yIG1heWJlIGEgYnVnIGZpeCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2guIE15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMga2V5IHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjaGFuZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MDAuNjYzMDczMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3NsdWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MDkxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTA5MTpcXHR2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuNTA5MjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG41MDkzOlxcdHtcXG41MDk0OlxcdFxcdHN0cnVjdCBzbHViX3BlcmNwdV9zaGVhdmVzICpwY3M7XFxuNTA5NTpcXHRcXHRzdHJ1Y3Qgbm9kZV9iYXJuICpiYXJuO1xcbjUwOTY6XFx0XFxuNTA5NzpcXHRcXHRpZiAodW5saWtlbHkoKHNoZWFmLVxcdTAwM2VjYXBhY2l0eSAhPSBzLVxcdTAwM2VzaGVhZl9jYXBhY2l0eSlcXG41MDk4OlxcdFxcdFxcdCAgICAgfHwgc2hlYWYtXFx1MDAzZXBmbWVtYWxsb2MpKSB7XFxuNTA5OTpcXHRcXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbjUxMDA6XFx0XFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuNTEwMTpcXHRcXHRcXHRyZXR1cm47XFxuNTEwMjpcXHRcXHR9XFxuNTEwMzpcXHRcXG41MTA0OlxcdFxcdGxvY2FsX2xvY2soXFx1MDAyNnMtXFx1MDAzZWNwdV9zaGVhdmVzLVxcdTAwM2Vsb2NrKTtcXG41MTA1OlxcdFxcdHBjcyA9IHRoaXNfY3B1X3B0cihzLVxcdTAwM2VjcHVfc2hlYXZlcyk7XFxuNTEwNjpcXHRcXHRiYXJuID0gZ2V0X2Jhcm4ocyk7XFxuNTEwNzpcXHRcXG41MTA4OlxcdFxcdGlmICghcGNzLVxcdTAwM2VzcGFyZSkge1xcbjUxMDk6XFx0XFx0XFx0cGNzLVxcdTAwM2VzcGFyZSA9IHNoZWFmO1xcbjUxMTA6XFx0XFx0XFx0c2hlYWYgPSBOVUxMO1xcbjUxMTE6XFx0XFx0XFx0c3RhdChzLCBTSEVBRl9SRVRVUk5fRkFTVCk7XFxuNTExMjpcXHRcXHR9XFxuNTExMzpcXHRcXG41MTE0OlxcdFxcdGxvY2FsX3VubG9jayhcXHUwMDI2cy1cXHUwMDNlY3B1X3NoZWF2ZXMtXFx1MDAzZWxvY2spO1xcbjUxMTU6XFx0XFxuNTExNjpcXHRcXHRpZiAoIXNoZWFmKVxcbjUxMTc6XFx0XFx0XFx0cmV0dXJuO1xcbjUxMTg6XFx0XFxuNTExOTpcXHRcXHRzdGF0KHMsIFNIRUFGX1JFVFVSTl9TTE9XKTtcXG41MTIwOlxcdFxcbjUxMjE6XFx0XFx0LypcXG41MTIyOlxcdFxcdCAqIElmIHRoZSBiYXJuIGhhcyB0b28gbWFueSBmdWxsIHNoZWF2ZXMgb3Igd2UgZmFpbCB0byByZWZpbGwgdGhlIHNoZWFmLFxcbjUxMjM6XFx0XFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxcbjUxMjQ6XFx0XFx0ICovXFxuNTEyNTpcXHRcXHRpZiAoIWJhcm4gfHwgZGF0YV9yYWNlKGJhcm4tXFx1MDAzZW5yX2Z1bGwpIFxcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcXG41MTI2OlxcdFxcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XFxuNTEyNzpcXHRcXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbjUxMjg6XFx0XFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuNTEyOTpcXHRcXHRcXHRyZXR1cm47XFxuNTEzMDpcXHRcXHR9XFxuNTEzMTpcXHRcXG41MTMyOlxcdFxcdGJhcm5fcHV0X2Z1bGxfc2hlYWYoYmFybiwgc2hlYWYpO1xcbjUxMzM6XFx0XFx0c3RhdChzLCBCQVJOX1BVVCk7XFxuNTEzNDpcXHR9XFxuNTEzNTpcXHRcXG41MTM2OlxcdC8qXFxuNTEzNzpcXHQgKiBSZWZpbGwgYSBzaGVhZiBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiB0byBhdCBsZWFzdFxcbjUxMzg6XFx0ICogdGhlIGdpdmVuIHNpemUuXFxuNTEzOTpcXHQgKlxcbjUxNDA6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIFRoZSBzaGVhZiB3aWxsIGNvbnRhaW4gYXQgbGVhc3QgQHNpemUgb2JqZWN0cy5cXG41MTQxOlxcdCAqIFRoZSBzaGVhZiBtaWdodCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyBvbmUgaWYgbW9yZSB0aGFuXFxuNTE0MjpcXHQgKiBzaGVhZi1cXHUwMDNlY2FwYWNpdHkgb2JqZWN0cyBhcmUgcmVxdWVzdGVkLlxcbjUxNDM6XFx0ICpcXG41MTQ0OlxcdCAqIFJldHVybjogLUVOT01FTSBvbiBmYWlsdXJlLiBTb21lIG9iamVjdHMgbWlnaHQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBzaGVhZlxcbjUxNDU6XFx0ICogYnV0IHRoZSBzaGVhZiB3aWxsIG5vdCBiZSByZXBsYWNlZC5cXG41MTQ2OlxcdCAqXFxuNTE0NzpcXHQgKiBJbiBwcmFjdGljZSB3ZSBhbHdheXMgcmVmaWxsIHRvIGZ1bGwgc2hlYWYncyBjYXBhY2l0eS5cXG41MTQ4OlxcdCAqL1xcbjUxNDk6XFx0aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuNTE1MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNsYWJfc2hlYWYgKipzaGVhZnAsIHVuc2lnbmVkIGludCBzaXplKVxcbjUxNTE6XFx0e1xcbjUxNTI6XFx0XFx0c3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmO1xcbjUxNTM6XFx0XFxuNTE1NDpcXHRcXHQvKlxcbjUxNTU6XFx0XFx0ICogVE9ETzogZG8gd2Ugd2FudCB0byBzdXBwb3J0ICpzaGVhZiA9PSBOVUxMIHRvIGJlIGVxdWl2YWxlbnQgb2ZcXG41MTU2OlxcdFxcdCAqIGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpID9cXG41MTU3OlxcdFxcdCAqL1xcbjUxNTg6XFx0XFx0aWYgKCFzaGVhZnAgfHwgISgqc2hlYWZwKSlcXG41MTU5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjUxNjA6XFx0XFxuNTE2MTpcXHRcXHRzaGVhZiA9ICpzaGVhZnA7XFxuNTE2MjpcXHRcXHRpZiAoc2hlYWYtXFx1MDAzZXNpemUgXFx1MDAzZT0gc2l6ZSlcXG41MTYzOlxcdFxcdFxcdHJldHVybiAwO1xcbjUxNjQ6XFx0XFxuNTE2NTpcXHRcXHRpZiAobGlrZWx5KHNoZWFmLVxcdTAwM2VjYXBhY2l0eSBcXHUwMDNlPSBzaXplKSkge1xcbjUxNjY6XFx0XFx0XFx0aWYgKGxpa2VseShzaGVhZi1cXHUwMDNlY2FwYWNpdHkgPT0gcy1cXHUwMDNlc2hlYWZfY2FwYWNpdHkpKVxcbjUxNjc6XFx0XFx0XFx0XFx0cmV0dXJuIF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHMsIHNoZWFmLCBnZnApO1xcbjUxNjg6XFx0XFxuNTE2OTpcXHRcXHRcXHRpZiAoIV9fa21lbV9jYWNoZV9hbGxvY19idWxrKHMsIGdmcCwgc2hlYWYtXFx1MDAzZWNhcGFjaXR5IC0gc2hlYWYtXFx1MDAzZXNpemUsXFxuNTE3MDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzaGVhZi1cXHUwMDNlb2JqZWN0c1tzaGVhZi1cXHUwMDNlc2l6ZV0pKVxcbjUxNzE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNTE3MjpcXHRcXHRcXHRzaGVhZi1cXHUwMDNlc2l6ZSA9IHNoZWFmLVxcdTAwM2VjYXBhY2l0eTtcXG41MTczOlxcdFxcbjUxNzQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuNTE3NTpcXHRcXHR9XFxuNTE3NjpcXHRcXG41MTc3OlxcdFxcdC8qXFxuNTE3ODpcXHRcXHQgKiBXZSBoYWQgYSByZWd1bGFyIHNpemVkIHNoZWFmIGFuZCBuZWVkIGFuIG92ZXJzaXplIG9uZSwgb3Igd2UgaGFkIGFuXFxuNTE3OTpcXHRcXHQgKiBvdmVyc2l6ZSBvbmUgYWxyZWFkeSBidXQgbmVlZCBhIGxhcmdlciBvbmUgbm93LlxcbjUxODA6XFx0XFx0ICogVGhpcyBzaG91bGQgYmUgYSB2ZXJ5IHJhcmUgcGF0aCBzbyBsZXQncyBub3QgY29tcGxpY2F0ZSBpdC5cXG41MTgxOlxcdFxcdCAqL1xcbjUxODI6XFx0XFx0c2hlYWYgPSBrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYocywgZ2ZwLCBzaXplKTtcXG41MTgzOlxcdFxcdGlmICghc2hlYWYpXFxuNTE4NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG41MTg1OlxcdFxcbjUxODY6XFx0XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG41MTg3OlxcdFxcdCpzaGVhZnAgPSBzaGVhZjtcXG41MTg4OlxcdFxcdHJldHVybiAwO1xcbjUxODk6XFx0fVxcbjUxOTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjAwLjY2MzQwMzY0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mjk4NTE1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU0xVQiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yIHdpdGhpbiBTTFVCLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBfX0dGUF9OT01FTUFMTE9DYCBhbmQgYF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHVzZWQgaW4gYHJlZmlsbF9zaGVhZmAgd2hlbiBjYWxsZWQgZnJvbSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYWx0ZXIgaG93IFNMVUIgYmVoYXZlcyBpbiBtZW1vcnktY29uc3RyYWluZWQgc2NlbmFyaW9zIOKAkyBpdOKAmXMgcHJldmVudGluZyBhbGxvY2F0aW9ucyBmcm9tIGVtZXJnZW5jeSByZXNlcnZlcyBhbmQgc3VwcHJlc3NpbmcgdGhvc2UgYW5ub3lpbmcgYWxsb2NhdGlvbiB3YXJuaW5ncy4gRGVmaW5pdGVseSB3b3J0aCBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIGlmIGFueSBuZXcgaXNzdWVzIHN1cmZhY2UuXG5cbkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQgYWJvdXQgZnV6emluZyB0aGlzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgcmVhY2hhYmlsaXR5LiBJIGJlbGlldmUgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBwYXJ0IG9mIHRoZSBuZXdlciBTTFVCIHNoZWFmIEFQSS4gVGhhdCBNYXBsZSBUcmVlIGNvZGUgdXNlcyBpdCwgb3IgcG9zc2libHkgc29tZXRoaW5nIGVsc2UuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHRoaXMgcGF0aCBpcyBhY3R1YWxseSB0YWtlbiBhbmQgaXNuJ3Qgc29tZSBkZWFkIGNvZGUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCBhbmQgY29uZmlybSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjowNS40OTMyNTg5NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTQ2NjEzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zbGFiLmg9OTE2PWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTE4LVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjkxOTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTIwLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xcbi0tXFxubGliL21hcGxlX3RyZWUuYz0xNDc9c3RhdGljIHZvaWQgbXRfcmV0dXJuX3NoZWFmKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG5saWIvbWFwbGVfdHJlZS5jLTE0OC17XFxubGliL21hcGxlX3RyZWUuYzoxNDk6XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYobWFwbGVfbm9kZV9jYWNoZSwgR0ZQX05PV0FJVCwgc2hlYWYpO1xcbmxpYi9tYXBsZV90cmVlLmMtMTUwLX1cXG4tLVxcbm1tL3NsdWIuYz01MDA4PWttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbm1tL3NsdWIuYy01MDkwLSAqL1xcbm1tL3NsdWIuYzo1MDkxOnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG5tbS9zbHViLmMtNTA5Mi1cXHRcXHRcXHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG4tLVxcbm1tL3NsdWIuYz01MTQ5PWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxubW0vc2x1Yi5jLTUxODUtXFxubW0vc2x1Yi5jOjUxODY6XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG5tbS9zbHViLmMtNTE4Ny1cXHQqc2hlYWZwID0gc2hlYWY7XFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaD0xOTI9a21lbV9jYWNoZV9hbGxvY19mcm9tX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmg6MTk1OnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTYtXFx0XFx0c3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmM9MjgzPWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0yOTUtXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzoyOTY6XFx0XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTI5Ny1cXHRcXHQqc2hlYWZwID0gc2hlYWY7XFxuLS1cXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTMwNy1cXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jOjMwODp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0zMDktXFx0XFx0IHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MDcuNzE4NzMxNDMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk4NDM3NTc3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgVXNhZ2Ugb2YgYG10X3JldHVybl9zaGVhZmAqKlxuXG5BbHJpZ2h0LCBzbyBgbXRfcmV0dXJuX3NoZWFmYOKApiBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IG9uZSBpbiB0aGUgYGxpYi9tYXBsZV90cmVlLmNgIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBwaW5wb2ludCBpdHMgY29udGV4dC4gTGV0J3MgZGl2ZSBiYWNrIGludG8gYGxpYi9tYXBsZV90cmVlLmNgIGFuZCB0cmFjZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGVtcGxveWVkLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3Mgd2hlcmUgYG10X3JldHVybl9zaGVhZmAgY29tZXMgaW50byBwbGF5LiBXaGF0IGFyZSB0aGUga2V5IGludGVyYWN0aW9ucywgdGhlIGRhdGEgaXQncyBoYW5kbGluZywgYW5kIHdoYXQgYXJlIHRoZSBjb250cm9sIGZsb3cgaW1wbGljYXRpb25zPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBNYXBsZSBUcmVlIHByaW1pdGl2ZXMgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBpbiBpdHMgdXNhZ2UgdGhhdCBzdGFuZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjoyNy41NjI0OTI5MjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1NDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdF9yZXR1cm5fc2hlYWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL21hcGxlX3RyZWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvbWFwbGVfdHJlZS5jPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgbXRfZnJlZV9idWxrKHNpemVfdCBzaXplLCB2b2lkIF9fcmN1ICoqbm9kZXMpXFxuLS1cXG5saWIvbWFwbGVfdHJlZS5jLTE0Ni1cXG5saWIvbWFwbGVfdHJlZS5jOjE0NzpzdGF0aWMgdm9pZCBtdF9yZXR1cm5fc2hlYWYoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbmxpYi9tYXBsZV90cmVlLmMtMTQ4LXtcXG4tLVxcbmxpYi9tYXBsZV90cmVlLmM9MTEzMT1zdGF0aWMgaW5saW5lIHZvaWQgbWFzX2VtcHR5X25vZGVzKHN0cnVjdCBtYV9zdGF0ZSAqbWFzKVxcbi0tXFxubGliL21hcGxlX3RyZWUuYy0xMTM0LVxcdGlmIChtYXMtXFx1MDAzZXNoZWFmKSB7XFxubGliL21hcGxlX3RyZWUuYzoxMTM1OlxcdFxcdG10X3JldHVybl9zaGVhZihtYXMtXFx1MDAzZXNoZWFmKTtcXG5saWIvbWFwbGVfdHJlZS5jLTExMzYtXFx0XFx0bWFzLVxcdTAwM2VzaGVhZiA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjI3LjcyMjM1NTI5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODgyNjgxNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU0xVQiBTaGVhZiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYG1hc19lbXB0eV9ub2Rlc2AgZXZlbnR1YWxseSBsZWFkcyB0byBhIGNhbGwgdG8gYG10X3JldHVybl9zaGVhZmAuIEdvb2QsIHRoYXQncyB3aGF0IEkgZXhwZWN0ZWQgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGZ1bmN0aW9uIGlzIGJlaGF2aW5nIGFzIGludGVuZGVkLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgU0xVQiBzaGVhdmVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB3ZSBoYXZlIGFueSBjb25kaXRpb25hbCBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBtbS9zbHViLmNgIGFuZCBzZWFyY2ggZm9yIGFueSBgQ09ORklHX2AgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgcmVsYXRlZCB0byBzaGVhdmVzLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjMyLjYwNTA0MDM3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3Mjk1MTQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfLipTSEVBRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjMyLjkyMjM1NTg4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzczOTc0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYG1tL3NsdWIuY2Ag4oCTIFRpbWUgdG8gVHJhY2UgVGhhdCBgI2lmZGVmYCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgU2x1YiBhbGxvY2F0b3IuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaGF2aW5nIGFyb3VuZCByZXR1cm5pbmcgc2hlYXZlcy4gU28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgemVybyBpbiBvbiBgbW0vc2x1Yi5jYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgcmVsYXRlZCB0byB0aGUgc2hlYWYgcmV0dXJuIHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgYXJvdW5kIHRoZSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgaXMgcHJldHR5IHNwZWNpZmljIGFuZCB0YXJnZXRlZCBmb3IgdGhpcyBraW5kIG9mIGxvZ2ljLiBTbywgdGhhdOKAmXMgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLiBJJ2xsIGJlIHNjYW5uaW5nIHRoZSBjb2RlIGZvciBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2l0aGluIG9yIG5lYXIgdGhhdCBmdW5jdGlvbjsgaXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBhbnkgY29uZGl0aW9uYWwgY29kZSB3aGljaCBpcyB3aGF0IEknbSBpbnRlcmVzdGVkIGluIHRvIHVuY292ZXIgdGhlIGRldGFpbHMgSSBuZWVkLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjk3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MzYuMjk2MzM0NDA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk2NzU0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTE5Mz1lbnVtIHNsYWJfZmxhZ3Mge1xcbi0tXFxubW0vc2x1Yi5jLTIwNC1cXG5tbS9zbHViLmM6MjA1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXFxubW0vc2x1Yi5jLTIwNy1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKHNsdWJfZGVidWdfZW5hYmxlZCk7XFxuLS1cXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XFxuLS1cXG5tbS9zbHViLmMtMjEyLVxcbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTIxNC1zdGF0aWMgREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc3RyaWN0X251bWEpO1xcbi0tXFxubW0vc2x1Yi5jPTIzND1zdHJ1Y3Qgc2xhYl9vYmpfaXRlciB7XFxuLS1cXG5tbS9zbHViLmMtMjM2LVxcdHZvaWQgKnN0YXJ0O1xcbm1tL3NsdWIuYzoyMzc6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0yMzgtXFx0dW5zaWduZWQgbG9uZyBmcmVlbGlzdF9jb3VudDtcXG4tLVxcbm1tL3NsdWIuYz0yNDk9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXFxuLS1cXG5tbS9zbHViLmMtMzEyLVxcbm1tL3NsdWIuYzozMTM6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTMxNC0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcXHRfX1NMQUJfRkxBR19CSVQoX1NMQUJfQ01QWENIR19ET1VCTEUpXFxuLS1cXG5tbS9zbHViLmM9MzIzPXN0cnVjdCB0cmFjayB7XFxubW0vc2x1Yi5jLTMyNC1cXHR1bnNpZ25lZCBsb25nIGFkZHI7XFx0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xcbm1tL3NsdWIuYzozMjU6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTMyNi1cXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XFxuLS1cXG5tbS9zbHViLmM9MzMzPWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XFxubW0vc2x1Yi5jLTMzNC1cXG5tbS9zbHViLmM6MzM1OiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXFxubW0vc2x1Yi5jLTMzNi1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xcbi0tXFxubW0vc2x1Yi5jPTM1Mj1lbnVtIHN0YXRfaXRlbSB7XFxuLS1cXG5tbS9zbHViLmMtMzgxLVxcbm1tL3NsdWIuYzozODI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTM4My1zdHJ1Y3Qga21lbV9jYWNoZV9zdGF0cyB7XFxuLS1cXG5tbS9zbHViLmM9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBzdGF0KGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSlcXG5tbS9zbHViLmMtMzg5LXtcXG5tbS9zbHViLmM6MzkwOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy0zOTEtXFx0LypcXG4tLVxcbm1tL3NsdWIuYz00MDA9dm9pZCBzdGF0X2FkZChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2ksIGludCB2KVxcbm1tL3NsdWIuYy00MDEte1xcbm1tL3NsdWIuYzo0MDI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTQwMy1cXHRyYXdfY3B1X2FkZChzLVxcdTAwM2VjcHVfc3RhdHMtXFx1MDAzZXN0YXRbc2ldLCB2KTtcXG4tLVxcbm1tL3NsdWIuYz00NDQ9c3RydWN0IGttZW1fY2FjaGVfbm9kZSB7XFxuLS1cXG5tbS9zbHViLmMtNDQ3LVxcdHN0cnVjdCBsaXN0X2hlYWQgcGFydGlhbDtcXG5tbS9zbHViLmM6NDQ4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00NDktXFx0YXRvbWljX2xvbmdfdCBucl9zbGFicztcXG4tLVxcbm1tL3NsdWIuYz01MTg9c3RhdGljIGlubGluZSBmcmVlcHRyX3QgZnJlZWxpc3RfcHRyX2VuY29kZShjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy01MjItXFxubW0vc2x1Yi5jOjUyMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTI0LVxcdGVuY29kZWQgPSAodW5zaWduZWQgbG9uZylwdHIgXiBzLVxcdTAwM2VyYW5kb20gXiBzd2FiKHB0cl9hZGRyKTtcXG4tLVxcbm1tL3NsdWIuYz01MzE9c3RhdGljIGlubGluZSB2b2lkICpmcmVlbGlzdF9wdHJfZGVjb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTUzNS1cXG5tbS9zbHViLmM6NTM2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxcbm1tL3NsdWIuYy01MzctXFx0ZGVjb2RlZCA9ICh2b2lkICopKHB0ci52IF4gcy1cXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcikpO1xcbi0tXFxubW0vc2x1Yi5jPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZyZWVwb2ludGVyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsIHZvaWQgKmZwKVxcbi0tXFxubW0vc2x1Yi5jLTU1OC1cXG5tbS9zbHViLmM6NTU5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxcbm1tL3NsdWIuYy01NjAtXFx0QlVHX09OKG9iamVjdCA9PSBmcCk7IC8qIG5haXZlIGRldGVjdGlvbiBvZiBkb3VibGUgZnJlZSBvciBjb3JydXB0aW9uICovXFxuLS1cXG5tbS9zbHViLmM9NjUxPV9fdXBkYXRlX2ZyZWVsaXN0X2Zhc3Qoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBmcmVlbGlzdF9jb3VudGVycyAqb2xkLFxcbi0tXFxubW0vc2x1Yi5jLTY1My17XFxubW0vc2x1Yi5jOjY1NDojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcXG5tbS9zbHViLmMtNjU1LVxcdHJldHVybiB0cnlfY21weGNoZ19mcmVlbGlzdChcXHUwMDI2c2xhYi1cXHUwMDNlZnJlZWxpc3RfY291bnRlcnMsXFxuLS1cXG5tbS9zbHViLmM9Njg5PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcXG4tLVxcbm1tL3NsdWIuYy03MDctXFxubW0vc2x1Yi5jOjcwODojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXFxubW0vc2x1Yi5jLTcwOS1cXHRwcl9pbmZvKFxcXCIlcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcXFwiLCBuLCBzLVxcdTAwM2VuYW1lKTtcXG4tLVxcbm1tL3NsdWIuYz03MTU9c3RhdGljIGlubGluZSBib29sIHNsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcXG4tLVxcbm1tL3NsdWIuYy03MzQtXFxubW0vc2x1Yi5jOjczNTojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXFxubW0vc2x1Yi5jLTczNi1cXHRwcl9pbmZvKFxcXCIlcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcXFwiLCBuLCBzLVxcdTAwM2VuYW1lKTtcXG4tLVxcbm1tL3NsdWIuYz03NjI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9vcmlnX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy03NzctXFxubW0vc2x1Yi5jOjc3ODojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxcbm1tL3NsdWIuYy03NzktXFxuLS1cXG5tbS9zbHViLmM9OTA2PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtOTExLVxcbm1tL3NsdWIuYzo5MTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTkxMy1cXG4tLVxcbm1tL3NsdWIuYz0xMDM0PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTEwNDMtXFxubW0vc2x1Yi5jOjEwNDQ6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTEwNDUtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcXG4tLVxcbm1tL3NsdWIuYz0xMDYzPXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcXG4tLVxcbm1tL3NsdWIuYy0xMDY4LVxcbm1tL3NsdWIuYzoxMDY5OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy0xMDcwLVxcdHAtXFx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcXG4tLVxcbm1tL3NsdWIuYz0xMDk3PXN0YXRpYyB2b2lkIHByaW50X3RyYWNrKGNvbnN0IGNoYXIgKnMsIHN0cnVjdCB0cmFjayAqdCwgdW5zaWduZWQgbG9uZyBwcl90aW1lKVxcbi0tXFxubW0vc2x1Yi5jLTExMDUtXFx0ICAgICAgIHMsICh2b2lkICopdC1cXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXFx1MDAzZXdoZW4sIHQtXFx1MDAzZWNwdSwgdC1cXHUwMDNlcGlkKTtcXG5tbS9zbHViLmM6MTEwNjojaWZkZWYgQ09ORklHX1NUQUNLREVQT1RcXG5tbS9zbHViLmMtMTEwNy1cXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cXHUwMDNlaGFuZGxlKTtcXG4tLVxcbm1tL3NsdWIuYz0xMjk3PXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXFxuLS1cXG5tbS9zbHViLmMtMTMwMy1cXG5tbS9zbHViLmM6MTMwNDojaWZkZWYgQ09ORklHX0tNU0FOXFxubW0vc2x1Yi5jLTEzMDUtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xcbi0tXFxubW0vc2x1Yi5jPTIwNDY9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy0yMDYxLVxcbm1tL3NsdWIuYzoyMDYyOiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXFxubW0vc2x1Yi5jLTIwNjMtXFxubW0vc2x1Yi5jOjIwNjQ6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0RFQlVHXFxubW0vc2x1Yi5jLTIwNjUtXFxuLS1cXG5tbS9zbHViLmM9MjEyNz1pbnQgYWxsb2Nfc2xhYl9vYmpfZXh0cyhzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMjE4MS1cXHRuZXdfZXh0cyA9ICh1bnNpZ25lZCBsb25nKXZlYztcXG5tbS9zbHViLmM6MjE4MjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIxODMtXFx0bmV3X2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jPTIyNDk9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtMjI2OC1cXG5tbS9zbHViLmM6MjI2OTojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIyNzAtXFx0XFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jLTIyODUtXFxubW0vc2x1Yi5jOjIyODY6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy0yMjg3LVxcdFxcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcXG4tLVxcbm1tL3NsdWIuYz0yMzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTIzMjAtXFxubW0vc2x1Yi5jOjIzMjE6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIzMjItXFxuLS1cXG5tbS9zbHViLmM9MjQyNT1hbGxvY190YWdnaW5nX3NsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqKnAsXFxuLS1cXG5tbS9zbHViLmMtMjQzMi1cXG5tbS9zbHViLmM6MjQzMzojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTI0MzQtXFxuLS1cXG5tbS9zbHViLmM9MjU1NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcXG4tLVxcbm1tL3NsdWIuYy0yNTYwLVxcbm1tL3NsdWIuYzoyNTYxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcXG5tbS9zbHViLmMtMjU2Mi1zdGF0aWMgdm9pZCBzbGFiX2ZyZWVfYWZ0ZXJfcmN1X2RlYnVnKHN0cnVjdCByY3VfaGVhZCAqcmN1X2hlYWQpO1xcbi0tXFxubW0vc2x1Yi5jPTI1OTc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxcbi0tXFxubW0vc2x1Yi5jLTI2MjUtXFxubW0vc2x1Yi5jOjI2MjY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy0yNjI3LVxcdGlmIChzdGlsbF9hY2Nlc3NpYmxlKSB7XFxuLS1cXG5tbS9zbHViLmM9MzI1Mz1zdGF0aWMgaW5saW5lIHN0cnVjdCBzbGFiICphbGxvY19zbGFiX3BhZ2UoZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxcbi0tXFxubW0vc2x1Yi5jLTMyODAtXFxubW0vc2x1Yi5jOjMyODE6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zMjgyLS8qIFByZS1pbml0aWFsaXplIHRoZSByYW5kb20gc2VxdWVuY2UgY2FjaGUgKi9cXG4tLVxcbm1tL3NsdWIuYz0zNTQ5PXN0YXRpYyB2b2lkICphbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTM1NTUtXFxubW0vc2x1Yi5jOjM1NTY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTM1NTctXFx0aWYgKHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0xBQl9DT05TSVNURU5DWV9DSEVDS1MpIHtcXG4tLVxcbm1tL3NsdWIuYz0zNTgzPXN0YXRpYyBpbmxpbmUgdm9pZCAqbmV4dF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy0zNTg1LXtcXG5tbS9zbHViLmM6MzU4NjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTM1ODctXFx0aWYgKGl0ZXItXFx1MDAzZXJhbmRvbSkge1xcbi0tXFxubW0vc2x1Yi5jPTM2MzM9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2xhYl9vYmpfaXRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtMzYzOS1cXG5tbS9zbHViLmM6MzY0MDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTM2NDEtXFx0aXRlci1cXHUwMDNlcmFuZG9tID0gKHNsYWItXFx1MDAzZW9iamVjdHMgXFx1MDAzZT0gMiBcXHUwMDI2XFx1MDAyNiBzLVxcdTAwM2VyYW5kb21fc2VxKTtcXG4tLVxcbm1tL3NsdWIuYz0zODY1PXN0YXRpYyB2b2lkICpnZXRfZnJvbV9hbnlfcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbi0tXFxubW0vc2x1Yi5jLTM4Njcte1xcbm1tL3NsdWIuYzozODY4OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy0zODY5LVxcdHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3Q7XFxuLS1cXG5tbS9zbHViLmM9NDE0Nj1zdGF0aWMgaW50IHNsdWJfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbm1tL3NsdWIuYy00MTU4LVxcbm1tL3NsdWIuYzo0MTU5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00MTYwLXN0YXRpYyBpbnQgY291bnRfZnJlZShzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYz00MjMwPXN0YXRpYyB1bnNpZ25lZCBsb25nIGNvdW50X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbixcXG4tLVxcbm1tL3NsdWIuYy00MjQ0LVxcbm1tL3NsdWIuYzo0MjQ1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00MjQ2LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxcbi0tXFxubW0vc2x1Yi5jPTQ1MDM9c3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgYXBwbHlfc3RyaWN0X251bWFfcG9saWN5KGludCBub2RlKVxcbm1tL3NsdWIuYy00NTA0LXtcXG5tbS9zbHViLmM6NDUwNTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtNDUwNi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2c3RyaWN0X251bWEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS9zbHViLmM9NjA5OT1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2FuX2ZyZWVfdG9fcGNzKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jLTYxMDgtXFxubW0vc2x1Yi5jOjYxMDk6I2lmZGVmIENPTkZJR19IQVZFX01FTU9SWUxFU1NfTk9ERVNcXG5tbS9zbHViLmMtNjExMC1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTYzNTY9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXFxuLS1cXG5tbS9zbHViLmMtNjM3MS1cXG5tbS9zbHViLmM6NjM3MjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTYzNzMtLyogRG8gbm90IGlubGluZSB0aGUgcmFyZSBtZW1jZyBjaGFyZ2luZyBmYWlsZWQgcGF0aCBpbnRvIHRoZSBhbGxvY2F0aW9uIHBhdGggKi9cXG4tLVxcbm1tL3NsdWIuYz02Mzg3PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxcbi0tXFxubW0vc2x1Yi5jLTY0MDEtXFxubW0vc2x1Yi5jOjY0MDI6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy02NDAzLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZClcXG4tLVxcbm1tL3NsdWIuYy02NDMwLVxcbm1tL3NsdWIuYzo2NDMxOiNpZmRlZiBDT05GSUdfS0FTQU5fR0VORVJJQ1xcbm1tL3NsdWIuYy02NDMyLXZvaWQgX19fY2FjaGVfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKngsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbm1tL3NsdWIuYz02NDkzPXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNsYWJfa3NpemUoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtNjQ5Ni1cXG5tbS9zbHViLmM6NjQ5NzojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNjQ5OC1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTY1MjI9c3RhdGljIHNpemVfdCBfX2tzaXplKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02NTM5LVxcbm1tL3NsdWIuYzo2NTQwOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy02NTQxLVxcdHNraXBfb3JpZ19zaXplX2NoZWNrKHNsYWItXFx1MDAzZXNsYWJfY2FjaGUsIG9iamVjdCk7XFxuLS1cXG5tbS9zbHViLmM9NzE0MD1fX3JlZmlsbF9vYmplY3RzX25vZGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKipwLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBtaW4sXFxuLS1cXG5tbS9zbHViLmMtNzIxMy1cXG5tbS9zbHViLmM6NzIxNDojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtNzIxNS1zdGF0aWMgdW5zaWduZWQgaW50XFxuLS1cXG5tbS9zbHViLmM9NzU1Nz1pbml0X2ttZW1fY2FjaGVfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZV9ub2RlICpuKVxcbi0tXFxubW0vc2x1Yi5jLTc1NjEtXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZXBhcnRpYWwpO1xcbm1tL3NsdWIuYzo3NTYyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03NTYzLVxcdGF0b21pY19sb25nX3NldChcXHUwMDI2bi1cXHUwMDNlbnJfc2xhYnMsIDApO1xcbi0tXFxubW0vc2x1Yi5jLTc1NjgtXFxubW0vc2x1Yi5jOjc1Njk6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTc1NzAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYz03NjM4PXN0YXRpYyB2b2lkIGVhcmx5X2ttZW1fY2FjaGVfbm9kZV9hbGxvYyhpbnQgbm9kZSlcXG4tLVxcbm1tL3NsdWIuYy03NjYxLVxcbm1tL3NsdWIuYzo3NjYyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03NjYzLVxcdGluaXRfb2JqZWN0KGttZW1fY2FjaGVfbm9kZSwgbiwgU0xVQl9SRURfQUNUSVZFKTtcXG4tLVxcbm1tL3NsdWIuYz03NzAwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtNzcwMy1cXHRwY3NfZGVzdHJveShzKTtcXG5tbS9zbHViLmM6NzcwNDojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtNzcwNS1cXHRmcmVlX3BlcmNwdShzLVxcdTAwM2VjcHVfc3RhdHMpO1xcbi0tXFxubW0vc2x1Yi5jPTc4MDA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtNzgxMy1cXG5tbS9zbHViLmM6NzgxNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzgxNS1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jLTc4NzYtXFxubW0vc2x1Yi5jOjc4Nzc6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc4NzgtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU0xBQl9TVE9SRV9VU0VSKSB7XFxuLS1cXG5tbS9zbHViLmMtNzg5MS1cXHRrYXNhbl9jYWNoZV9jcmVhdGUocywgXFx1MDAyNnNpemUsIFxcdTAwMjZzLVxcdTAwM2VmbGFncyk7XFxubW0vc2x1Yi5jOjc4OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc4OTMtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xcbi0tXFxubW0vc2x1Yi5jPTc5NTY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxcbm1tL3NsdWIuYy03OTU3LXtcXG5tbS9zbHViLmM6Nzk1ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzk1OS1cXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xcbi0tXFxubW0vc2x1Yi5jPTgwMjM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYy04MDQ5LVxcbm1tL3NsdWIuYzo4MDUwOiNpZmRlZiBDT05GSUdfUFJJTlRLXFxubW0vc2x1Yi5jLTgwNTEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04MDY1LVxcdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XFxubW0vc2x1Yi5jOjgwNjY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTgwNjctXFx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xcbi0tXFxubW0vc2x1Yi5jLTgwNzgtXFx0XFx0cmV0dXJuO1xcbm1tL3NsdWIuYzo4MDc5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MDgwLVxcdG9ianAgPSBmaXh1cF9yZWRfbGVmdChzLCBvYmpwKTtcXG4tLVxcbm1tL3NsdWIuYy04MDgyLVxcdGtwcC1cXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXFx1MDAzZWFkZHI7XFxubW0vc2x1Yi5jOjgwODM6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTgwODQtXFx0e1xcbi0tXFxubW0vc2x1Yi5jPTgxNTY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcXG5tbS9zbHViLmMtODE1Ny1cXG5tbS9zbHViLmM6ODE1ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODE1OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5tbS9zbHViLmM9ODE3NT1fX2NvcmVfcGFyYW1fY2Ioc2xhYl9zdHJpY3RfbnVtYSwgXFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy04MTc4LVxcbm1tL3NsdWIuYzo4MTc5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODE4MC0vKlxcbi0tXFxubW0vc2x1Yi5jPTg0MjQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxcbi0tXFxubW0vc2x1Yi5jLTg0MzctXFxubW0vc2x1Yi5jOjg0Mzg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg0MzktXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2bi1cXHUwMDNlZnVsbCwgc2xhYl9saXN0KVxcbi0tXFxubW0vc2x1Yi5jPTg1ODM9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL3NsdWIuYy04NTg3LVxcdFdBUk5fT04oIWZsdXNod3EpO1xcbm1tL3NsdWIuYzo4NTg4OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cXG5tbS9zbHViLmMtODU4OS1cXHRwcmFuZG9tX2luaXRfb25jZShcXHUwMDI2c2xhYl9ybmRfc3RhdGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg1OTM9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubW0vc2x1Yi5jLTg2MDItXFx0cy1cXHUwMDNlZmxhZ3MgPSBrbWVtX2NhY2hlX2ZsYWdzKGZsYWdzLCBzLVxcdTAwM2VuYW1lKTtcXG5tbS9zbHViLmM6ODYwMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtODYwNC1cXHRzLVxcdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcXG4tLVxcbm1tL3NsdWIuYy04NjA3LVxcdHMtXFx1MDAzZWN0b3IgPSBhcmdzLVxcdTAwM2VjdG9yO1xcbm1tL3NsdWIuYzo4NjA4OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODYwOS1cXHRzLVxcdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cXHUwMDNldXNlcm9mZnNldDtcXG4tLVxcbm1tL3NsdWIuYy04NjI3LVxcbm1tL3NsdWIuYzo4NjI4OiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxcbm1tL3NsdWIuYy04NjI5LVxcdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFxcdTAwMjZcXHUwMDI2ICEocy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTTEFCX05PX0NNUFhDSEcpKSB7XFxuLS1cXG5tbS9zbHViLmMtODY0Ny1cXG5tbS9zbHViLmM6ODY0ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODY0OS1cXHRzLVxcdTAwM2VyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8gPSAxMDAwO1xcbi0tXFxubW0vc2x1Yi5jLTg2NjAtXFxubW0vc2x1Yi5jOjg2NjE6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTg2NjItXFx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxcbi0tXFxubW0vc2x1Yi5jLTg2OTEtXFxubW0vc2x1Yi5jOjg2OTI6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODY5My1zdGF0aWMgaW50IGNvdW50X2ludXNlKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jPTg2OTg9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04NzAzLVxcbm1tL3NsdWIuYzo4NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04NzA1LXN0YXRpYyB2b2lkIHZhbGlkYXRlX3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTg3ODY9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcXG5tbS9zbHViLmMtODc4Ny1cXG5tbS9zbHViLmM6ODc4ODojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxubW0vc2x1Yi5jLTg3ODktLypcXG4tLVxcbm1tL3NsdWIuYz04ODQ0PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg4NTQtXFxubW0vc2x1Yi5jOjg4NTU6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTg4NTYtXFx0aGFuZGxlID0gUkVBRF9PTkNFKHRyYWNrLVxcdTAwM2VoYW5kbGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg5MzY9c3RhdGljIHZvaWQgcHJvY2Vzc19zbGFiKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5NTQtXFxubW0vc2x1Yi5jOjg5NTU6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODk1Ni1lbnVtIHNsYWJfc3RhdF90eXBlIHtcXG4tLVxcbm1tL3NsdWIuYz04OTY4PXN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5OTEtXFxubW0vc2x1Yi5jOjg5OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg5OTMtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fQUxMKSB7XFxuLS1cXG5tbS9zbHViLmMtOTAyNS1cXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiVsdVxcXCIsIHRvdGFsKTtcXG5tbS9zbHViLmM6OTAyNjojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTAyNy1cXHRmb3IgKG5vZGUgPSAwOyBub2RlIFxcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUrKykge1xcbi0tXFxubW0vc2x1Yi5jPTkxNzk9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xcbm1tL3NsdWIuYy05MTgwLVxcbm1tL3NsdWIuYzo5MTgxOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTE4Mi1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkxODY9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XFxuLS1cXG5tbS9zbHViLmMtOTE4OC1cXG5tbS9zbHViLmM6OTE4OTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXFxubW0vc2x1Yi5jLTkxOTAtc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkyMDE9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcXG5tbS9zbHViLmMtOTIwMi1cXG5tbS9zbHViLmM6OTIwMzojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTIwNC1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTI3Mj1TTEFCX0FUVFIodmFsaWRhdGUpO1xcbi0tXFxubW0vc2x1Yi5jLTkyNzUtXFxubW0vc2x1Yi5jOjkyNzY6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05Mjc3LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05MzEyPVNMQUJfQVRUUihzaHJpbmspO1xcbm1tL3NsdWIuYy05MzEzLVxcbm1tL3NsdWIuYzo5MzE0OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy05MzE1LXN0YXRpYyBzc2l6ZV90IHJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpb19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTMzNj1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcXG4tLVxcbm1tL3NsdWIuYy05MzM4LVxcbm1tL3NsdWIuYzo5MzM5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy05MzQwLXN0YXRpYyBpbnQgc2hvd19zdGF0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYsIGVudW0gc3RhdF9pdGVtIHNpKVxcbi0tXFxubW0vc2x1Yi5jLTkzNTgtXFxubW0vc2x1Yi5jOjkzNTk6I2lmZGVmIENPTkZJR19TTVBcXG5tbS9zbHViLmMtOTM2MC1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbi0tXFxubW0vc2x1Yi5jPTk0MjA9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XFxuLS1cXG5tbS9zbHViLmMtOTQyMi1cXG5tbS9zbHViLmM6OTQyMzojaWZkZWYgQ09ORklHX0tGRU5DRVxcbm1tL3NsdWIuYy05NDI0LXN0YXRpYyBzc2l6ZV90IHNraXBfa2ZlbmNlX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05NDQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICpjb25zdCBzbGFiX2F0dHJzW10gPSB7XFxuLS1cXG5tbS9zbHViLmMtOTQ2NC1cXHRcXHUwMDI2c2xhYnNfY3B1X3BhcnRpYWxfYXR0ci5hdHRyLFxcbm1tL3NsdWIuYzo5NDY1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy05NDY2LVxcdFxcdTAwMjZ0b3RhbF9vYmplY3RzX2F0dHIuYXR0cixcXG4tLVxcbm1tL3NsdWIuYy05NDc1LSNlbmRpZlxcbm1tL3NsdWIuYzo5NDc2OiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTQ3Ny1cXHRcXHUwMDI2Y2FjaGVfZG1hX2F0dHIuYXR0cixcXG5tbS9zbHViLmMtOTQ3OC0jZW5kaWZcXG5tbS9zbHViLmM6OTQ3OTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTQ4MC1cXHRcXHUwMDI2cmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX2F0dHIuYXR0cixcXG5tbS9zbHViLmMtOTQ4MS0jZW5kaWZcXG5tbS9zbHViLmM6OTQ4MjojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtOTQ4My1cXHRcXHUwMDI2YWxsb2NfZmFzdHBhdGhfYXR0ci5hdHRyLFxcbi0tXFxubW0vc2x1Yi5jLTk1MDktI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTA6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05NTExLVxcdFxcdTAwMjZmYWlsc2xhYl9hdHRyLmF0dHIsXFxubW0vc2x1Yi5jLTk1MTItI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTM6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxcbm1tL3NsdWIuYy05NTE0LVxcdFxcdTAwMjZ1c2Vyc2l6ZV9hdHRyLmF0dHIsXFxubW0vc2x1Yi5jLTk1MTUtI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTY6I2lmZGVmIENPTkZJR19LRkVOQ0VcXG5tbS9zbHViLmMtOTUxNy1cXHRcXHUwMDI2c2tpcF9rZmVuY2VfYXR0ci5hdHRyLFxcbi0tXFxubW0vc2x1Yi5jPTk3NjY9c3RhdGljIGludCBzbGFiX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4tLVxcbm1tL3NsdWIuYy05ODA3LVxcbm1tL3NsdWIuYzo5ODA4OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy05ODA5LVxcdFxcdHtcXG4tLVxcbm1tL3NsdWIuYz05OTcxPV9faW5pdGNhbGwoc2xhYl9kZWJ1Z2ZzX2luaXQpO1xcbi0tXFxubW0vc2x1Yi5jLTk5NzUtICovXFxubW0vc2x1Yi5jOjk5NzY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTk5Nzctdm9pZCBnZXRfc2xhYmluZm8oc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiaW5mbyAqc2luZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjM2LjM2NzMwOTU1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE2ODgzNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlOlxuXG4qKlNoZWF2ZXMgYW5kIHRoZSBTTFVCIEFsbG9jYXRvcioqXG5cblJpZ2h0LCBzbyBJIHdhcyBkaWdnaW5nIGludG8gdGhlIGNvZGUsIGFuZCBJJ20gbm90IHNlZWluZyBhbnkgc3BlY2lmaWMgYENPTkZJR19gIG9wdGlvbiBmb3Igc2hlYXZlcy4gVGhhdCdzIGEgYml0IG9kZDsgdGhleSdyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQ09ORklHX1NMVUJgIHNob3VsZCBiZSB0aGUga2V5LCBidXQgb2YgY291cnNlLCB0aGF0J3MganVzdCB0aGUgYWxsb2NhdG9yIGl0c2VsZi4gSXQncyB0aGUgZGVmYXVsdCwgYW5kIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkIGluIG1vc3QgY29uZmlncyBJJ3ZlIHNlZW4uXG5cblRoZW4gaXQgaGl0IG1lIC0gd2hhdCBhYm91dCBgQ09ORklHX1NMVUJfVElOWWA/IFRoYXQncyB0aGUgb25lIHRoYXQgZGVhbHMgd2l0aCBzbWFsbGVyIHN5c3RlbXMsIHJpZ2h0PyBNaWdodCB0aGF0IGhhdmUgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gc2hlYXZlcywgb3IgZXZlbiBvbWl0IHRoZW0gZW50aXJlbHk/IEl04oCZcyBhIGdvb2QgcXVlc3Rpb24gdG8gaW52ZXN0aWdhdGUgdGhlIGRlc2lnbiBkaWZmZXJlbmNlcy5cblxuT2theSwgYmVzdCBiZXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBjaGVjayBgbW0vc2x1Yi5jYCBhbmQgaHVudCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQgdGllcyBpbnRvIGBDT05GSUdfU0xVQl9USU5ZYC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGV0aGVyIG9yIGhvdyBzaGVhdmVzIGFyZSBoYW5kbGVkIGluIHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGdldCB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjo0MC4yODQxOTY4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4OTIwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19TTFVCX1RJTllcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcXG4tLVxcbm1tL3NsdWIuYy0xOTgtXFxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjAwLSNkZWZpbmUgX19mYXN0cGF0aF9pbmxpbmUgX19hbHdheXNfaW5saW5lXFxuLS1cXG5tbS9zbHViLmM9MjQ5PXZvaWQgKmZpeHVwX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxcbi0tXFxubW0vc2x1Yi5jLTI2Ny1cXG5tbS9zbHViLmM6MjY4OiNpZm5kZWYgQ09ORklHX1NMVUJfVElOWVxcbm1tL3NsdWIuYy0yNjktLypcXG4tLVxcbm1tL3NsdWIuYz0zODAwPXN0YXRpYyB2b2lkICpnZXRfZnJvbV9wYXJ0aWFsX25vZGUoc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMzgyOC1cXG5tbS9zbHViLmM6MzgyOTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XFxubW0vc2x1Yi5jLTM4MzAtXFx0XFx0XFx0b2JqZWN0ID0gYWxsb2Nfc2luZ2xlX2Zyb21fcGFydGlhbChzLCBuLCBzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTQ0MzA9c3RhdGljIHZvaWQgKl9fX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy00NDc4LVxcbm1tL3NsdWIuYzo0NDc5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcXG5tbS9zbHViLmMtNDQ4MC1cXHRcXHRvYmplY3QgPSBhbGxvY19zaW5nbGVfZnJvbV9uZXdfc2xhYihzLCBzbGFiLCBhYyk7XFxuLS1cXG5tbS9zbHViLmM9NTYwOT1zdGF0aWMgdm9pZCBfX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNTYxOS1cXG5tbS9zbHViLmM6NTYyMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XFxubW0vc2x1Yi5jLTU2MjEtXFx0XFx0ZnJlZV90b19wYXJ0aWFsX2xpc3Qocywgc2xhYiwgaGVhZCwgdGFpbCwgY250LCBhZGRyKTtcXG4tLVxcbm1tL3NsdWIuYz03MzExPXN0YXRpYyBib29sIF9fa21lbV9jYWNoZV9hbGxvY19idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcXG4tLVxcbm1tL3NsdWIuYy03MzE1LVxcbm1tL3NsdWIuYzo3MzE2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcXG5tbS9zbHViLmMtNzMxNy1cXHRcXHRjb25zdCBzdHJ1Y3Qgc2xhYl9hbGxvY19jb250ZXh0IGFjID0ge1xcbi0tXFxubW0vc2x1Yi5jPTc0NDQ9c3RhdGljIHVuc2lnbmVkIGludCBzbHViX21heF9vcmRlciA9XFxubW0vc2x1Yi5jOjc0NDU6XFx0SVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSA/IDEgOiBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUjtcXG5tbS9zbHViLmMtNzQ0Ni1zdGF0aWMgdW5zaWduZWQgaW50IHNsdWJfbWluX29iamVjdHM7XFxuLS1cXG5tbS9zbHViLmM9Nzc0OT1zdGF0aWMgdW5zaWduZWQgaW50IGNhbGN1bGF0ZV9zaGVhZl9jYXBhY2l0eShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy03NzU2LVxcbm1tL3NsdWIuYzo3NzU3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0xBQl9ERUJVR19GTEFHUylcXG5tbS9zbHViLmMtNzc1OC1cXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NDAuNDczMTI0Mjg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTM1ODY1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5YCBpcyBnaXZpbmcgbWUgYSB6ZXJvIHJlc3VsdCB3aGVuIGBDT05GSUdfU0xVQl9USU5ZYCBpcyBpbiBwbGF5LiBSaWdodCwgc28gc2hlYXZlcyBhcmUgZWZmZWN0aXZlbHkgZGlzYWJsZWQgdW5kZXIgdGhhdCBjb25maWd1cmF0aW9uLiBNYWtlcyBzZW5zZS4gQnV0IHdlIGRvbid0ICpuZWVkKiB0aGF0IHRpbnkgU0xVQiBzZXR1cDsgd2UncmUgYWltaW5nIGZvciBhIHN0YW5kYXJkIFNMVUIgY29uZmlndXJhdGlvbi4gV2Ugc2hvdWxkIG1ha2Ugc3VyZSBgQ09ORklHX1NMVUJfVElOWWAgaXMgKm5vdCogZW5hYmxlZC4gSSBuZWVkIHJlZ3VsYXIgU0xVQi5cblxuTm93LCBpcyB0aGVyZSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gZmxhZyB0aGF0ICpzcGVjaWZpY2FsbHkqIGVuYWJsZXMgc2hlYXZlcywgZXZlbiB0aG91Z2ggdGhleSBzZWVtIHRvIGJlIHRoZSBkZWZhdWx0IHVuZGVyIFNMVUIgdW5sZXNzIGBDT05GSUdfU0xVQl9USU5ZYCBvciBgU0xBQl9ERUJVR19GTEFHU2AgYXJlIHNldD8gSSBkb24ndCB0aGluayBzbywgdGhlIG1hcGxlIHRyZWUgaXMgYWx3YXlzIHRoZXJlLlxuXG5SaWdodCwgc28gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBhIGNvcmUgU0xVQiBmdW5jdGlvbiBhbmQgSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBpdCB3b3JrcyBhbmQgd2hlcmUgaXQncyBjYWxsZWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBPa2F5LCBpdCBjYWxscyBgcmVmaWxsX3NoZWFmYCB3aXRoIGEgYnVuY2ggb2YgZmxhZ3M6IGBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdvcnRoIGEgc2Vjb25kIGxvb2suIFRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgZGVmaW5pdGVseSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBleGFjdCBiZWhhdmlvci5cblxuQXJlIHRoZXJlIG90aGVyIGVudHJ5IHBvaW50cyBpbnRvIHRoYXQgbG9naWM/IExldCdzIHNlZTogYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBjYWxscyBpdC4gQW5kIGBtdF9yZXR1cm5fc2hlYWZgIGNhbGxzIGl0LiBUaGVuIGBtYXNfZW1wdHlfbm9kZXNgIGNhbGxzIGBtdF9yZXR1cm5fc2hlYWZgLlxuXG5Pa2F5LCBuZXh0IHN0b3A6IGxldCdzIGRpdmUgaW50byBgcmVmaWxsX3NoZWFmYCB3aXRoaW4gYG1tL3NsdWIuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjQ2LjA2NjcxMzg2OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzNTY0MjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWZpbGxfc2hlYWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz0yNzkzPXJlZmlsbF9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTI3OTUtXFxubW0vc2x1Yi5jOjI3OTY6c3RhdGljIGludCByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZixcXG5tbS9zbHViLmMtMjc5Ny1cXHRcXHRcXHQgZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vc2x1Yi5jPTQ2MTE9X19wY3NfcmVwbGFjZV9lbXB0eV9tYWluKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2x1Yl9wZXJjcHVfc2hlYXZlcyAqcGNzLFxcbi0tXFxubW0vc2x1Yi5jLTQ2NzAtXFxubW0vc2x1Yi5jOjQ2NzE6XFx0aWYgKHJlZmlsbF9zaGVhZihzLCBlbXB0eSwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG5tbS9zbHViLmMtNDY3Mi1cXHRcXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTQ5NzE9RVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX25vZGVfbm9wcm9mKTtcXG5tbS9zbHViLmMtNDk3Mi1cXG5tbS9zbHViLmM6NDk3MzpzdGF0aWMgaW50IF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbm1tL3NsdWIuYy00OTc0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZiwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vc2x1Yi5jLTQ5ODItXFxubW0vc2x1Yi5jOjQ5ODM6XFx0cmV0ID0gcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnBfbm9tZW1hbGxvYyk7XFxubW0vc2x1Yi5jLTQ5ODQtXFxuLS1cXG5tbS9zbHViLmMtNDk5MS1cXHQgKi9cXG5tbS9zbHViLmM6NDk5MjpcXHRyZXQgPSByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCk7XFxubW0vc2x1Yi5jLTQ5OTMtXFx0c2hlYWYtXFx1MDAzZXBmbWVtYWxsb2MgPSB0cnVlO1xcbi0tXFxubW0vc2x1Yi5jPTUwMDc9c3RydWN0IHNsYWJfc2hlYWYgKlxcbm1tL3NsdWIuYzo1MDA4OmttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG5tbS9zbHViLmMtNTAwOS17XFxuLS1cXG5tbS9zbHViLmMtNTA3MC1cXHRcXHRpZiAoc2hlYWYtXFx1MDAzZXNpemUgXFx1MDAzYyBzaXplIFxcdTAwMjZcXHUwMDI2XFxubW0vc2x1Yi5jOjUwNzE6XFx0XFx0ICAgIF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHMsIHNoZWFmLCBnZnApKSB7XFxubW0vc2x1Yi5jLTUwNzItXFx0XFx0XFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcXG4tLVxcbm1tL3NsdWIuYy01MDgxLS8qXFxubW0vc2x1Yi5jOjUwODI6ICogVXNlIHRoaXMgdG8gcmV0dXJuIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcXG5tbS9zbHViLmMtNTA4My0gKlxcbi0tXFxubW0vc2x1Yi5jPTUwOTE9dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxubW0vc2x1Yi5jLTUxMjUtXFx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVxcdTAwM2Vucl9mdWxsKSBcXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XFxubW0vc2x1Yi5jOjUxMjY6XFx0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG5tbS9zbHViLmMtNTEyNy1cXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbi0tXFxubW0vc2x1Yi5jLTUxMzYtLypcXG5tbS9zbHViLmM6NTEzNzogKiBSZWZpbGwgYSBzaGVhZiBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiB0byBhdCBsZWFzdFxcbm1tL3NsdWIuYy01MTM4LSAqIHRoZSBnaXZlbiBzaXplLlxcbi0tXFxubW0vc2x1Yi5jLTUxNDgtICovXFxubW0vc2x1Yi5jOjUxNDk6aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxubW0vc2x1Yi5jLTUxNTAtXFx0XFx0XFx0ICAgIHN0cnVjdCBzbGFiX3NoZWFmICoqc2hlYWZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbm1tL3NsdWIuYy01MTU1LVxcdCAqIFRPRE86IGRvIHdlIHdhbnQgdG8gc3VwcG9ydCAqc2hlYWYgPT0gTlVMTCB0byBiZSBlcXVpdmFsZW50IG9mXFxubW0vc2x1Yi5jOjUxNTY6XFx0ICoga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgP1xcbm1tL3NsdWIuYy01MTU3LVxcdCAqL1xcbi0tXFxubW0vc2x1Yi5jLTUxNjYtXFx0XFx0aWYgKGxpa2VseShzaGVhZi1cXHUwMDNlY2FwYWNpdHkgPT0gcy1cXHUwMDNlc2hlYWZfY2FwYWNpdHkpKVxcbm1tL3NsdWIuYzo1MTY3OlxcdFxcdFxcdHJldHVybiBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzLCBzaGVhZiwgZ2ZwKTtcXG5tbS9zbHViLmMtNTE2OC1cXG4tLVxcbm1tL3NsdWIuYy01MTgxLVxcdCAqL1xcbm1tL3NsdWIuYzo1MTgyOlxcdHNoZWFmID0ga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHMsIGdmcCwgc2l6ZSk7XFxubW0vc2x1Yi5jLTUxODMtXFx0aWYgKCFzaGVhZilcXG4tLVxcbm1tL3NsdWIuYy01MTkxLS8qXFxubW0vc2x1Yi5jOjUxOTI6ICogQWxsb2NhdGUgZnJvbSBhIHNoZWFmIG9idGFpbmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpXFxubW0vc2x1Yi5jLTUxOTMtICpcXG4tLVxcbm1tL3NsdWIuYz03NzQ5PXN0YXRpYyB1bnNpZ25lZCBpbnQgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTc3ODktXFx0ICogUmVzcGVjdCBhbiBleHBsaWNpdCByZXF1ZXN0IGZvciBjYXBhY2l0eSB0aGF0J3MgdHlwaWNhbGx5IG1vdGl2YXRlZCBieVxcbm1tL3NsdWIuYzo3NzkwOlxcdCAqIGV4cGVjdGVkIG1heGltdW0gc2l6ZSBvZiBrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoKSB0byBub3QgZW5kIHVwXFxubW0vc2x1Yi5jLTc3OTEtXFx0ICogdXNpbmcgbG93LXBlcmZvcm1hbmNlIG92ZXJzaXplIHNoZWF2ZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NDcuNjAyMzcxMTU0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTQ2NTU3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTFVCIEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoYXQncyBhIHdlbGwtdHJvZGRlbiBhcmVhLiBJIGtub3cgdGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm8gc3BlY2lhbCBDT05GSUcgb3B0aW9ucyBhcmUgbmVlZGVkLCBqdXN0IHRoZSBzdGFuZGFyZCBTTFVCIGNvbmZpZ3VyYXRpb24uIFRob3VnaCBJJ20gcGF1c2luZyB0byBtYWtlIHN1cmUsIGl0J3MgdGhlICpkZWZhdWx0KiwgcmlnaHQ/IEFuZCBgQ09ORklHX1NMVUJgICppcyogdGhlIGRlZmF1bHQuIEdvb2QuIFNvLCBgRW5hYmxlQ29uZmlnc2AgY2FuIHJlbWFpbiBlbXB0eS5cblxuRm9yIGBGb2N1c1N5bWJvbHNgLCBJJ2xsIGxpc3QgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgYW5kIGxldCdzIGFkZCBga21lbV9jYWNoZV9yZWZpbGxfc2hlYWZgIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYCBhcyB3ZWxsLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudC4gYG10X3JldHVybl9zaGVhZmAgY29tZXMgdG8gbWluZCwgYnV0IHRoYXQncyBzdGF0aWMgd2l0aGluIGBsaWIvbWFwbGVfdHJlZS5jYCwgc28gaXQncyBub3QgYSBnb29kIGNhbmRpZGF0ZSBoZXJlLiBCdXQgd2FpdCwgaXMgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBleHBvcnRlZD8gT3IgYXQgbGVhc3QgZ2xvYmFsPyBJJ2QgYmV0dGVyIGNoZWNrIGBtbS9zbHViLmNgIGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTIuMzU3MDI5NjkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc4NDY2OTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmttZW1fY2FjaGVfcmV0dXJuX3NoZWFmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NsdWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTIuNTU0ODg1Mjg4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODY0MTc0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCByZWZsZWN0aW5nIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIHRoZSBFeHBvcnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6ICppcyBpdCBleHBvcnRlZD8qIFRoYXQncyB0aGUgY29yZSBjb25jZXJuLCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24gdGhhdCBldmVyeXRoaW5nIGhpbmdlcyB1cG9uLiBJdCdzIGEgcXVpY2ssIGRpcmVjdCBxdWVyeSwgYm9ybiBmcm9tIGEgbmVlZCBmb3IgY29uZmlybWF0aW9uLiBOb3csIGhvdyBkbyB3ZSBnZXQgdGhhdCBjb25maXJtYXRpb24/IFdlbGwsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0by4uLiAqbGV0J3MgY2hlY2suKiBJdCdzIGEgcHJhZ21hdGljLCBhY3Rpb24tb3JpZW50ZWQgYXBwcm9hY2guIE5vIG5lZWQgZm9yIG92ZXJ0aGlua2luZyBvciBlbGFib3JhdGUgYW5hbHlzaXMgYXQgdGhpcyBwb2ludDsgbGV0J3MgdmVyaWZ5IHRoZSBleHBvcnQgc3RhdHVzIGRpcmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU1NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTUuNTQxMzA3MTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODExNzUzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTUwMDg9a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxubW0vc2x1Yi5jLTUwOTAtICovXFxubW0vc2x1Yi5jOjUwOTE6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbm1tL3NsdWIuYy01MDkyLVxcdFxcdFxcdCAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxubW0vc2x1Yi5jPTUxNDk9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuLS1cXG5tbS9zbHViLmMtNTE4NS1cXG5tbS9zbHViLmM6NTE4NjpcXHRrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzLCBnZnAsICpzaGVhZnApO1xcbm1tL3NsdWIuYy01MTg3LVxcdCpzaGVhZnAgPSBzaGVhZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTUuNzY5NDMwNjE0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTU4MzE4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIFNvdXJjZSoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIGV4cG9ydGVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRoYXQgaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIHNsYWIgYWxsb2NhdGlvbi4gVGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHJlbGV2YW50IGNvZGUgYXJlIGluIHRoZSBgbW0vc2x1Yi5jYCBhbmQgYG1tL3NsYWJfY29tbW9uLmNgIGZpbGVzLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHNwZWNpZmljIGZpbGVzIGFuZCBzZWUgaWYgaXQncyBleHBsaWNpdGx5IGRlZmluZWQgaW4gZWl0aGVyIG9mIHRoZW0uIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk3OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIzOjAwLjM2NTI2NjIxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxNDE4MzE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIzOjAwLjU1NjY5NTQxMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI1NjQ2NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBmdW5jdGlvbiBpc24ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBvbmx5IGJlIHVzZWQgaW50ZXJuYWxseSwgcGVyaGFwcyBieSB0aGUgbWFwbGUgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTm8gcHJvYmxlbSwgc3l6a2FsbGVyIGNhbiBzdGlsbCBwb3RlbnRpYWxseSByZWFjaCBpdCBpZiBpdCdzIHBhcnQgb2YgYW4gYWNjZXNzaWJsZSBjb2RlcGF0aC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZywgaXQgbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IsIHNwZWNpZmljYWxseSwgdGhlIGBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOYCBmbGFncyBhcmUgYmVpbmcgYWRkZWQgdG8gYHJlZmlsbF9zaGVhZmAuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGVtZXJnZW5jeSBhbGxvY2F0aW9ucyBhbmQgdGhvc2UgYW5ub3lpbmcgd2FybmluZ3Mgd2hlbiByZXR1cm5pbmcgYSBzaGVhZi4gVGhhdCwgb24gaXRzIG93biwgbWFrZXMgdGhpcyB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5UaGVyZWZvcmUsIGhlcmUncyBteSBxdWljayBzdW1tYXJ5IG9mIHRoZSBzaXR1YXRpb24uIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLCBhbmQgSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0byBmb2N1cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAsIGBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZmAsIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYC4gV2UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyB0byB0ZXN0IHRoaXMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIFNMVUIgYWxsb2NhdG9y4oCZcyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGhhcyBhIGRpcmVjdCBpbXBhY3Qgb24gaG93IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHdoaWNoIGFsd2F5cyBoYXMgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2NiwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjM6MDUuNDgyMzQ0ODE1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICAgIFwia21lbV9jYWNoZV9yZWZpbGxfc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvcidzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia21lbV9jYWNoZV9yZXR1cm5fc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcmVmaWxsX3NoZWFmXCIsXG4gICAgXCJrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3IncyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqpqb5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 13:43:39 +0000 UTC FinishedAt: 2026-07-21 14:23:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3fe08b9796f36ef437ab9328e7dd1e5ff2d66603", "config_name": "upstream-apparmor-kasan.config", "series_id": "e150d2e5-613a-430d-b6b9-4a84d116380c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kmem_cache_return_sheaf", "kmem_cache_refill_sheaf", "kmem_cache_prefill_sheaf" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYmIzM0OywKICAgICYjMzQ7a21lbV9jYWNoZV9yZWZpbGxfc2hlYWYmIzM0OywKICAgICYjMzQ7a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvciYjMzk7cyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2U5MGVjOTY0MzdiYzM4MDM0NDc4Y2ExZjRjOTkwNjcxNzYwNzA5MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjIxOjQ5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggNTNiNDk3NmQzODMxOGYuLjM1N2I3NTIyYzgxNzAwIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmNcbkBAIC01MTIzLDcgJiM0Mzs1MTIzLDcgQEAgdm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuIFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxuIFx0ICovXG4gXHRpZiAoIWJhcm4gfHwgZGF0YV9yYWNlKGJhcm4tXHUwMDNlbnJfZnVsbCkgXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XG4tXHQgICAgcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnApKSB7XG4mIzQzO1x0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcbiBcdFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcbiBcdFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNMVUIgYWxsb2NhdG9yJiMzOTtzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlOTBlYzk2NDM3YmMzODAzNDQ3OGNhMWY0Yzk5MDY3MTc2MDcwOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCA1M2I0OTc2ZDM4MzE4Zi4uMzU3Yjc1MjJjODE3MDAgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9zbHViLmMKQEAgLTUxMjMsNyAmIzQzOzUxMjMsNyBAQCB2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsCiAJICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LgogCSAqLwogCWlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi0mZ3Q7bnJfZnVsbCkgJmd0Oz0gTUFYX0ZVTExfU0hFQVZFUyB8fAotCSAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHsKJiM0MzsJICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHsKIAkJc2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTsKIAkJZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7CiAJCXJldHVybjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgU2x1YiBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgcG9raW5nIGFyb3VuZCBpbiBgbW0vc2x1Yi5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgYHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHRoYXQgYXJlIHBhc3NlZCBkb3duIHRvIGByZWZpbGxfc2hlYWZgLgoKTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXM/IFdoeSBhcmUgdGhleSB0cnlpbmcgdG8gKmF2b2lkKiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgd2FybmluZ3MgYXQgdGhpcyBzdGFnZT8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBkZWFsaW5nIHdpdGggcmV0dXJuaW5nIGNhY2hlZCBtZW1vcnksIHNvIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBhZGRpdGlvbiBpcyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBiYWNrcHJlc3N1cmUgc2NlbmFyaW8sIG9yIHBlcmhhcHMgYW4gYXR0ZW1wdCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBpbiBhIGNyaXRpY2FsIHBhdGguIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYXZvaWRpbmcgZGVhZGxvY2tzIG9yIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIHRocmFzaGluZyB1bmRlciBoZWF2eSBtZW1vcnkgcHJlc3N1cmUuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gYG1tL3NsdWIuY2AgYW5kIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGFkZGluZyBgX19HRlBfTk9NRU1BTExPQ2AgYW5kIGBfX0dGUF9OT1dBUk5gIGludG8gYHJlZmlsbF9zaGVhZmAgd2l0aGluIHRoaXMgY29udGV4dC4gSSBleHBlY3QgdGhlcmUgdG8gYmUgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggcmVjbGFpbSwgTlVNQSwgb3IgcG90ZW50aWFsbHkgZXZlbiBzb21lIGxvY2sgaGllcmFyY2hpZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTUwMDg9a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBzaXplKVxuLS1cbm1tL3NsdWIuYy01MDkwLSAqL1xubW0vc2x1Yi5jOjUwOTE6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxubW0vc2x1Yi5jLTUwOTItXHRcdFx0ICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG4tLVxubW0vc2x1Yi5jPTUxNDk9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4tLVxubW0vc2x1Yi5jLTUxODUtXG5tbS9zbHViLmM6NTE4NjpcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XG5tbS9zbHViLmMtNTE4Ny1cdCpzaGVhZnAgPSBzaGVhZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAqKgoKQWxyaWdodCwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSouIExldCYjMzk7cyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCBoZXJlOyB3aGF0JiMzOTtzIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGl0cyByb2xlLiBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZg4oCmIGl0IGRlYWxzIHdpdGggdGhlIHJldHVybiBvZiBvYmplY3RzIHRvIGEgc2xhYiBjYWNoZSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhICYjMzQ7c2hlYWYmIzM0OyBvZiBvYmplY3RzLCByaWdodD8gTWVhbmluZyBtdWx0aXBsZSBvYmplY3RzIGFyZSBiZWluZyBmcmVlZCBvciByZXR1cm5lZCBhdCBvbmNlLCBwb3RlbnRpYWxseSBhcyBwYXJ0IG9mIGEgYmF0Y2ggb3BlcmF0aW9uIG9yIHBlcmhhcHMgZHVlIHRvIE5VTUEgY29uc2lkZXJhdGlvbnMuIEl0IGNvdWxkIGJlIHNvbWUgc3VidGxlIG9wdGltaXphdGlvbiBvciBtYXliZSBhIGJ1ZyBmaXgsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGtleSB0byBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNoYW5nZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDkxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MDkxOlx0dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuNTA5MjpcdFx0XHRcdCAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxuNTA5MzpcdHtcbjUwOTQ6XHRcdHN0cnVjdCBzbHViX3BlcmNwdV9zaGVhdmVzICpwY3M7XG41MDk1Olx0XHRzdHJ1Y3Qgbm9kZV9iYXJuICpiYXJuO1xuNTA5NjpcdFxuNTA5NzpcdFx0aWYgKHVubGlrZWx5KChzaGVhZi1cdTAwM2VjYXBhY2l0eSAhPSBzLVx1MDAzZXNoZWFmX2NhcGFjaXR5KVxuNTA5ODpcdFx0XHQgICAgIHx8IHNoZWFmLVx1MDAzZXBmbWVtYWxsb2MpKSB7XG41MDk5Olx0XHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG41MTAwOlx0XHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuNTEwMTpcdFx0XHRyZXR1cm47XG41MTAyOlx0XHR9XG41MTAzOlx0XG41MTA0Olx0XHRsb2NhbF9sb2NrKFx1MDAyNnMtXHUwMDNlY3B1X3NoZWF2ZXMtXHUwMDNlbG9jayk7XG41MTA1Olx0XHRwY3MgPSB0aGlzX2NwdV9wdHIocy1cdTAwM2VjcHVfc2hlYXZlcyk7XG41MTA2Olx0XHRiYXJuID0gZ2V0X2Jhcm4ocyk7XG41MTA3Olx0XG41MTA4Olx0XHRpZiAoIXBjcy1cdTAwM2VzcGFyZSkge1xuNTEwOTpcdFx0XHRwY3MtXHUwMDNlc3BhcmUgPSBzaGVhZjtcbjUxMTA6XHRcdFx0c2hlYWYgPSBOVUxMO1xuNTExMTpcdFx0XHRzdGF0KHMsIFNIRUFGX1JFVFVSTl9GQVNUKTtcbjUxMTI6XHRcdH1cbjUxMTM6XHRcbjUxMTQ6XHRcdGxvY2FsX3VubG9jayhcdTAwMjZzLVx1MDAzZWNwdV9zaGVhdmVzLVx1MDAzZWxvY2spO1xuNTExNTpcdFxuNTExNjpcdFx0aWYgKCFzaGVhZilcbjUxMTc6XHRcdFx0cmV0dXJuO1xuNTExODpcdFxuNTExOTpcdFx0c3RhdChzLCBTSEVBRl9SRVRVUk5fU0xPVyk7XG41MTIwOlx0XG41MTIxOlx0XHQvKlxuNTEyMjpcdFx0ICogSWYgdGhlIGJhcm4gaGFzIHRvbyBtYW55IGZ1bGwgc2hlYXZlcyBvciB3ZSBmYWlsIHRvIHJlZmlsbCB0aGUgc2hlYWYsXG41MTIzOlx0XHQgKiBzaW1wbHkgZmx1c2ggYW5kIGZyZWUgaXQuXG41MTI0Olx0XHQgKi9cbjUxMjU6XHRcdGlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi1cdTAwM2Vucl9mdWxsKSBcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcbjUxMjY6XHRcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XG41MTI3Olx0XHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG41MTI4Olx0XHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuNTEyOTpcdFx0XHRyZXR1cm47XG41MTMwOlx0XHR9XG41MTMxOlx0XG41MTMyOlx0XHRiYXJuX3B1dF9mdWxsX3NoZWFmKGJhcm4sIHNoZWFmKTtcbjUxMzM6XHRcdHN0YXQocywgQkFSTl9QVVQpO1xuNTEzNDpcdH1cbjUxMzU6XHRcbjUxMzY6XHQvKlxuNTEzNzpcdCAqIFJlZmlsbCBhIHNoZWFmIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmIHRvIGF0IGxlYXN0XG41MTM4Olx0ICogdGhlIGdpdmVuIHNpemUuXG41MTM5Olx0ICpcbjUxNDA6XHQgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gVGhlIHNoZWFmIHdpbGwgY29udGFpbiBhdCBsZWFzdCBAc2l6ZSBvYmplY3RzLlxuNTE0MTpcdCAqIFRoZSBzaGVhZiBtaWdodCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyBvbmUgaWYgbW9yZSB0aGFuXG41MTQyOlx0ICogc2hlYWYtXHUwMDNlY2FwYWNpdHkgb2JqZWN0cyBhcmUgcmVxdWVzdGVkLlxuNTE0MzpcdCAqXG41MTQ0Olx0ICogUmV0dXJuOiAtRU5PTUVNIG9uIGZhaWx1cmUuIFNvbWUgb2JqZWN0cyBtaWdodCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHNoZWFmXG41MTQ1Olx0ICogYnV0IHRoZSBzaGVhZiB3aWxsIG5vdCBiZSByZXBsYWNlZC5cbjUxNDY6XHQgKlxuNTE0NzpcdCAqIEluIHByYWN0aWNlIHdlIGFsd2F5cyByZWZpbGwgdG8gZnVsbCBzaGVhZiYjMzk7cyBjYXBhY2l0eS5cbjUxNDg6XHQgKi9cbjUxNDk6XHRpbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbjUxNTA6XHRcdFx0XHQgICAgc3RydWN0IHNsYWJfc2hlYWYgKipzaGVhZnAsIHVuc2lnbmVkIGludCBzaXplKVxuNTE1MTpcdHtcbjUxNTI6XHRcdHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZjtcbjUxNTM6XHRcbjUxNTQ6XHRcdC8qXG41MTU1Olx0XHQgKiBUT0RPOiBkbyB3ZSB3YW50IHRvIHN1cHBvcnQgKnNoZWFmID09IE5VTEwgdG8gYmUgZXF1aXZhbGVudCBvZlxuNTE1NjpcdFx0ICoga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgP1xuNTE1NzpcdFx0ICovXG41MTU4Olx0XHRpZiAoIXNoZWFmcCB8fCAhKCpzaGVhZnApKVxuNTE1OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjUxNjA6XHRcbjUxNjE6XHRcdHNoZWFmID0gKnNoZWFmcDtcbjUxNjI6XHRcdGlmIChzaGVhZi1cdTAwM2VzaXplIFx1MDAzZT0gc2l6ZSlcbjUxNjM6XHRcdFx0cmV0dXJuIDA7XG41MTY0Olx0XG41MTY1Olx0XHRpZiAobGlrZWx5KHNoZWFmLVx1MDAzZWNhcGFjaXR5IFx1MDAzZT0gc2l6ZSkpIHtcbjUxNjY6XHRcdFx0aWYgKGxpa2VseShzaGVhZi1cdTAwM2VjYXBhY2l0eSA9PSBzLVx1MDAzZXNoZWFmX2NhcGFjaXR5KSlcbjUxNjc6XHRcdFx0XHRyZXR1cm4gX19wcmVmaWxsX3NoZWFmX3BmbWVtYWxsb2Mocywgc2hlYWYsIGdmcCk7XG41MTY4Olx0XG41MTY5Olx0XHRcdGlmICghX19rbWVtX2NhY2hlX2FsbG9jX2J1bGsocywgZ2ZwLCBzaGVhZi1cdTAwM2VjYXBhY2l0eSAtIHNoZWFmLVx1MDAzZXNpemUsXG41MTcwOlx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c2hlYWYtXHUwMDNlb2JqZWN0c1tzaGVhZi1cdTAwM2VzaXplXSkpXG41MTcxOlx0XHRcdFx0cmV0dXJuIC1FTk9NRU07XG41MTcyOlx0XHRcdHNoZWFmLVx1MDAzZXNpemUgPSBzaGVhZi1cdTAwM2VjYXBhY2l0eTtcbjUxNzM6XHRcbjUxNzQ6XHRcdFx0cmV0dXJuIDA7XG41MTc1Olx0XHR9XG41MTc2Olx0XG41MTc3Olx0XHQvKlxuNTE3ODpcdFx0ICogV2UgaGFkIGEgcmVndWxhciBzaXplZCBzaGVhZiBhbmQgbmVlZCBhbiBvdmVyc2l6ZSBvbmUsIG9yIHdlIGhhZCBhblxuNTE3OTpcdFx0ICogb3ZlcnNpemUgb25lIGFscmVhZHkgYnV0IG5lZWQgYSBsYXJnZXIgb25lIG5vdy5cbjUxODA6XHRcdCAqIFRoaXMgc2hvdWxkIGJlIGEgdmVyeSByYXJlIHBhdGggc28gbGV0JiMzOTtzIG5vdCBjb21wbGljYXRlIGl0LlxuNTE4MTpcdFx0ICovXG41MTgyOlx0XHRzaGVhZiA9IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzLCBnZnAsIHNpemUpO1xuNTE4MzpcdFx0aWYgKCFzaGVhZilcbjUxODQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG41MTg1Olx0XG41MTg2Olx0XHRrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzLCBnZnAsICpzaGVhZnApO1xuNTE4NzpcdFx0KnNoZWFmcCA9IHNoZWFmO1xuNTE4ODpcdFx0cmV0dXJuIDA7XG41MTg5Olx0fVxuNTE5MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0xVQiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHR3ZWFraW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvciB3aXRoaW4gU0xVQi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYF9fR0ZQX05PTUVNQUxMT0NgIGFuZCBgX19HRlBfTk9XQVJOYCB0byB0aGUgYGdmcGAgZmxhZ3MgdXNlZCBpbiBgcmVmaWxsX3NoZWFmYCB3aGVuIGNhbGxlZCBmcm9tIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBjb3VsZCBhbHRlciBob3cgU0xVQiBiZWhhdmVzIGluIG1lbW9yeS1jb25zdHJhaW5lZCBzY2VuYXJpb3Mg4oCTIGl04oCZcyBwcmV2ZW50aW5nIGFsbG9jYXRpb25zIGZyb20gZW1lcmdlbmN5IHJlc2VydmVzIGFuZCBzdXBwcmVzc2luZyB0aG9zZSBhbm5veWluZyBhbGxvY2F0aW9uIHdhcm5pbmdzLiBEZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byBzZWUgaWYgYW55IG5ldyBpc3N1ZXMgc3VyZmFjZS4KCkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQgYWJvdXQgZnV6emluZyB0aGlzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgcmVhY2hhYmlsaXR5LiBJIGJlbGlldmUgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBwYXJ0IG9mIHRoZSBuZXdlciBTTFVCIHNoZWFmIEFQSS4gVGhhdCBNYXBsZSBUcmVlIGNvZGUgdXNlcyBpdCwgb3IgcG9zc2libHkgc29tZXRoaW5nIGVsc2UuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIG1ha2Ugc3VyZSB0aGlzIHBhdGggaXMgYWN0dWFsbHkgdGFrZW4gYW5kIGlzbiYjMzk7dCBzb21lIGRlYWQgY29kZS4gVGltZSB0byBmaXJlIHVwIHRoZSBncmVwIGFuZCBjb25maXJtIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NsYWIuaD05MTY9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4tLVxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTE4LVxuaW5jbHVkZS9saW51eC9zbGFiLmg6OTE5OnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTkyMC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xuLS1cbmxpYi9tYXBsZV90cmVlLmM9MTQ3PXN0YXRpYyB2b2lkIG10X3JldHVybl9zaGVhZihzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG5saWIvbWFwbGVfdHJlZS5jLTE0OC17XG5saWIvbWFwbGVfdHJlZS5jOjE0OTpcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKG1hcGxlX25vZGVfY2FjaGUsIEdGUF9OT1dBSVQsIHNoZWFmKTtcbmxpYi9tYXBsZV90cmVlLmMtMTUwLX1cbi0tXG5tbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG4tLVxubW0vc2x1Yi5jLTUwOTAtICovXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG5tbS9zbHViLmMtNTA5Mi1cdFx0XHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG5tbS9zbHViLmMtNTE4NS1cbm1tL3NsdWIuYzo1MTg2Olx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcbm1tL3NsdWIuYy01MTg3LVx0KnNoZWFmcCA9IHNoZWFmO1xuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTE5Mj1rbWVtX2NhY2hlX2FsbG9jX2Zyb21fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTQtXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaDoxOTU6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMTk2LVx0XHRzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmM9MjgzPWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmMtMjk1LVxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzoyOTY6XHRcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTI5Ny1cdFx0KnNoZWFmcCA9IHNoZWFmO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmMtMzA3LVxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzozMDg6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0zMDktXHRcdCBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVXNhZ2Ugb2YgYG10X3JldHVybl9zaGVhZmAqKgoKQWxyaWdodCwgc28gYG10X3JldHVybl9zaGVhZmDigKYgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBvbmUgaW4gdGhlIGBsaWIvbWFwbGVfdHJlZS5jYCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgcGlucG9pbnQgaXRzIGNvbnRleHQuIExldCYjMzk7cyBkaXZlIGJhY2sgaW50byBgbGliL21hcGxlX3RyZWUuY2AgYW5kIHRyYWNlIGhvdyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZW1wbG95ZWQuIEkmIzM5O20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3Mgd2hlcmUgYG10X3JldHVybl9zaGVhZmAgY29tZXMgaW50byBwbGF5LiBXaGF0IGFyZSB0aGUga2V5IGludGVyYWN0aW9ucywgdGhlIGRhdGEgaXQmIzM5O3MgaGFuZGxpbmcsIGFuZCB3aGF0IGFyZSB0aGUgY29udHJvbCBmbG93IGltcGxpY2F0aW9ucz8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIE1hcGxlIFRyZWUgcHJpbWl0aXZlcyBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIGluIGl0cyB1c2FnZSB0aGF0IHN0YW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXRfcmV0dXJuX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL21hcGxlX3RyZWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvbWFwbGVfdHJlZS5jPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgbXRfZnJlZV9idWxrKHNpemVfdCBzaXplLCB2b2lkIF9fcmN1ICoqbm9kZXMpXG4tLVxubGliL21hcGxlX3RyZWUuYy0xNDYtXG5saWIvbWFwbGVfdHJlZS5jOjE0NzpzdGF0aWMgdm9pZCBtdF9yZXR1cm5fc2hlYWYoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxubGliL21hcGxlX3RyZWUuYy0xNDgte1xuLS1cbmxpYi9tYXBsZV90cmVlLmM9MTEzMT1zdGF0aWMgaW5saW5lIHZvaWQgbWFzX2VtcHR5X25vZGVzKHN0cnVjdCBtYV9zdGF0ZSAqbWFzKVxuLS1cbmxpYi9tYXBsZV90cmVlLmMtMTEzNC1cdGlmIChtYXMtXHUwMDNlc2hlYWYpIHtcbmxpYi9tYXBsZV90cmVlLmM6MTEzNTpcdFx0bXRfcmV0dXJuX3NoZWFmKG1hcy1cdTAwM2VzaGVhZik7XG5saWIvbWFwbGVfdHJlZS5jLTExMzYtXHRcdG1hcy1cdTAwM2VzaGVhZiA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNMVUIgU2hlYWYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYG1hc19lbXB0eV9ub2Rlc2AgZXZlbnR1YWxseSBsZWFkcyB0byBhIGNhbGwgdG8gYG10X3JldHVybl9zaGVhZmAuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBpbnRlbmRlZC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIFNMVUIgc2hlYXZlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgaGF2ZSBhbnkgY29uZGl0aW9uYWwgY29kZS4gVGltZSB0byBkaWcgaW50byBgbW0vc2x1Yi5jYCBhbmQgc2VhcmNoIGZvciBhbnkgYENPTkZJR19gIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHJlbGF0ZWQgdG8gc2hlYXZlcy4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGluc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXy4qU0hFQUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjk3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byBgbW0vc2x1Yi5jYCDigJMgVGltZSB0byBUcmFjZSBUaGF0IGAjaWZkZWZgKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgU2x1YiBhbGxvY2F0b3IuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVoYXZpbmcgYXJvdW5kIHJldHVybmluZyBzaGVhdmVzLiBTbywgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vc2x1Yi5jYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgcmVsYXRlZCB0byB0aGUgc2hlYWYgcmV0dXJuIHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgYXJvdW5kIHRoZSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgaXMgcHJldHR5IHNwZWNpZmljIGFuZCB0YXJnZXRlZCBmb3IgdGhpcyBraW5kIG9mIGxvZ2ljLiBTbywgdGhhdOKAmXMgd2hlcmUgSSYjMzk7bGwgc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgYmUgc2Nhbm5pbmcgdGhlIGNvZGUgZm9yIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyB3aXRoaW4gb3IgbmVhciB0aGF0IGZ1bmN0aW9uOyBpdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBhbnkgY29uZGl0aW9uYWwgY29kZSB3aGljaCBpcyB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0byB1bmNvdmVyIHRoZSBkZXRhaWxzIEkgbmVlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcbi0tXG5tbS9zbHViLmMtMjA0LVxubW0vc2x1Yi5jOjIwNTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXG5tbS9zbHViLmMtMjA3LURFRklORV9TVEFUSUNfS0VZX1RSVUUoc2x1Yl9kZWJ1Z19lbmFibGVkKTtcbi0tXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XG4tLVxubW0vc2x1Yi5jLTIxMi1cbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMjE0LXN0YXRpYyBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzdHJpY3RfbnVtYSk7XG4tLVxubW0vc2x1Yi5jPTIzND1zdHJ1Y3Qgc2xhYl9vYmpfaXRlciB7XG4tLVxubW0vc2x1Yi5jLTIzNi1cdHZvaWQgKnN0YXJ0O1xubW0vc2x1Yi5jOjIzNzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMjM4LVx0dW5zaWduZWQgbG9uZyBmcmVlbGlzdF9jb3VudDtcbi0tXG5tbS9zbHViLmM9MjQ5PXZvaWQgKmZpeHVwX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxuLS1cbm1tL3NsdWIuYy0zMTItXG5tbS9zbHViLmM6MzEzOiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxubW0vc2x1Yi5jLTMxNC0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcdF9fU0xBQl9GTEFHX0JJVChfU0xBQl9DTVBYQ0hHX0RPVUJMRSlcbi0tXG5tbS9zbHViLmM9MzIzPXN0cnVjdCB0cmFjayB7XG5tbS9zbHViLmMtMzI0LVx0dW5zaWduZWQgbG9uZyBhZGRyO1x0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xubW0vc2x1Yi5jOjMyNTojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy0zMjYtXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XG4tLVxubW0vc2x1Yi5jPTMzMz1lbnVtIHRyYWNrX2l0ZW0geyBUUkFDS19BTExPQywgVFJBQ0tfRlJFRSB9O1xubW0vc2x1Yi5jLTMzNC1cbm1tL3NsdWIuYzozMzU6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcbm1tL3NsdWIuYy0zMzYtc3RhdGljIGludCBzeXNmc19zbGFiX2FkZChzdHJ1Y3Qga21lbV9jYWNoZSAqKTtcbi0tXG5tbS9zbHViLmM9MzUyPWVudW0gc3RhdF9pdGVtIHtcbi0tXG5tbS9zbHViLmMtMzgxLVxubW0vc2x1Yi5jOjM4MjojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy0zODMtc3RydWN0IGttZW1fY2FjaGVfc3RhdHMge1xuLS1cbm1tL3NsdWIuYz0zODg9c3RhdGljIGlubGluZSB2b2lkIHN0YXQoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsIGVudW0gc3RhdF9pdGVtIHNpKVxubW0vc2x1Yi5jLTM4OS17XG5tbS9zbHViLmM6MzkwOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTM5MS1cdC8qXG4tLVxubW0vc2x1Yi5jPTQwMD12b2lkIHN0YXRfYWRkKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSwgaW50IHYpXG5tbS9zbHViLmMtNDAxLXtcbm1tL3NsdWIuYzo0MDI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtNDAzLVx0cmF3X2NwdV9hZGQocy1cdTAwM2VjcHVfc3RhdHMtXHUwMDNlc3RhdFtzaV0sIHYpO1xuLS1cbm1tL3NsdWIuYz00NDQ9c3RydWN0IGttZW1fY2FjaGVfbm9kZSB7XG4tLVxubW0vc2x1Yi5jLTQ0Ny1cdHN0cnVjdCBsaXN0X2hlYWQgcGFydGlhbDtcbm1tL3NsdWIuYzo0NDg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNDQ5LVx0YXRvbWljX2xvbmdfdCBucl9zbGFicztcbi0tXG5tbS9zbHViLmM9NTE4PXN0YXRpYyBpbmxpbmUgZnJlZXB0cl90IGZyZWVsaXN0X3B0cl9lbmNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTUyMi1cbm1tL3NsdWIuYzo1MjM6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXG5tbS9zbHViLmMtNTI0LVx0ZW5jb2RlZCA9ICh1bnNpZ25lZCBsb25nKXB0ciBeIHMtXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcik7XG4tLVxubW0vc2x1Yi5jPTUzMT1zdGF0aWMgaW5saW5lIHZvaWQgKmZyZWVsaXN0X3B0cl9kZWNvZGUoY29uc3Qgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTUzNS1cbm1tL3NsdWIuYzo1MzY6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEXG5tbS9zbHViLmMtNTM3LVx0ZGVjb2RlZCA9ICh2b2lkICopKHB0ci52IF4gcy1cdTAwM2VyYW5kb20gXiBzd2FiKHB0cl9hZGRyKSk7XG4tLVxubW0vc2x1Yi5jPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZyZWVwb2ludGVyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsIHZvaWQgKmZwKVxuLS1cbm1tL3NsdWIuYy01NTgtXG5tbS9zbHViLmM6NTU5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxubW0vc2x1Yi5jLTU2MC1cdEJVR19PTihvYmplY3QgPT0gZnApOyAvKiBuYWl2ZSBkZXRlY3Rpb24gb2YgZG91YmxlIGZyZWUgb3IgY29ycnVwdGlvbiAqL1xuLS1cbm1tL3NsdWIuYz02NTE9X191cGRhdGVfZnJlZWxpc3RfZmFzdChzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGZyZWVsaXN0X2NvdW50ZXJzICpvbGQsXG4tLVxubW0vc2x1Yi5jLTY1My17XG5tbS9zbHViLmM6NjU0OiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxubW0vc2x1Yi5jLTY1NS1cdHJldHVybiB0cnlfY21weGNoZ19mcmVlbGlzdChcdTAwMjZzbGFiLVx1MDAzZWZyZWVsaXN0X2NvdW50ZXJzLFxuLS1cbm1tL3NsdWIuYz02ODk9c3RhdGljIGlubGluZSBib29sIF9fc2xhYl91cGRhdGVfZnJlZWxpc3Qoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxuLS1cbm1tL3NsdWIuYy03MDctXG5tbS9zbHViLmM6NzA4OiNpZmRlZiBTTFVCX0RFQlVHX0NNUFhDSEdcbm1tL3NsdWIuYy03MDktXHRwcl9pbmZvKFwmIzM0OyVzICVzOiBjbXB4Y2hnIGRvdWJsZSByZWRvIFwmIzM0Oywgbiwgcy1cdTAwM2VuYW1lKTtcbi0tXG5tbS9zbHViLmM9NzE1PXN0YXRpYyBpbmxpbmUgYm9vbCBzbGFiX3VwZGF0ZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTczNC1cbm1tL3NsdWIuYzo3MzU6I2lmZGVmIFNMVUJfREVCVUdfQ01QWENIR1xubW0vc2x1Yi5jLTczNi1cdHByX2luZm8oXCYjMzQ7JXMgJXM6IGNtcHhjaGcgZG91YmxlIHJlZG8gXCYjMzQ7LCBuLCBzLVx1MDAzZW5hbWUpO1xuLS1cbm1tL3NsdWIuYz03NjI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9vcmlnX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdClcbi0tXG5tbS9zbHViLmMtNzc3LVxubW0vc2x1Yi5jOjc3ODojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxubW0vc2x1Yi5jLTc3OS1cbi0tXG5tbS9zbHViLmM9OTA2PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTkxMS1cbm1tL3NsdWIuYzo5MTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTEzLVxuLS1cbm1tL3NsdWIuYz0xMDM0PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxuLS1cbm1tL3NsdWIuYy0xMDQzLVxubW0vc2x1Yi5jOjEwNDQ6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXG5tbS9zbHViLmMtMTA0NS1zdGF0aWMgbm9pbmxpbmUgZGVwb3Rfc3RhY2tfaGFuZGxlX3Qgc2V0X3RyYWNrX3ByZXBhcmUoZ2ZwX3QgZ2ZwX2ZsYWdzKVxuLS1cbm1tL3NsdWIuYz0xMDYzPXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcbi0tXG5tbS9zbHViLmMtMTA2OC1cbm1tL3NsdWIuYzoxMDY5OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTEwNzAtXHRwLVx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcbi0tXG5tbS9zbHViLmM9MTA5Nz1zdGF0aWMgdm9pZCBwcmludF90cmFjayhjb25zdCBjaGFyICpzLCBzdHJ1Y3QgdHJhY2sgKnQsIHVuc2lnbmVkIGxvbmcgcHJfdGltZSlcbi0tXG5tbS9zbHViLmMtMTEwNS1cdCAgICAgICBzLCAodm9pZCAqKXQtXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXHUwMDNld2hlbiwgdC1cdTAwM2VjcHUsIHQtXHUwMDNlcGlkKTtcbm1tL3NsdWIuYzoxMTA2OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTExMDctXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cdTAwM2VoYW5kbGUpO1xuLS1cbm1tL3NsdWIuYz0xMjk3PXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXG4tLVxubW0vc2x1Yi5jLTEzMDMtXG5tbS9zbHViLmM6MTMwNDojaWZkZWYgQ09ORklHX0tNU0FOXG5tbS9zbHViLmMtMTMwNS0jZGVmaW5lIHBhZF9jaGVja19hdHRyaWJ1dGVzIG5vaW5saW5lIF9fbm9fa21zYW5fY2hlY2tzXG4tLVxubW0vc2x1Yi5jPTIwNDY9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcbi0tXG5tbS9zbHViLmMtMjA2MS1cbm1tL3NsdWIuYzoyMDYyOiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXG5tbS9zbHViLmMtMjA2My1cbm1tL3NsdWIuYzoyMDY0OiNpZmRlZiBDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElOR19ERUJVR1xubW0vc2x1Yi5jLTIwNjUtXG4tLVxubW0vc2x1Yi5jPTIxMjc9aW50IGFsbG9jX3NsYWJfb2JqX2V4dHMoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0yMTgxLVx0bmV3X2V4dHMgPSAodW5zaWduZWQgbG9uZyl2ZWM7XG5tbS9zbHViLmM6MjE4MjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjE4My1cdG5ld19leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcbi0tXG5tbS9zbHViLmM9MjI0OT1zdGF0aWMgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtMjI2OC1cbm1tL3NsdWIuYzoyMjY5OiNpZmRlZiBDT05GSUdfTUVNQ0dcbm1tL3NsdWIuYy0yMjcwLVx0XHRvYmpfZXh0cyB8PSBNRU1DR19EQVRBX09CSkVYVFM7XG4tLVxubW0vc2x1Yi5jLTIyODUtXG5tbS9zbHViLmM6MjI4NjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjI4Ny1cdFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xuLS1cbm1tL3NsdWIuYz0yMzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0yMzIwLVxubW0vc2x1Yi5jOjIzMjE6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXG5tbS9zbHViLmMtMjMyMi1cbi0tXG5tbS9zbHViLmM9MjQyNT1hbGxvY190YWdnaW5nX3NsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqKnAsXG4tLVxubW0vc2x1Yi5jLTI0MzItXG5tbS9zbHViLmM6MjQzMzojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtMjQzNC1cbi0tXG5tbS9zbHViLmM9MjU1NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcbi0tXG5tbS9zbHViLmMtMjU2MC1cbm1tL3NsdWIuYzoyNTYxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcbm1tL3NsdWIuYy0yNTYyLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZCk7XG4tLVxubW0vc2x1Yi5jPTI1OTc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxuLS1cbm1tL3NsdWIuYy0yNjI1LVxubW0vc2x1Yi5jOjI2MjY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTI2MjctXHRpZiAoc3RpbGxfYWNjZXNzaWJsZSkge1xuLS1cbm1tL3NsdWIuYz0zMjUzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHNsYWIgKmFsbG9jX3NsYWJfcGFnZShnZnBfdCBmbGFncywgaW50IG5vZGUsXG4tLVxubW0vc2x1Yi5jLTMyODAtXG5tbS9zbHViLmM6MzI4MTojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzI4Mi0vKiBQcmUtaW5pdGlhbGl6ZSB0aGUgcmFuZG9tIHNlcXVlbmNlIGNhY2hlICovXG4tLVxubW0vc2x1Yi5jPTM1NDk9c3RhdGljIHZvaWQgKmFsbG9jX3NpbmdsZV9mcm9tX3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTM1NTUtXG5tbS9zbHViLmM6MzU1NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy0zNTU3LVx0aWYgKHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfQ09OU0lTVEVOQ1lfQ0hFQ0tTKSB7XG4tLVxubW0vc2x1Yi5jPTM1ODM9c3RhdGljIGlubGluZSB2b2lkICpuZXh0X3NsYWJfb2JqKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxuLS1cbm1tL3NsdWIuYy0zNTg1LXtcbm1tL3NsdWIuYzozNTg2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cbm1tL3NsdWIuYy0zNTg3LVx0aWYgKGl0ZXItXHUwMDNlcmFuZG9tKSB7XG4tLVxubW0vc2x1Yi5jPTM2MzM9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2xhYl9vYmpfaXRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTM2MzktXG5tbS9zbHViLmM6MzY0MDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXG5tbS9zbHViLmMtMzY0MS1cdGl0ZXItXHUwMDNlcmFuZG9tID0gKHNsYWItXHUwMDNlb2JqZWN0cyBcdTAwM2U9IDIgXHUwMDI2XHUwMDI2IHMtXHUwMDNlcmFuZG9tX3NlcSk7XG4tLVxubW0vc2x1Yi5jPTM4NjU9c3RhdGljIHZvaWQgKmdldF9mcm9tX2FueV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnBfZmxhZ3MsXG4tLVxubW0vc2x1Yi5jLTM4Njcte1xubW0vc2x1Yi5jOjM4Njg6I2lmZGVmIENPTkZJR19OVU1BXG5tbS9zbHViLmMtMzg2OS1cdHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3Q7XG4tLVxubW0vc2x1Yi5jPTQxNDY9c3RhdGljIGludCBzbHViX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUpXG4tLVxubW0vc2x1Yi5jLTQxNTgtXG5tbS9zbHViLmM6NDE1OTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MTYwLXN0YXRpYyBpbnQgY291bnRfZnJlZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmM9NDIzMD1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3VudF9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4sXG4tLVxubW0vc2x1Yi5jLTQyNDQtXG5tbS9zbHViLmM6NDI0NTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy00MjQ2LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxuLS1cbm1tL3NsdWIuYz00NTAzPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFwcGx5X3N0cmljdF9udW1hX3BvbGljeShpbnQgbm9kZSlcbm1tL3NsdWIuYy00NTA0LXtcbm1tL3NsdWIuYzo0NTA1OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTQ1MDYtXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZzdHJpY3RfbnVtYSkgXHUwMDI2XHUwMDI2XG4tLVxubW0vc2x1Yi5jPTYwOTk9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGNhbl9mcmVlX3RvX3BjcyhzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjEwOC1cbm1tL3NsdWIuYzo2MTA5OiNpZmRlZiBDT05GSUdfSEFWRV9NRU1PUllMRVNTX05PREVTXG5tbS9zbHViLmMtNjExMC1cdC8qXG4tLVxubW0vc2x1Yi5jPTYzNTY9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXG4tLVxubW0vc2x1Yi5jLTYzNzEtXG5tbS9zbHViLmM6NjM3MjojaWZkZWYgQ09ORklHX01FTUNHXG5tbS9zbHViLmMtNjM3My0vKiBEbyBub3QgaW5saW5lIHRoZSByYXJlIG1lbWNnIGNoYXJnaW5nIGZhaWxlZCBwYXRoIGludG8gdGhlIGFsbG9jYXRpb24gcGF0aCAqL1xuLS1cbm1tL3NsdWIuYz02Mzg3PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxuLS1cbm1tL3NsdWIuYy02NDAxLVxubW0vc2x1Yi5jOjY0MDI6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xubW0vc2x1Yi5jLTY0MDMtc3RhdGljIHZvaWQgc2xhYl9mcmVlX2FmdGVyX3JjdV9kZWJ1ZyhzdHJ1Y3QgcmN1X2hlYWQgKnJjdV9oZWFkKVxuLS1cbm1tL3NsdWIuYy02NDMwLVxubW0vc2x1Yi5jOjY0MzE6I2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDXG5tbS9zbHViLmMtNjQzMi12b2lkIF9fX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lkICp4LCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxubW0vc2x1Yi5jPTY0OTM9c3RhdGljIGlubGluZSBzaXplX3Qgc2xhYl9rc2l6ZShzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtNjQ5Ni1cbm1tL3NsdWIuYzo2NDk3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTY0OTgtXHQvKlxuLS1cbm1tL3NsdWIuYz02NTIyPXN0YXRpYyBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICpvYmplY3QpXG4tLVxubW0vc2x1Yi5jLTY1MzktXG5tbS9zbHViLmM6NjU0MDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy02NTQxLVx0c2tpcF9vcmlnX3NpemVfY2hlY2soc2xhYi1cdTAwM2VzbGFiX2NhY2hlLCBvYmplY3QpO1xuLS1cbm1tL3NsdWIuYz03MTQwPV9fcmVmaWxsX29iamVjdHNfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqKnAsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG1pbixcbi0tXG5tbS9zbHViLmMtNzIxMy1cbm1tL3NsdWIuYzo3MjE0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTcyMTUtc3RhdGljIHVuc2lnbmVkIGludFxuLS1cbm1tL3NsdWIuYz03NTU3PWluaXRfa21lbV9jYWNoZV9ub2RlKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4pXG4tLVxubW0vc2x1Yi5jLTc1NjEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZuLVx1MDAzZXBhcnRpYWwpO1xubW0vc2x1Yi5jOjc1NjI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzU2My1cdGF0b21pY19sb25nX3NldChcdTAwMjZuLVx1MDAzZW5yX3NsYWJzLCAwKTtcbi0tXG5tbS9zbHViLmMtNzU2OC1cbm1tL3NsdWIuYzo3NTY5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc1NzAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcbi0tXG5tbS9zbHViLmM9NzYzOD1zdGF0aWMgdm9pZCBlYXJseV9rbWVtX2NhY2hlX25vZGVfYWxsb2MoaW50IG5vZGUpXG4tLVxubW0vc2x1Yi5jLTc2NjEtXG5tbS9zbHViLmM6NzY2MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03NjYzLVx0aW5pdF9vYmplY3Qoa21lbV9jYWNoZV9ub2RlLCBuLCBTTFVCX1JFRF9BQ1RJVkUpO1xuLS1cbm1tL3NsdWIuYz03NzAwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc3MDMtXHRwY3NfZGVzdHJveShzKTtcbm1tL3NsdWIuYzo3NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTc3MDUtXHRmcmVlX3BlcmNwdShzLVx1MDAzZWNwdV9zdGF0cyk7XG4tLVxubW0vc2x1Yi5jPTc4MDA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTc4MTMtXG5tbS9zbHViLmM6NzgxNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy03ODE1LVx0Lypcbi0tXG5tbS9zbHViLmMtNzg3Ni1cbm1tL3NsdWIuYzo3ODc3OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc4NzgtXHRpZiAoZmxhZ3MgXHUwMDI2IFNMQUJfU1RPUkVfVVNFUikge1xuLS1cbm1tL3NsdWIuYy03ODkxLVx0a2FzYW5fY2FjaGVfY3JlYXRlKHMsIFx1MDAyNnNpemUsIFx1MDAyNnMtXHUwMDNlZmxhZ3MpO1xubW0vc2x1Yi5jOjc4OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtNzg5My1cdGlmIChmbGFncyBcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xuLS1cbm1tL3NsdWIuYz03OTU2PXN0YXRpYyB2b2lkIGxpc3Rfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbm1tL3NsdWIuYy03OTU3LXtcbm1tL3NsdWIuYzo3OTU4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTc5NTktXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xuLS1cbm1tL3NsdWIuYz04MDIzPWludCBfX2ttZW1fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKnMpXG4tLVxubW0vc2x1Yi5jLTgwNDktXG5tbS9zbHViLmM6ODA1MDojaWZkZWYgQ09ORklHX1BSSU5US1xubW0vc2x1Yi5jLTgwNTEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtODA2NS1cdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XG5tbS9zbHViLmM6ODA2NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04MDY3LVx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xuLS1cbm1tL3NsdWIuYy04MDc4LVx0XHRyZXR1cm47XG5tbS9zbHViLmM6ODA3OTojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04MDgwLVx0b2JqcCA9IGZpeHVwX3JlZF9sZWZ0KHMsIG9ianApO1xuLS1cbm1tL3NsdWIuYy04MDgyLVx0a3BwLVx1MDAzZWtwX3JldCA9ICh2b2lkICopdHJhY2twLVx1MDAzZWFkZHI7XG5tbS9zbHViLmM6ODA4MzojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy04MDg0LVx0e1xuLS1cbm1tL3NsdWIuYz04MTU2PWNvcmVfcGFyYW0oc2x1Yl9taW5fb2JqZWN0cywgc2x1Yl9taW5fb2JqZWN0cywgdWludCwgMCk7XG5tbS9zbHViLmMtODE1Ny1cbm1tL3NsdWIuYzo4MTU4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTgxNTktc3RhdGljIGludCBfX2luaXQgc2V0dXBfc2xhYl9zdHJpY3RfbnVtYShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuLS1cbm1tL3NsdWIuYz04MTc1PV9fY29yZV9wYXJhbV9jYihzbGFiX3N0cmljdF9udW1hLCBcdTAwMjZwYXJhbV9vcHNfc2xhYl9zdHJpY3RfbnVtYSwgTlVMTCwgMCk7XG4tLVxubW0vc2x1Yi5jLTgxNzgtXG5tbS9zbHViLmM6ODE3OTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtODE4MC0vKlxuLS1cbm1tL3NsdWIuYz04NDI0PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqIF9faW5pdCBib290c3RyYXAoc3RydWN0IGttZW1fY2FjaGUgKnN0YXRpY19jYWNoZSlcbi0tXG5tbS9zbHViLmMtODQzNy1cbm1tL3NsdWIuYzo4NDM4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTg0MzktXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2bi1cdTAwM2VmdWxsLCBzbGFiX2xpc3QpXG4tLVxubW0vc2x1Yi5jPTg1ODM9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcbi0tXG5tbS9zbHViLmMtODU4Ny1cdFdBUk5fT04oIWZsdXNod3EpO1xubW0vc2x1Yi5jOjg1ODg6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxubW0vc2x1Yi5jLTg1ODktXHRwcmFuZG9tX2luaXRfb25jZShcdTAwMjZzbGFiX3JuZF9zdGF0ZSk7XG4tLVxubW0vc2x1Yi5jPTg1OTM9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm1tL3NsdWIuYy04NjAyLVx0cy1cdTAwM2VmbGFncyA9IGttZW1fY2FjaGVfZmxhZ3MoZmxhZ3MsIHMtXHUwMDNlbmFtZSk7XG5tbS9zbHViLmM6ODYwMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcbm1tL3NsdWIuYy04NjA0LVx0cy1cdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcbi0tXG5tbS9zbHViLmMtODYwNy1cdHMtXHUwMDNlY3RvciA9IGFyZ3MtXHUwMDNlY3Rvcjtcbm1tL3NsdWIuYzo4NjA4OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcbm1tL3NsdWIuYy04NjA5LVx0cy1cdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cdTAwM2V1c2Vyb2Zmc2V0O1xuLS1cbm1tL3NsdWIuYy04NjI3LVxubW0vc2x1Yi5jOjg2Mjg6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXG5tbS9zbHViLmMtODYyOS1cdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFx1MDAyNlx1MDAyNiAhKHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfTk9fQ01QWENIRykpIHtcbi0tXG5tbS9zbHViLmMtODY0Ny1cbm1tL3NsdWIuYzo4NjQ4OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTg2NDktXHRzLVx1MDAzZXJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpbyA9IDEwMDA7XG4tLVxubW0vc2x1Yi5jLTg2NjAtXG5tbS9zbHViLmM6ODY2MTojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcbm1tL3NsdWIuYy04NjYyLVx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxuLS1cbm1tL3NsdWIuYy04NjkxLVxubW0vc2x1Yi5jOjg2OTI6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcbm1tL3NsdWIuYy04NjkzLXN0YXRpYyBpbnQgY291bnRfaW51c2Uoc3RydWN0IHNsYWIgKnNsYWIpXG4tLVxubW0vc2x1Yi5jPTg2OTg9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcbi0tXG5tbS9zbHViLmMtODcwMy1cbm1tL3NsdWIuYzo4NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTg3MDUtc3RhdGljIHZvaWQgdmFsaWRhdGVfc2xhYihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jPTg3ODY9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcbm1tL3NsdWIuYy04Nzg3LVxubW0vc2x1Yi5jOjg3ODg6I2lmZGVmIENPTkZJR19ERUJVR19GU1xubW0vc2x1Yi5jLTg3ODktLypcbi0tXG5tbS9zbHViLmM9ODg0ND1zdGF0aWMgaW50IGFkZF9sb2NhdGlvbihzdHJ1Y3QgbG9jX3RyYWNrICp0LCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtODg1NC1cbm1tL3NsdWIuYzo4ODU1OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxubW0vc2x1Yi5jLTg4NTYtXHRoYW5kbGUgPSBSRUFEX09OQ0UodHJhY2stXHUwMDNlaGFuZGxlKTtcbi0tXG5tbS9zbHViLmM9ODkzNj1zdGF0aWMgdm9pZCBwcm9jZXNzX3NsYWIoc3RydWN0IGxvY190cmFjayAqdCwgc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTg5NTQtXG5tbS9zbHViLmM6ODk1NTojaWZkZWYgU0xBQl9TVVBQT1JUU19TWVNGU1xubW0vc2x1Yi5jLTg5NTYtZW51bSBzbGFiX3N0YXRfdHlwZSB7XG4tLVxubW0vc2x1Yi5jPTg5Njg9c3RhdGljIHNzaXplX3Qgc2hvd19zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTg5OTEtXG5tbS9zbHViLmM6ODk5MjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy04OTkzLVx0aWYgKGZsYWdzIFx1MDAyNiBTT19BTEwpIHtcbi0tXG5tbS9zbHViLmMtOTAyNS1cdGxlbiAmIzQzOz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXCYjMzQ7JWx1XCYjMzQ7LCB0b3RhbCk7XG5tbS9zbHViLmM6OTAyNjojaWZkZWYgQ09ORklHX05VTUFcbm1tL3NsdWIuYy05MDI3LVx0Zm9yIChub2RlID0gMDsgbm9kZSBcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUmIzQzOyYjNDM7KSB7XG4tLVxubW0vc2x1Yi5jPTkxNzk9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xubW0vc2x1Yi5jLTkxODAtXG5tbS9zbHViLmM6OTE4MTojaWZkZWYgQ09ORklHX1pPTkVfRE1BXG5tbS9zbHViLmMtOTE4Mi1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MTg2PVNMQUJfQVRUUl9STyhjYWNoZV9kbWEpO1xuLS1cbm1tL3NsdWIuYy05MTg4LVxubW0vc2x1Yi5jOjkxODk6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxubW0vc2x1Yi5jLTkxOTAtc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MjAxPVNMQUJfQVRUUl9STyhkZXN0cm95X2J5X3JjdSk7XG5tbS9zbHViLmMtOTIwMi1cbm1tL3NsdWIuYzo5MjAzOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xubW0vc2x1Yi5jLTkyMDQtc3RhdGljIHNzaXplX3Qgc2xhYnNfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxuLS1cbm1tL3NsdWIuYz05MjcyPVNMQUJfQVRUUih2YWxpZGF0ZSk7XG4tLVxubW0vc2x1Yi5jLTkyNzUtXG5tbS9zbHViLmM6OTI3NjojaWZkZWYgQ09ORklHX0ZBSUxTTEFCXG5tbS9zbHViLmMtOTI3Ny1zdGF0aWMgc3NpemVfdCBmYWlsc2xhYl9zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXG4tLVxubW0vc2x1Yi5jPTkzMTI9U0xBQl9BVFRSKHNocmluayk7XG5tbS9zbHViLmMtOTMxMy1cbm1tL3NsdWIuYzo5MzE0OiNpZmRlZiBDT05GSUdfTlVNQVxubW0vc2x1Yi5jLTkzMTUtc3RhdGljIHNzaXplX3QgcmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTMzNj1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcbi0tXG5tbS9zbHViLmMtOTMzOC1cbm1tL3NsdWIuYzo5MzM5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xubW0vc2x1Yi5jLTkzNDAtc3RhdGljIGludCBzaG93X3N0YXQoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZiwgZW51bSBzdGF0X2l0ZW0gc2kpXG4tLVxubW0vc2x1Yi5jLTkzNTgtXG5tbS9zbHViLmM6OTM1OTojaWZkZWYgQ09ORklHX1NNUFxubW0vc2x1Yi5jLTkzNjAtXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xuLS1cbm1tL3NsdWIuYz05NDIwPVNUQVRfQVRUUihTSEVBRl9SRVRVUk5fU0xPVywgc2hlYWZfcmV0dXJuX3Nsb3cpO1xuLS1cbm1tL3NsdWIuYy05NDIyLVxubW0vc2x1Yi5jOjk0MjM6I2lmZGVmIENPTkZJR19LRkVOQ0Vcbm1tL3NsdWIuYy05NDI0LXN0YXRpYyBzc2l6ZV90IHNraXBfa2ZlbmNlX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1Zilcbi0tXG5tbS9zbHViLmM9OTQ0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqY29uc3Qgc2xhYl9hdHRyc1tdID0ge1xuLS1cbm1tL3NsdWIuYy05NDY0LVx0XHUwMDI2c2xhYnNfY3B1X3BhcnRpYWxfYXR0ci5hdHRyLFxubW0vc2x1Yi5jOjk0NjU6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXG5tbS9zbHViLmMtOTQ2Ni1cdFx1MDAyNnRvdGFsX29iamVjdHNfYXR0ci5hdHRyLFxuLS1cbm1tL3NsdWIuYy05NDc1LSNlbmRpZlxubW0vc2x1Yi5jOjk0NzY6I2lmZGVmIENPTkZJR19aT05FX0RNQVxubW0vc2x1Yi5jLTk0NzctXHRcdTAwMjZjYWNoZV9kbWFfYXR0ci5hdHRyLFxubW0vc2x1Yi5jLTk0NzgtI2VuZGlmXG5tbS9zbHViLmM6OTQ3OTojaWZkZWYgQ09ORklHX05VTUFcbm1tL3NsdWIuYy05NDgwLVx0XHUwMDI2cmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX2F0dHIuYXR0cixcbm1tL3NsdWIuYy05NDgxLSNlbmRpZlxubW0vc2x1Yi5jOjk0ODI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXG5tbS9zbHViLmMtOTQ4My1cdFx1MDAyNmFsbG9jX2Zhc3RwYXRoX2F0dHIuYXR0cixcbi0tXG5tbS9zbHViLmMtOTUwOS0jZW5kaWZcbm1tL3NsdWIuYzo5NTEwOiNpZmRlZiBDT05GSUdfRkFJTFNMQUJcbm1tL3NsdWIuYy05NTExLVx0XHUwMDI2ZmFpbHNsYWJfYXR0ci5hdHRyLFxubW0vc2x1Yi5jLTk1MTItI2VuZGlmXG5tbS9zbHViLmM6OTUxMzojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXG5tbS9zbHViLmMtOTUxNC1cdFx1MDAyNnVzZXJzaXplX2F0dHIuYXR0cixcbm1tL3NsdWIuYy05NTE1LSNlbmRpZlxubW0vc2x1Yi5jOjk1MTY6I2lmZGVmIENPTkZJR19LRkVOQ0Vcbm1tL3NsdWIuYy05NTE3LVx0XHUwMDI2c2tpcF9rZmVuY2VfYXR0ci5hdHRyLFxuLS1cbm1tL3NsdWIuYz05NzY2PXN0YXRpYyBpbnQgc2xhYl9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubW0vc2x1Yi5jLTk4MDctXG5tbS9zbHViLmM6OTgwODojaWZkZWYgQ09ORklHX1NUQUNLREVQT1Rcbm1tL3NsdWIuYy05ODA5LVx0XHR7XG4tLVxubW0vc2x1Yi5jPTk5NzE9X19pbml0Y2FsbChzbGFiX2RlYnVnZnNfaW5pdCk7XG4tLVxubW0vc2x1Yi5jLTk5NzUtICovXG5tbS9zbHViLmM6OTk3NjojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcbm1tL3NsdWIuYy05OTc3LXZvaWQgZ2V0X3NsYWJpbmZvKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYmluZm8gKnNpbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY0NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZToKCioqU2hlYXZlcyBhbmQgdGhlIFNMVUIgQWxsb2NhdG9yKioKClJpZ2h0LCBzbyBJIHdhcyBkaWdnaW5nIGludG8gdGhlIGNvZGUsIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb24gZm9yIHNoZWF2ZXMuIFRoYXQmIzM5O3MgYSBiaXQgb2RkOyB0aGV5JiMzOTtyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQ09ORklHX1NMVUJgIHNob3VsZCBiZSB0aGUga2V5LCBidXQgb2YgY291cnNlLCB0aGF0JiMzOTtzIGp1c3QgdGhlIGFsbG9jYXRvciBpdHNlbGYuIEl0JiMzOTtzIHRoZSBkZWZhdWx0LCBhbmQgcHJldHR5IG11Y2ggYWx3YXlzIGVuYWJsZWQgaW4gbW9zdCBjb25maWdzIEkmIzM5O3ZlIHNlZW4uCgpUaGVuIGl0IGhpdCBtZSAtIHdoYXQgYWJvdXQgYENPTkZJR19TTFVCX1RJTllgPyBUaGF0JiMzOTtzIHRoZSBvbmUgdGhhdCBkZWFscyB3aXRoIHNtYWxsZXIgc3lzdGVtcywgcmlnaHQ/IE1pZ2h0IHRoYXQgaGF2ZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBzaGVhdmVzLCBvciBldmVuIG9taXQgdGhlbSBlbnRpcmVseT8gSXTigJlzIGEgZ29vZCBxdWVzdGlvbiB0byBpbnZlc3RpZ2F0ZSB0aGUgZGVzaWduIGRpZmZlcmVuY2VzLgoKT2theSwgYmVzdCBiZXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYG1tL3NsdWIuY2AgYW5kIGh1bnQgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IHRpZXMgaW50byBgQ09ORklHX1NMVUJfVElOWWAuIFRoYXQgc2hvdWxkIHRlbGwgbWUgd2hldGhlciBvciBob3cgc2hlYXZlcyBhcmUgaGFuZGxlZCBpbiB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19TTFVCX1RJTlkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zbHViLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jPTE5Mz1lbnVtIHNsYWJfZmxhZ3Mge1xuLS1cbm1tL3NsdWIuYy0xOTgtXG5tbS9zbHViLmM6MTk5OiNpZm5kZWYgQ09ORklHX1NMVUJfVElOWVxubW0vc2x1Yi5jLTIwMC0jZGVmaW5lIF9fZmFzdHBhdGhfaW5saW5lIF9fYWx3YXlzX2lubGluZVxuLS1cbm1tL3NsdWIuYz0yNDk9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXG4tLVxubW0vc2x1Yi5jLTI2Ny1cbm1tL3NsdWIuYzoyNjg6I2lmbmRlZiBDT05GSUdfU0xVQl9USU5ZXG5tbS9zbHViLmMtMjY5LS8qXG4tLVxubW0vc2x1Yi5jPTM4MDA9c3RhdGljIHZvaWQgKmdldF9mcm9tX3BhcnRpYWxfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtMzgyOC1cbm1tL3NsdWIuYzozODI5Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XG5tbS9zbHViLmMtMzgzMC1cdFx0XHRvYmplY3QgPSBhbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHMsIG4sIHNsYWIsXG4tLVxubW0vc2x1Yi5jPTQ0MzA9c3RhdGljIHZvaWQgKl9fX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbm9kZSxcbi0tXG5tbS9zbHViLmMtNDQ3OC1cbm1tL3NsdWIuYzo0NDc5Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgfHwga21lbV9jYWNoZV9kZWJ1ZyhzKSkge1xubW0vc2x1Yi5jLTQ0ODAtXHRcdG9iamVjdCA9IGFsbG9jX3NpbmdsZV9mcm9tX25ld19zbGFiKHMsIHNsYWIsIGFjKTtcbi0tXG5tbS9zbHViLmM9NTYwOT1zdGF0aWMgdm9pZCBfX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXG4tLVxubW0vc2x1Yi5jLTU2MTktXG5tbS9zbHViLmM6NTYyMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcbm1tL3NsdWIuYy01NjIxLVx0XHRmcmVlX3RvX3BhcnRpYWxfbGlzdChzLCBzbGFiLCBoZWFkLCB0YWlsLCBjbnQsIGFkZHIpO1xuLS1cbm1tL3NsdWIuYz03MzExPXN0YXRpYyBib29sIF9fa21lbV9jYWNoZV9hbGxvY19idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcbi0tXG5tbS9zbHViLmMtNzMxNS1cbm1tL3NsdWIuYzo3MzE2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgfHwga21lbV9jYWNoZV9kZWJ1ZyhzKSkge1xubW0vc2x1Yi5jLTczMTctXHRcdGNvbnN0IHN0cnVjdCBzbGFiX2FsbG9jX2NvbnRleHQgYWMgPSB7XG4tLVxubW0vc2x1Yi5jPTc0NDQ9c3RhdGljIHVuc2lnbmVkIGludCBzbHViX21heF9vcmRlciA9XG5tbS9zbHViLmM6NzQ0NTpcdElTX0VOQUJMRUQoQ09ORklHX1NMVUJfVElOWSkgPyAxIDogUEFHRV9BTExPQ19DT1NUTFlfT1JERVI7XG5tbS9zbHViLmMtNzQ0Ni1zdGF0aWMgdW5zaWduZWQgaW50IHNsdWJfbWluX29iamVjdHM7XG4tLVxubW0vc2x1Yi5jPTc3NDk9c3RhdGljIHVuc2lnbmVkIGludCBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHkoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTc3NTYtXG5tbS9zbHViLmM6Nzc1NzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IHMtXHUwMDNlZmxhZ3MgXHUwMDI2IFNMQUJfREVCVUdfRkxBR1MpXG5tbS9zbHViLmMtNzc1OC1cdFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1ODcwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIGBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHlgIGlzIGdpdmluZyBtZSBhIHplcm8gcmVzdWx0IHdoZW4gYENPTkZJR19TTFVCX1RJTllgIGlzIGluIHBsYXkuIFJpZ2h0LCBzbyBzaGVhdmVzIGFyZSBlZmZlY3RpdmVseSBkaXNhYmxlZCB1bmRlciB0aGF0IGNvbmZpZ3VyYXRpb24uIE1ha2VzIHNlbnNlLiBCdXQgd2UgZG9uJiMzOTt0ICpuZWVkKiB0aGF0IHRpbnkgU0xVQiBzZXR1cDsgd2UmIzM5O3JlIGFpbWluZyBmb3IgYSBzdGFuZGFyZCBTTFVCIGNvbmZpZ3VyYXRpb24uIFdlIHNob3VsZCBtYWtlIHN1cmUgYENPTkZJR19TTFVCX1RJTllgIGlzICpub3QqIGVuYWJsZWQuIEkgbmVlZCByZWd1bGFyIFNMVUIuCgpOb3csIGlzIHRoZXJlIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBmbGFnIHRoYXQgKnNwZWNpZmljYWxseSogZW5hYmxlcyBzaGVhdmVzLCBldmVuIHRob3VnaCB0aGV5IHNlZW0gdG8gYmUgdGhlIGRlZmF1bHQgdW5kZXIgU0xVQiB1bmxlc3MgYENPTkZJR19TTFVCX1RJTllgIG9yIGBTTEFCX0RFQlVHX0ZMQUdTYCBhcmUgc2V0PyBJIGRvbiYjMzk7dCB0aGluayBzbywgdGhlIG1hcGxlIHRyZWUgaXMgYWx3YXlzIHRoZXJlLgoKUmlnaHQsIHNvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgaXMgYSBjb3JlIFNMVUIgZnVuY3Rpb24gYW5kIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgaXQgd29ya3MgYW5kIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gT2theSwgaXQgY2FsbHMgYHJlZmlsbF9zaGVhZmAgd2l0aCBhIGJ1bmNoIG9mIGZsYWdzOiBgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3b3J0aCBhIHNlY29uZCBsb29rLiBUaGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGlzIGRlZmluaXRlbHkgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZXhhY3QgYmVoYXZpb3IuCgpBcmUgdGhlcmUgb3RoZXIgZW50cnkgcG9pbnRzIGludG8gdGhhdCBsb2dpYz8gTGV0JiMzOTtzIHNlZTogYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBjYWxscyBpdC4gQW5kIGBtdF9yZXR1cm5fc2hlYWZgIGNhbGxzIGl0LiBUaGVuIGBtYXNfZW1wdHlfbm9kZXNgIGNhbGxzIGBtdF9yZXR1cm5fc2hlYWZgLgoKT2theSwgbmV4dCBzdG9wOiBsZXQmIzM5O3MgZGl2ZSBpbnRvIGByZWZpbGxfc2hlYWZgIHdpdGhpbiBgbW0vc2x1Yi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVmaWxsX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NsdWIuYz0yNzkzPXJlZmlsbF9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxuLS1cbm1tL3NsdWIuYy0yNzk1LVxubW0vc2x1Yi5jOjI3OTY6c3RhdGljIGludCByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZixcbm1tL3NsdWIuYy0yNzk3LVx0XHRcdCBnZnBfdCBnZnApXG4tLVxubW0vc2x1Yi5jPTQ2MTE9X19wY3NfcmVwbGFjZV9lbXB0eV9tYWluKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2x1Yl9wZXJjcHVfc2hlYXZlcyAqcGNzLFxuLS1cbm1tL3NsdWIuYy00NjcwLVxubW0vc2x1Yi5jOjQ2NzE6XHRpZiAocmVmaWxsX3NoZWFmKHMsIGVtcHR5LCBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSkge1xubW0vc2x1Yi5jLTQ2NzItXHRcdC8qXG4tLVxubW0vc2x1Yi5jPTQ5NzE9RVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX25vZGVfbm9wcm9mKTtcbm1tL3NsdWIuYy00OTcyLVxubW0vc2x1Yi5jOjQ5NzM6c3RhdGljIGludCBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbm1tL3NsdWIuYy00OTc0LVx0XHRcdFx0ICAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmLCBnZnBfdCBnZnApXG4tLVxubW0vc2x1Yi5jLTQ5ODItXG5tbS9zbHViLmM6NDk4MzpcdHJldCA9IHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwX25vbWVtYWxsb2MpO1xubW0vc2x1Yi5jLTQ5ODQtXG4tLVxubW0vc2x1Yi5jLTQ5OTEtXHQgKi9cbm1tL3NsdWIuYzo0OTkyOlx0cmV0ID0gcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnApO1xubW0vc2x1Yi5jLTQ5OTMtXHRzaGVhZi1cdTAwM2VwZm1lbWFsbG9jID0gdHJ1ZTtcbi0tXG5tbS9zbHViLmM9NTAwNz1zdHJ1Y3Qgc2xhYl9zaGVhZiAqXG5tbS9zbHViLmM6NTAwODprbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG5tbS9zbHViLmMtNTAwOS17XG4tLVxubW0vc2x1Yi5jLTUwNzAtXHRcdGlmIChzaGVhZi1cdTAwM2VzaXplIFx1MDAzYyBzaXplIFx1MDAyNlx1MDAyNlxubW0vc2x1Yi5jOjUwNzE6XHRcdCAgICBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzLCBzaGVhZiwgZ2ZwKSkge1xubW0vc2x1Yi5jLTUwNzItXHRcdFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcbi0tXG5tbS9zbHViLmMtNTA4MS0vKlxubW0vc2x1Yi5jOjUwODI6ICogVXNlIHRoaXMgdG8gcmV0dXJuIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcbm1tL3NsdWIuYy01MDgzLSAqXG4tLVxubW0vc2x1Yi5jPTUwOTE9dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxuLS1cbm1tL3NsdWIuYy01MTI1LVx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVx1MDAzZW5yX2Z1bGwpIFx1MDAzZT0gTUFYX0ZVTExfU0hFQVZFUyB8fFxubW0vc2x1Yi5jOjUxMjY6XHQgICAgcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSkge1xubW0vc2x1Yi5jLTUxMjctXHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG4tLVxubW0vc2x1Yi5jLTUxMzYtLypcbm1tL3NsdWIuYzo1MTM3OiAqIFJlZmlsbCBhIHNoZWFmIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmIHRvIGF0IGxlYXN0XG5tbS9zbHViLmMtNTEzOC0gKiB0aGUgZ2l2ZW4gc2l6ZS5cbi0tXG5tbS9zbHViLmMtNTE0OC0gKi9cbm1tL3NsdWIuYzo1MTQ5OmludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxubW0vc2x1Yi5jLTUxNTAtXHRcdFx0ICAgIHN0cnVjdCBzbGFiX3NoZWFmICoqc2hlYWZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbi0tXG5tbS9zbHViLmMtNTE1NS1cdCAqIFRPRE86IGRvIHdlIHdhbnQgdG8gc3VwcG9ydCAqc2hlYWYgPT0gTlVMTCB0byBiZSBlcXVpdmFsZW50IG9mXG5tbS9zbHViLmM6NTE1NjpcdCAqIGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpID9cbm1tL3NsdWIuYy01MTU3LVx0ICovXG4tLVxubW0vc2x1Yi5jLTUxNjYtXHRcdGlmIChsaWtlbHkoc2hlYWYtXHUwMDNlY2FwYWNpdHkgPT0gcy1cdTAwM2VzaGVhZl9jYXBhY2l0eSkpXG5tbS9zbHViLmM6NTE2NzpcdFx0XHRyZXR1cm4gX19wcmVmaWxsX3NoZWFmX3BmbWVtYWxsb2Mocywgc2hlYWYsIGdmcCk7XG5tbS9zbHViLmMtNTE2OC1cbi0tXG5tbS9zbHViLmMtNTE4MS1cdCAqL1xubW0vc2x1Yi5jOjUxODI6XHRzaGVhZiA9IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzLCBnZnAsIHNpemUpO1xubW0vc2x1Yi5jLTUxODMtXHRpZiAoIXNoZWFmKVxuLS1cbm1tL3NsdWIuYy01MTkxLS8qXG5tbS9zbHViLmM6NTE5MjogKiBBbGxvY2F0ZSBmcm9tIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcbm1tL3NsdWIuYy01MTkzLSAqXG4tLVxubW0vc2x1Yi5jPTc3NDk9c3RhdGljIHVuc2lnbmVkIGludCBjYWxjdWxhdGVfc2hlYWZfY2FwYWNpdHkoc3RydWN0IGttZW1fY2FjaGUgKnMsXG4tLVxubW0vc2x1Yi5jLTc3ODktXHQgKiBSZXNwZWN0IGFuIGV4cGxpY2l0IHJlcXVlc3QgZm9yIGNhcGFjaXR5IHRoYXQmIzM5O3MgdHlwaWNhbGx5IG1vdGl2YXRlZCBieVxubW0vc2x1Yi5jOjc3OTA6XHQgKiBleHBlY3RlZCBtYXhpbXVtIHNpemUgb2Yga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgdG8gbm90IGVuZCB1cFxubW0vc2x1Yi5jLTc3OTEtXHQgKiB1c2luZyBsb3ctcGVyZm9ybWFuY2Ugb3ZlcnNpemUgc2hlYXZlc1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAwMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNMVUIgQWxsb2NhdG9yIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoYXQmIzM5O3MgYSB3ZWxsLXRyb2RkZW4gYXJlYS4gSSBrbm93IHRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwg4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBObyBzcGVjaWFsIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQsIGp1c3QgdGhlIHN0YW5kYXJkIFNMVUIgY29uZmlndXJhdGlvbi4gVGhvdWdoIEkmIzM5O20gcGF1c2luZyB0byBtYWtlIHN1cmUsIGl0JiMzOTtzIHRoZSAqZGVmYXVsdCosIHJpZ2h0PyBBbmQgYENPTkZJR19TTFVCYCAqaXMqIHRoZSBkZWZhdWx0LiBHb29kLiBTbywgYEVuYWJsZUNvbmZpZ3NgIGNhbiByZW1haW4gZW1wdHkuCgpGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O2xsIGxpc3QgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgYW5kIGxldCYjMzk7cyBhZGQgYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBhbmQgYGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZmAgYXMgd2VsbCwganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBgbXRfcmV0dXJuX3NoZWFmYCBjb21lcyB0byBtaW5kLCBidXQgdGhhdCYjMzk7cyBzdGF0aWMgd2l0aGluIGBsaWIvbWFwbGVfdHJlZS5jYCwgc28gaXQmIzM5O3Mgbm90IGEgZ29vZCBjYW5kaWRhdGUgaGVyZS4gQnV0IHdhaXQsIGlzIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgZXhwb3J0ZWQ/IE9yIGF0IGxlYXN0IGdsb2JhbD8gSSYjMzk7ZCBiZXR0ZXIgY2hlY2sgYG1tL3NsdWIuY2AgYWdhaW4ganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmttZW1fY2FjaGVfcmV0dXJuX3NoZWFmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vc2x1Yi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NTcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50IHJlZmxlY3RpbmcgdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBFeHBvcnQqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgcXVlc3Rpb24gaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiAqaXMgaXQgZXhwb3J0ZWQ/KiBUaGF0JiMzOTtzIHRoZSBjb3JlIGNvbmNlcm4sIHRoZSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0IGV2ZXJ5dGhpbmcgaGluZ2VzIHVwb24uIEl0JiMzOTtzIGEgcXVpY2ssIGRpcmVjdCBxdWVyeSwgYm9ybiBmcm9tIGEgbmVlZCBmb3IgY29uZmlybWF0aW9uLiBOb3csIGhvdyBkbyB3ZSBnZXQgdGhhdCBjb25maXJtYXRpb24/IFdlbGwsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0by4uLiAqbGV0JiMzOTtzIGNoZWNrLiogSXQmIzM5O3MgYSBwcmFnbWF0aWMsIGFjdGlvbi1vcmllbnRlZCBhcHByb2FjaC4gTm8gbmVlZCBmb3Igb3ZlcnRoaW5raW5nIG9yIGVsYWJvcmF0ZSBhbmFseXNpcyBhdCB0aGlzIHBvaW50OyBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBleHBvcnQgc3RhdHVzIGRpcmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3NsdWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXG4tLVxubW0vc2x1Yi5jLTUwOTAtICovXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG5tbS9zbHViLmMtNTA5Mi1cdFx0XHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcbi0tXG5tbS9zbHViLmMtNTE4NS1cbm1tL3NsdWIuYzo1MTg2Olx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcbm1tL3NsdWIuYy01MTg3LVx0KnNoZWFmcCA9IHNoZWFmO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODk3OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIFNvdXJjZSoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBpcyBiZWluZyBleHBvcnRlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZWFsaW5nIHdpdGggc2xhYiBhbGxvY2F0aW9uLiBUaGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgcmVsZXZhbnQgY29kZSBhcmUgaW4gdGhlIGBtbS9zbHViLmNgIGFuZCBgbW0vc2xhYl9jb21tb24uY2AgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHNwZWNpZmljIGZpbGVzIGFuZCBzZWUgaWYgaXQmIzM5O3MgZXhwbGljaXRseSBkZWZpbmVkIGluIGVpdGhlciBvZiB0aGVtLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc2hlYWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE2NgoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiAyMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBvbmx5IGJlIHVzZWQgaW50ZXJuYWxseSwgcGVyaGFwcyBieSB0aGUgbWFwbGUgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTm8gcHJvYmxlbSwgc3l6a2FsbGVyIGNhbiBzdGlsbCBwb3RlbnRpYWxseSByZWFjaCBpdCBpZiBpdCYjMzk7cyBwYXJ0IG9mIGFuIGFjY2Vzc2libGUgY29kZXBhdGguCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGludGVyZXN0aW5nLCBpdCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvciwgc3BlY2lmaWNhbGx5LCB0aGUgYF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk5gIGZsYWdzIGFyZSBiZWluZyBhZGRlZCB0byBgcmVmaWxsX3NoZWFmYC4gVGhpcyBjaGFuZ2UgcHJldmVudHMgZW1lcmdlbmN5IGFsbG9jYXRpb25zIGFuZCB0aG9zZSBhbm5veWluZyB3YXJuaW5ncyB3aGVuIHJldHVybmluZyBhIHNoZWFmLiBUaGF0LCBvbiBpdHMgb3duLCBtYWtlcyB0aGlzIHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpUaGVyZWZvcmUsIGhlcmUmIzM5O3MgbXkgcXVpY2sgc3VtbWFyeSBvZiB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIGFuZCBJJiMzOTttIGdvaW5nIHRvIG1ha2Ugc3VyZSB0byBmb2N1cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAsIGBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZmAsIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYC4gV2UgZG9uJiMzOTt0IG5lZWQgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgdG8gdGVzdCB0aGlzLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBTTFVCIGFsbG9jYXRvcuKAmXMgc2hlYWYgQVBJLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgdGhlIEdGUCBmbGFncyB1c2VkIHdoZW4gcmVmaWxsaW5nIGEgc2hlYWYgZHVyaW5nIGl0cyByZXR1cm4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGFuZCBoYXMgYSBkaXJlY3QgaW1wYWN0IG9uIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkLCB3aGljaCBhbHdheXMgaGFzIGludGVyZXN0aW5nIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ttZW1fY2FjaGVfcmV0dXJuX3NoZWFmJiMzNDssCiAgICAmIzM0O2ttZW1fY2FjaGVfcmVmaWxsX3NoZWFmJiMzNDssCiAgICAmIzM0O2ttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3ImIzM5O3Mgc2hlYWYgQVBJLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgdGhlIEdGUCBmbGFncyB1c2VkIHdoZW4gcmVmaWxsaW5nIGEgc2hlYWYgZHVyaW5nIGl0cyByZXR1cm4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrbWVtX2NhY2hlX3JldHVybl9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZiYjMzQ7LAogICAgJiMzNDtrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFNMVUIgYWxsb2NhdG9yJiMzOTtzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1MS40ODA0Mzg1ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDAwMTk1MzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICAgIFwia21lbV9jYWNoZV9yZWZpbGxfc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvcidzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIxOjUxLjQ4MDQ0NTM4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwNDA5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2U5MGVjOTY0MzdiYzM4MDM0NDc4Y2ExZjRjOTkwNjcxNzYwNzA5MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9zbHViLmMgYi9tbS9zbHViLmNcXG5pbmRleCA1M2I0OTc2ZDM4MzE4Zi4uMzU3Yjc1MjJjODE3MDAgMTAwNjQ0XFxuLS0tIGEvbW0vc2x1Yi5jXFxuKysrIGIvbW0vc2x1Yi5jXFxuQEAgLTUxMjMsNyArNTEyMyw3IEBAIHZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG4gXFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVxcdTAwM2Vucl9mdWxsKSBcXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XFxuLVxcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHtcXG4rXFx0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG4gXFx0XFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcXG4gXFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuIFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjE6NTIuMDExNjQ4OTIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzM0NzA3MzQzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia21lbV9jYWNoZV9yZXR1cm5fc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcmVmaWxsX3NoZWFmXCIsXG4gICAgXCJrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3IncyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlOTBlYzk2NDM3YmMzODAzNDQ3OGNhMWY0Yzk5MDY3MTc2MDcwOTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxNDoyMTo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuY1xuaW5kZXggNTNiNDk3NmQzODMxOGYuLjM1N2I3NTIyYzgxNzAwIDEwMDY0NFxuLS0tIGEvbW0vc2x1Yi5jXG4rKysgYi9tbS9zbHViLmNcbkBAIC01MTIzLDcgKzUxMjMsNyBAQCB2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXG4gXHQgKiBzaW1wbHkgZmx1c2ggYW5kIGZyZWUgaXQuXG4gXHQgKi9cbiBcdGlmICghYmFybiB8fCBkYXRhX3JhY2UoYmFybi1cdTAwM2Vucl9mdWxsKSBcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcbi1cdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCkpIHtcbitcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XG4gXHRcdHNoZWFmX2ZsdXNoX3VudXNlZChzLCBzaGVhZik7XG4gXHRcdGZyZWVfZW1wdHlfc2hlYWYocywgc2hlYWYpO1xuIFx0XHRyZXR1cm47XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Mi4wMTE2NTA3MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3MTA4NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNsdWIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gYG1tL3NsdWIuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYC4gVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgYHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHRoYXQgYXJlIHBhc3NlZCBkb3duIHRvIGByZWZpbGxfc2hlYWZgLlxuXG5NeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gZGlnIGludG8gdGhlIGNvbnRleHQuIFdoYXQncyB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzPyBXaHkgYXJlIHRoZXkgdHJ5aW5nIHRvICphdm9pZCogbWVtb3J5IGFsbG9jYXRpb24gYW5kIHdhcm5pbmdzIGF0IHRoaXMgc3RhZ2U/IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAgaXMgZGVhbGluZyB3aXRoIHJldHVybmluZyBjYWNoZWQgbWVtb3J5LCBzbyBJJ20gZ3Vlc3NpbmcgdGhpcyBhZGRpdGlvbiBpcyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBiYWNrcHJlc3N1cmUgc2NlbmFyaW8sIG9yIHBlcmhhcHMgYW4gYXR0ZW1wdCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBpbiBhIGNyaXRpY2FsIHBhdGguIEl0IGNvdWxkIGJlIHJlbGF0ZWQgdG8gYXZvaWRpbmcgZGVhZGxvY2tzIG9yIHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIHRocmFzaGluZyB1bmRlciBoZWF2eSBtZW1vcnkgcHJlc3N1cmUuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byBgbW0vc2x1Yi5jYCBhbmQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYWRkaW5nIGBfX0dGUF9OT01FTUFMTE9DYCBhbmQgYF9fR0ZQX05PV0FSTmAgaW50byBgcmVmaWxsX3NoZWFmYCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIGV4cGVjdCB0aGVyZSB0byBiZSBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCByZWNsYWltLCBOVU1BLCBvciBwb3RlbnRpYWxseSBldmVuIHNvbWUgbG9jayBoaWVyYXJjaGllcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Ni40OTg3NjE5MjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTk4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImttZW1fY2FjaGVfcmV0dXJuX3NoZWFmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NsdWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9zbHViLmM9NTAwOD1rbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCwgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5tbS9zbHViLmMtNTA5MC0gKi9cXG5tbS9zbHViLmM6NTA5MTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxubW0vc2x1Yi5jLTUwOTItXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpXFxuLS1cXG5tbS9zbHViLmM9NTE0OT1pbnQga21lbV9jYWNoZV9yZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG4tLVxcbm1tL3NsdWIuYy01MTg1LVxcbm1tL3NsdWIuYzo1MTg2OlxcdGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHMsIGdmcCwgKnNoZWFmcCk7XFxubW0vc2x1Yi5jLTUxODctXFx0KnNoZWFmcCA9IHNoZWFmO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMTo1Ni42Mzg5NjgzMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjQxMDI0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAqKlxuXG5BbHJpZ2h0LCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5Ki4gTGV0J3MgZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgaGVyZTsgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbj8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIGl0cyByb2xlLiBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZg4oCmIGl0IGRlYWxzIHdpdGggdGhlIHJldHVybiBvZiBvYmplY3RzIHRvIGEgc2xhYiBjYWNoZSwgc3BlY2lmaWNhbGx5IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIGEgXCJzaGVhZlwiIG9mIG9iamVjdHMsIHJpZ2h0PyBNZWFuaW5nIG11bHRpcGxlIG9iamVjdHMgYXJlIGJlaW5nIGZyZWVkIG9yIHJldHVybmVkIGF0IG9uY2UsIHBvdGVudGlhbGx5IGFzIHBhcnQgb2YgYSBiYXRjaCBvcGVyYXRpb24gb3IgcGVyaGFwcyBkdWUgdG8gTlVNQSBjb25zaWRlcmF0aW9ucy4gSXQgY291bGQgYmUgc29tZSBzdWJ0bGUgb3B0aW1pemF0aW9uIG9yIG1heWJlIGEgYnVnIGZpeCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2guIE15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaXMga2V5IHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjaGFuZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MDAuNjYzMDczMzg4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL3NsdWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MDkxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTA5MTpcXHR2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuNTA5MjpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG41MDkzOlxcdHtcXG41MDk0OlxcdFxcdHN0cnVjdCBzbHViX3BlcmNwdV9zaGVhdmVzICpwY3M7XFxuNTA5NTpcXHRcXHRzdHJ1Y3Qgbm9kZV9iYXJuICpiYXJuO1xcbjUwOTY6XFx0XFxuNTA5NzpcXHRcXHRpZiAodW5saWtlbHkoKHNoZWFmLVxcdTAwM2VjYXBhY2l0eSAhPSBzLVxcdTAwM2VzaGVhZl9jYXBhY2l0eSlcXG41MDk4OlxcdFxcdFxcdCAgICAgfHwgc2hlYWYtXFx1MDAzZXBmbWVtYWxsb2MpKSB7XFxuNTA5OTpcXHRcXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbjUxMDA6XFx0XFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuNTEwMTpcXHRcXHRcXHRyZXR1cm47XFxuNTEwMjpcXHRcXHR9XFxuNTEwMzpcXHRcXG41MTA0OlxcdFxcdGxvY2FsX2xvY2soXFx1MDAyNnMtXFx1MDAzZWNwdV9zaGVhdmVzLVxcdTAwM2Vsb2NrKTtcXG41MTA1OlxcdFxcdHBjcyA9IHRoaXNfY3B1X3B0cihzLVxcdTAwM2VjcHVfc2hlYXZlcyk7XFxuNTEwNjpcXHRcXHRiYXJuID0gZ2V0X2Jhcm4ocyk7XFxuNTEwNzpcXHRcXG41MTA4OlxcdFxcdGlmICghcGNzLVxcdTAwM2VzcGFyZSkge1xcbjUxMDk6XFx0XFx0XFx0cGNzLVxcdTAwM2VzcGFyZSA9IHNoZWFmO1xcbjUxMTA6XFx0XFx0XFx0c2hlYWYgPSBOVUxMO1xcbjUxMTE6XFx0XFx0XFx0c3RhdChzLCBTSEVBRl9SRVRVUk5fRkFTVCk7XFxuNTExMjpcXHRcXHR9XFxuNTExMzpcXHRcXG41MTE0OlxcdFxcdGxvY2FsX3VubG9jayhcXHUwMDI2cy1cXHUwMDNlY3B1X3NoZWF2ZXMtXFx1MDAzZWxvY2spO1xcbjUxMTU6XFx0XFxuNTExNjpcXHRcXHRpZiAoIXNoZWFmKVxcbjUxMTc6XFx0XFx0XFx0cmV0dXJuO1xcbjUxMTg6XFx0XFxuNTExOTpcXHRcXHRzdGF0KHMsIFNIRUFGX1JFVFVSTl9TTE9XKTtcXG41MTIwOlxcdFxcbjUxMjE6XFx0XFx0LypcXG41MTIyOlxcdFxcdCAqIElmIHRoZSBiYXJuIGhhcyB0b28gbWFueSBmdWxsIHNoZWF2ZXMgb3Igd2UgZmFpbCB0byByZWZpbGwgdGhlIHNoZWFmLFxcbjUxMjM6XFx0XFx0ICogc2ltcGx5IGZsdXNoIGFuZCBmcmVlIGl0LlxcbjUxMjQ6XFx0XFx0ICovXFxuNTEyNTpcXHRcXHRpZiAoIWJhcm4gfHwgZGF0YV9yYWNlKGJhcm4tXFx1MDAzZW5yX2Z1bGwpIFxcdTAwM2U9IE1BWF9GVUxMX1NIRUFWRVMgfHxcXG41MTI2OlxcdFxcdCAgICByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCB8IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pKSB7XFxuNTEyNzpcXHRcXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbjUxMjg6XFx0XFx0XFx0ZnJlZV9lbXB0eV9zaGVhZihzLCBzaGVhZik7XFxuNTEyOTpcXHRcXHRcXHRyZXR1cm47XFxuNTEzMDpcXHRcXHR9XFxuNTEzMTpcXHRcXG41MTMyOlxcdFxcdGJhcm5fcHV0X2Z1bGxfc2hlYWYoYmFybiwgc2hlYWYpO1xcbjUxMzM6XFx0XFx0c3RhdChzLCBCQVJOX1BVVCk7XFxuNTEzNDpcXHR9XFxuNTEzNTpcXHRcXG41MTM2OlxcdC8qXFxuNTEzNzpcXHQgKiBSZWZpbGwgYSBzaGVhZiBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiB0byBhdCBsZWFzdFxcbjUxMzg6XFx0ICogdGhlIGdpdmVuIHNpemUuXFxuNTEzOTpcXHQgKlxcbjUxNDA6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIFRoZSBzaGVhZiB3aWxsIGNvbnRhaW4gYXQgbGVhc3QgQHNpemUgb2JqZWN0cy5cXG41MTQxOlxcdCAqIFRoZSBzaGVhZiBtaWdodCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyBvbmUgaWYgbW9yZSB0aGFuXFxuNTE0MjpcXHQgKiBzaGVhZi1cXHUwMDNlY2FwYWNpdHkgb2JqZWN0cyBhcmUgcmVxdWVzdGVkLlxcbjUxNDM6XFx0ICpcXG41MTQ0OlxcdCAqIFJldHVybjogLUVOT01FTSBvbiBmYWlsdXJlLiBTb21lIG9iamVjdHMgbWlnaHQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBzaGVhZlxcbjUxNDU6XFx0ICogYnV0IHRoZSBzaGVhZiB3aWxsIG5vdCBiZSByZXBsYWNlZC5cXG41MTQ2OlxcdCAqXFxuNTE0NzpcXHQgKiBJbiBwcmFjdGljZSB3ZSBhbHdheXMgcmVmaWxsIHRvIGZ1bGwgc2hlYWYncyBjYXBhY2l0eS5cXG41MTQ4OlxcdCAqL1xcbjUxNDk6XFx0aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuNTE1MDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNsYWJfc2hlYWYgKipzaGVhZnAsIHVuc2lnbmVkIGludCBzaXplKVxcbjUxNTE6XFx0e1xcbjUxNTI6XFx0XFx0c3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmO1xcbjUxNTM6XFx0XFxuNTE1NDpcXHRcXHQvKlxcbjUxNTU6XFx0XFx0ICogVE9ETzogZG8gd2Ugd2FudCB0byBzdXBwb3J0ICpzaGVhZiA9PSBOVUxMIHRvIGJlIGVxdWl2YWxlbnQgb2ZcXG41MTU2OlxcdFxcdCAqIGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpID9cXG41MTU3OlxcdFxcdCAqL1xcbjUxNTg6XFx0XFx0aWYgKCFzaGVhZnAgfHwgISgqc2hlYWZwKSlcXG41MTU5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjUxNjA6XFx0XFxuNTE2MTpcXHRcXHRzaGVhZiA9ICpzaGVhZnA7XFxuNTE2MjpcXHRcXHRpZiAoc2hlYWYtXFx1MDAzZXNpemUgXFx1MDAzZT0gc2l6ZSlcXG41MTYzOlxcdFxcdFxcdHJldHVybiAwO1xcbjUxNjQ6XFx0XFxuNTE2NTpcXHRcXHRpZiAobGlrZWx5KHNoZWFmLVxcdTAwM2VjYXBhY2l0eSBcXHUwMDNlPSBzaXplKSkge1xcbjUxNjY6XFx0XFx0XFx0aWYgKGxpa2VseShzaGVhZi1cXHUwMDNlY2FwYWNpdHkgPT0gcy1cXHUwMDNlc2hlYWZfY2FwYWNpdHkpKVxcbjUxNjc6XFx0XFx0XFx0XFx0cmV0dXJuIF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHMsIHNoZWFmLCBnZnApO1xcbjUxNjg6XFx0XFxuNTE2OTpcXHRcXHRcXHRpZiAoIV9fa21lbV9jYWNoZV9hbGxvY19idWxrKHMsIGdmcCwgc2hlYWYtXFx1MDAzZWNhcGFjaXR5IC0gc2hlYWYtXFx1MDAzZXNpemUsXFxuNTE3MDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzaGVhZi1cXHUwMDNlb2JqZWN0c1tzaGVhZi1cXHUwMDNlc2l6ZV0pKVxcbjUxNzE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNTE3MjpcXHRcXHRcXHRzaGVhZi1cXHUwMDNlc2l6ZSA9IHNoZWFmLVxcdTAwM2VjYXBhY2l0eTtcXG41MTczOlxcdFxcbjUxNzQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuNTE3NTpcXHRcXHR9XFxuNTE3NjpcXHRcXG41MTc3OlxcdFxcdC8qXFxuNTE3ODpcXHRcXHQgKiBXZSBoYWQgYSByZWd1bGFyIHNpemVkIHNoZWFmIGFuZCBuZWVkIGFuIG92ZXJzaXplIG9uZSwgb3Igd2UgaGFkIGFuXFxuNTE3OTpcXHRcXHQgKiBvdmVyc2l6ZSBvbmUgYWxyZWFkeSBidXQgbmVlZCBhIGxhcmdlciBvbmUgbm93LlxcbjUxODA6XFx0XFx0ICogVGhpcyBzaG91bGQgYmUgYSB2ZXJ5IHJhcmUgcGF0aCBzbyBsZXQncyBub3QgY29tcGxpY2F0ZSBpdC5cXG41MTgxOlxcdFxcdCAqL1xcbjUxODI6XFx0XFx0c2hlYWYgPSBrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYocywgZ2ZwLCBzaXplKTtcXG41MTgzOlxcdFxcdGlmICghc2hlYWYpXFxuNTE4NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG41MTg1OlxcdFxcbjUxODY6XFx0XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG41MTg3OlxcdFxcdCpzaGVhZnAgPSBzaGVhZjtcXG41MTg4OlxcdFxcdHJldHVybiAwO1xcbjUxODk6XFx0fVxcbjUxOTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjAwLjY2MzQwMzY0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mjk4NTE1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU0xVQiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yIHdpdGhpbiBTTFVCLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBfX0dGUF9OT01FTUFMTE9DYCBhbmQgYF9fR0ZQX05PV0FSTmAgdG8gdGhlIGBnZnBgIGZsYWdzIHVzZWQgaW4gYHJlZmlsbF9zaGVhZmAgd2hlbiBjYWxsZWQgZnJvbSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYWx0ZXIgaG93IFNMVUIgYmVoYXZlcyBpbiBtZW1vcnktY29uc3RyYWluZWQgc2NlbmFyaW9zIOKAkyBpdOKAmXMgcHJldmVudGluZyBhbGxvY2F0aW9ucyBmcm9tIGVtZXJnZW5jeSByZXNlcnZlcyBhbmQgc3VwcHJlc3NpbmcgdGhvc2UgYW5ub3lpbmcgYWxsb2NhdGlvbiB3YXJuaW5ncy4gRGVmaW5pdGVseSB3b3J0aCBhIGZ1enppbmcgY2FtcGFpZ24gdG8gc2VlIGlmIGFueSBuZXcgaXNzdWVzIHN1cmZhY2UuXG5cbkJ1dCBob2xkIG9uLCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQgYWJvdXQgZnV6emluZyB0aGlzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgcmVhY2hhYmlsaXR5LiBJIGJlbGlldmUgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBwYXJ0IG9mIHRoZSBuZXdlciBTTFVCIHNoZWFmIEFQSS4gVGhhdCBNYXBsZSBUcmVlIGNvZGUgdXNlcyBpdCwgb3IgcG9zc2libHkgc29tZXRoaW5nIGVsc2UuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHRoaXMgcGF0aCBpcyBhY3R1YWxseSB0YWtlbiBhbmQgaXNuJ3Qgc29tZSBkZWFkIGNvZGUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgZ3JlcCBhbmQgY29uZmlybSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjowNS40OTMyNTg5NjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTQ2NjEzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9zbGFiLmg9OTE2PWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTE4LVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjkxOTp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtOTIwLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2xhYl9zaGVhZiAqc2hlYWYpO1xcbi0tXFxubGliL21hcGxlX3RyZWUuYz0xNDc9c3RhdGljIHZvaWQgbXRfcmV0dXJuX3NoZWFmKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG5saWIvbWFwbGVfdHJlZS5jLTE0OC17XFxubGliL21hcGxlX3RyZWUuYzoxNDk6XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYobWFwbGVfbm9kZV9jYWNoZSwgR0ZQX05PV0FJVCwgc2hlYWYpO1xcbmxpYi9tYXBsZV90cmVlLmMtMTUwLX1cXG4tLVxcbm1tL3NsdWIuYz01MDA4PWttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbm1tL3NsdWIuYy01MDkwLSAqL1xcbm1tL3NsdWIuYzo1MDkxOnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG5tbS9zbHViLmMtNTA5Mi1cXHRcXHRcXHQgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG4tLVxcbm1tL3NsdWIuYz01MTQ5PWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxubW0vc2x1Yi5jLTUxODUtXFxubW0vc2x1Yi5jOjUxODY6XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG5tbS9zbHViLmMtNTE4Ny1cXHQqc2hlYWZwID0gc2hlYWY7XFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaD0xOTI9a21lbV9jYWNoZV9hbGxvY19mcm9tX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmg6MTk1OnZvaWQga21lbV9jYWNoZV9yZXR1cm5fc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcCxcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0xOTYtXFx0XFx0c3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2hhcmVkL2xpbnV4LmM9MjgzPWludCBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0yOTUtXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYzoyOTY6XFx0XFx0a21lbV9jYWNoZV9yZXR1cm5fc2hlYWYocywgZ2ZwLCAqc2hlYWZwKTtcXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTI5Ny1cXHRcXHQqc2hlYWZwID0gc2hlYWY7XFxuLS1cXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jLTMwNy1cXG50b29scy90ZXN0aW5nL3NoYXJlZC9saW51eC5jOjMwODp2b2lkIGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxudG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXguYy0zMDktXFx0XFx0IHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MDcuNzE4NzMxNDMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk4NDM3NTc3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgVXNhZ2Ugb2YgYG10X3JldHVybl9zaGVhZmAqKlxuXG5BbHJpZ2h0LCBzbyBgbXRfcmV0dXJuX3NoZWFmYOKApiBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IG9uZSBpbiB0aGUgYGxpYi9tYXBsZV90cmVlLmNgIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCBwaW5wb2ludCBpdHMgY29udGV4dC4gTGV0J3MgZGl2ZSBiYWNrIGludG8gYGxpYi9tYXBsZV90cmVlLmNgIGFuZCB0cmFjZSBob3cgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGVtcGxveWVkLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3Mgd2hlcmUgYG10X3JldHVybl9zaGVhZmAgY29tZXMgaW50byBwbGF5LiBXaGF0IGFyZSB0aGUga2V5IGludGVyYWN0aW9ucywgdGhlIGRhdGEgaXQncyBoYW5kbGluZywgYW5kIHdoYXQgYXJlIHRoZSBjb250cm9sIGZsb3cgaW1wbGljYXRpb25zPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBNYXBsZSBUcmVlIHByaW1pdGl2ZXMgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBpbiBpdHMgdXNhZ2UgdGhhdCBzdGFuZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjoyNy41NjI0OTI5MjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1NDUxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdF9yZXR1cm5fc2hlYWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL21hcGxlX3RyZWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvbWFwbGVfdHJlZS5jPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgbXRfZnJlZV9idWxrKHNpemVfdCBzaXplLCB2b2lkIF9fcmN1ICoqbm9kZXMpXFxuLS1cXG5saWIvbWFwbGVfdHJlZS5jLTE0Ni1cXG5saWIvbWFwbGVfdHJlZS5jOjE0NzpzdGF0aWMgdm9pZCBtdF9yZXR1cm5fc2hlYWYoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbmxpYi9tYXBsZV90cmVlLmMtMTQ4LXtcXG4tLVxcbmxpYi9tYXBsZV90cmVlLmM9MTEzMT1zdGF0aWMgaW5saW5lIHZvaWQgbWFzX2VtcHR5X25vZGVzKHN0cnVjdCBtYV9zdGF0ZSAqbWFzKVxcbi0tXFxubGliL21hcGxlX3RyZWUuYy0xMTM0LVxcdGlmIChtYXMtXFx1MDAzZXNoZWFmKSB7XFxubGliL21hcGxlX3RyZWUuYzoxMTM1OlxcdFxcdG10X3JldHVybl9zaGVhZihtYXMtXFx1MDAzZXNoZWFmKTtcXG5saWIvbWFwbGVfdHJlZS5jLTExMzYtXFx0XFx0bWFzLVxcdTAwM2VzaGVhZiA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjI3LjcyMjM1NTI5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODgyNjgxNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU0xVQiBTaGVhZiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYG1hc19lbXB0eV9ub2Rlc2AgZXZlbnR1YWxseSBsZWFkcyB0byBhIGNhbGwgdG8gYG10X3JldHVybl9zaGVhZmAuIEdvb2QsIHRoYXQncyB3aGF0IEkgZXhwZWN0ZWQgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGZ1bmN0aW9uIGlzIGJlaGF2aW5nIGFzIGludGVuZGVkLiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgd2hldGhlciB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgU0xVQiBzaGVhdmVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB3ZSBoYXZlIGFueSBjb25kaXRpb25hbCBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBtbS9zbHViLmNgIGFuZCBzZWFyY2ggZm9yIGFueSBgQ09ORklHX2AgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgcmVsYXRlZCB0byBzaGVhdmVzLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjMyLjYwNTA0MDM3NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3Mjk1MTQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfLipTSEVBRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjMyLjkyMjM1NTg4NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzczOTc0ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYG1tL3NsdWIuY2Ag4oCTIFRpbWUgdG8gVHJhY2UgVGhhdCBgI2lmZGVmYCoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgU2x1YiBhbGxvY2F0b3IuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaGF2aW5nIGFyb3VuZCByZXR1cm5pbmcgc2hlYXZlcy4gU28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgemVybyBpbiBvbiBgbW0vc2x1Yi5jYC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgcmVsYXRlZCB0byB0aGUgc2hlYWYgcmV0dXJuIHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgYXJvdW5kIHRoZSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgaXMgcHJldHR5IHNwZWNpZmljIGFuZCB0YXJnZXRlZCBmb3IgdGhpcyBraW5kIG9mIGxvZ2ljLiBTbywgdGhhdOKAmXMgd2hlcmUgSSdsbCBzdGFydCBsb29raW5nLiBJJ2xsIGJlIHNjYW5uaW5nIHRoZSBjb2RlIGZvciBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgd2l0aGluIG9yIG5lYXIgdGhhdCBmdW5jdGlvbjsgaXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBhbnkgY29uZGl0aW9uYWwgY29kZSB3aGljaCBpcyB3aGF0IEknbSBpbnRlcmVzdGVkIGluIHRvIHVuY292ZXIgdGhlIGRldGFpbHMgSSBuZWVkLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjk3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6MzYuMjk2MzM0NDA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk2NzU0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTE5Mz1lbnVtIHNsYWJfZmxhZ3Mge1xcbi0tXFxubW0vc2x1Yi5jLTIwNC1cXG5tbS9zbHViLmM6MjA1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYzoyMDY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHX09OXFxubW0vc2x1Yi5jLTIwNy1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKHNsdWJfZGVidWdfZW5hYmxlZCk7XFxuLS1cXG5tbS9zbHViLmM9MjA5PURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHNsdWJfZGVidWdfZW5hYmxlZCk7XFxuLS1cXG5tbS9zbHViLmMtMjEyLVxcbm1tL3NsdWIuYzoyMTM6I2lmZGVmIENPTkZJR19OVU1BXFxubW0vc2x1Yi5jLTIxNC1zdGF0aWMgREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc3RyaWN0X251bWEpO1xcbi0tXFxubW0vc2x1Yi5jPTIzND1zdHJ1Y3Qgc2xhYl9vYmpfaXRlciB7XFxuLS1cXG5tbS9zbHViLmMtMjM2LVxcdHZvaWQgKnN0YXJ0O1xcbm1tL3NsdWIuYzoyMzc6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0yMzgtXFx0dW5zaWduZWQgbG9uZyBmcmVlbGlzdF9jb3VudDtcXG4tLVxcbm1tL3NsdWIuYz0yNDk9dm9pZCAqZml4dXBfcmVkX2xlZnQoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKnApXFxuLS1cXG5tbS9zbHViLmMtMzEyLVxcbm1tL3NsdWIuYzozMTM6I2lmZGVmIHN5c3RlbV9oYXNfZnJlZWxpc3RfYWJhXFxubW0vc2x1Yi5jLTMxNC0jZGVmaW5lIF9fQ01QWENIR19ET1VCTEVcXHRfX1NMQUJfRkxBR19CSVQoX1NMQUJfQ01QWENIR19ET1VCTEUpXFxuLS1cXG5tbS9zbHViLmM9MzIzPXN0cnVjdCB0cmFjayB7XFxubW0vc2x1Yi5jLTMyNC1cXHR1bnNpZ25lZCBsb25nIGFkZHI7XFx0LyogQ2FsbGVkIGZyb20gYWRkcmVzcyAqL1xcbm1tL3NsdWIuYzozMjU6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTMyNi1cXHRkZXBvdF9zdGFja19oYW5kbGVfdCBoYW5kbGU7XFxuLS1cXG5tbS9zbHViLmM9MzMzPWVudW0gdHJhY2tfaXRlbSB7IFRSQUNLX0FMTE9DLCBUUkFDS19GUkVFIH07XFxubW0vc2x1Yi5jLTMzNC1cXG5tbS9zbHViLmM6MzM1OiNpZmRlZiBTTEFCX1NVUFBPUlRTX1NZU0ZTXFxubW0vc2x1Yi5jLTMzNi1zdGF0aWMgaW50IHN5c2ZzX3NsYWJfYWRkKHN0cnVjdCBrbWVtX2NhY2hlICopO1xcbi0tXFxubW0vc2x1Yi5jPTM1Mj1lbnVtIHN0YXRfaXRlbSB7XFxuLS1cXG5tbS9zbHViLmMtMzgxLVxcbm1tL3NsdWIuYzozODI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTM4My1zdHJ1Y3Qga21lbV9jYWNoZV9zdGF0cyB7XFxuLS1cXG5tbS9zbHViLmM9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBzdGF0KGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLCBlbnVtIHN0YXRfaXRlbSBzaSlcXG5tbS9zbHViLmMtMzg5LXtcXG5tbS9zbHViLmM6MzkwOiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy0zOTEtXFx0LypcXG4tLVxcbm1tL3NsdWIuYz00MDA9dm9pZCBzdGF0X2FkZChjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZW51bSBzdGF0X2l0ZW0gc2ksIGludCB2KVxcbm1tL3NsdWIuYy00MDEte1xcbm1tL3NsdWIuYzo0MDI6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTQwMy1cXHRyYXdfY3B1X2FkZChzLVxcdTAwM2VjcHVfc3RhdHMtXFx1MDAzZXN0YXRbc2ldLCB2KTtcXG4tLVxcbm1tL3NsdWIuYz00NDQ9c3RydWN0IGttZW1fY2FjaGVfbm9kZSB7XFxuLS1cXG5tbS9zbHViLmMtNDQ3LVxcdHN0cnVjdCBsaXN0X2hlYWQgcGFydGlhbDtcXG5tbS9zbHViLmM6NDQ4OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00NDktXFx0YXRvbWljX2xvbmdfdCBucl9zbGFicztcXG4tLVxcbm1tL3NsdWIuYz01MTg9c3RhdGljIGlubGluZSBmcmVlcHRyX3QgZnJlZWxpc3RfcHRyX2VuY29kZShjb25zdCBzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy01MjItXFxubW0vc2x1Yi5jOjUyMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtNTI0LVxcdGVuY29kZWQgPSAodW5zaWduZWQgbG9uZylwdHIgXiBzLVxcdTAwM2VyYW5kb20gXiBzd2FiKHB0cl9hZGRyKTtcXG4tLVxcbm1tL3NsdWIuYz01MzE9c3RhdGljIGlubGluZSB2b2lkICpmcmVlbGlzdF9wdHJfZGVjb2RlKGNvbnN0IHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTUzNS1cXG5tbS9zbHViLmM6NTM2OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxcbm1tL3NsdWIuYy01MzctXFx0ZGVjb2RlZCA9ICh2b2lkICopKHB0ci52IF4gcy1cXHUwMDNlcmFuZG9tIF4gc3dhYihwdHJfYWRkcikpO1xcbi0tXFxubW0vc2x1Yi5jPTU1NT1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZyZWVwb2ludGVyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QsIHZvaWQgKmZwKVxcbi0tXFxubW0vc2x1Yi5jLTU1OC1cXG5tbS9zbHViLmM6NTU5OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRFxcbm1tL3NsdWIuYy01NjAtXFx0QlVHX09OKG9iamVjdCA9PSBmcCk7IC8qIG5haXZlIGRldGVjdGlvbiBvZiBkb3VibGUgZnJlZSBvciBjb3JydXB0aW9uICovXFxuLS1cXG5tbS9zbHViLmM9NjUxPV9fdXBkYXRlX2ZyZWVsaXN0X2Zhc3Qoc3RydWN0IHNsYWIgKnNsYWIsIHN0cnVjdCBmcmVlbGlzdF9jb3VudGVycyAqb2xkLFxcbi0tXFxubW0vc2x1Yi5jLTY1My17XFxubW0vc2x1Yi5jOjY1NDojaWZkZWYgc3lzdGVtX2hhc19mcmVlbGlzdF9hYmFcXG5tbS9zbHViLmMtNjU1LVxcdHJldHVybiB0cnlfY21weGNoZ19mcmVlbGlzdChcXHUwMDI2c2xhYi1cXHUwMDNlZnJlZWxpc3RfY291bnRlcnMsXFxuLS1cXG5tbS9zbHViLmM9Njg5PXN0YXRpYyBpbmxpbmUgYm9vbCBfX3NsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcXG4tLVxcbm1tL3NsdWIuYy03MDctXFxubW0vc2x1Yi5jOjcwODojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXFxubW0vc2x1Yi5jLTcwOS1cXHRwcl9pbmZvKFxcXCIlcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcXFwiLCBuLCBzLVxcdTAwM2VuYW1lKTtcXG4tLVxcbm1tL3NsdWIuYz03MTU9c3RhdGljIGlubGluZSBib29sIHNsYWJfdXBkYXRlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYixcXG4tLVxcbm1tL3NsdWIuYy03MzQtXFxubW0vc2x1Yi5jOjczNTojaWZkZWYgU0xVQl9ERUJVR19DTVBYQ0hHXFxubW0vc2x1Yi5jLTczNi1cXHRwcl9pbmZvKFxcXCIlcyAlczogY21weGNoZyBkb3VibGUgcmVkbyBcXFwiLCBuLCBzLVxcdTAwM2VuYW1lKTtcXG4tLVxcbm1tL3NsdWIuYz03NjI9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9vcmlnX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy03NzctXFxubW0vc2x1Yi5jOjc3ODojaWZkZWYgQ09ORklHX1NMQUJfT0JKX0VYVFxcbm1tL3NsdWIuYy03NzktXFxuLS1cXG5tbS9zbHViLmM9OTA2PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG9ial9leHRzX29mZnNldF9pbl9vYmplY3Qoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtOTExLVxcbm1tL3NsdWIuYzo5MTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTkxMy1cXG4tLVxcbm1tL3NsdWIuYz0xMDM0PXN0YXRpYyBzdHJ1Y3QgdHJhY2sgKmdldF90cmFjayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LFxcbi0tXFxubW0vc2x1Yi5jLTEwNDMtXFxubW0vc2x1Yi5jOjEwNDQ6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTEwNDUtc3RhdGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90IHNldF90cmFja19wcmVwYXJlKGdmcF90IGdmcF9mbGFncylcXG4tLVxcbm1tL3NsdWIuYz0xMDYzPXN0YXRpYyB2b2lkIHNldF90cmFja191cGRhdGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCxcXG4tLVxcbm1tL3NsdWIuYy0xMDY4LVxcbm1tL3NsdWIuYzoxMDY5OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy0xMDcwLVxcdHAtXFx1MDAzZWhhbmRsZSA9IGhhbmRsZTtcXG4tLVxcbm1tL3NsdWIuYz0xMDk3PXN0YXRpYyB2b2lkIHByaW50X3RyYWNrKGNvbnN0IGNoYXIgKnMsIHN0cnVjdCB0cmFjayAqdCwgdW5zaWduZWQgbG9uZyBwcl90aW1lKVxcbi0tXFxubW0vc2x1Yi5jLTExMDUtXFx0ICAgICAgIHMsICh2b2lkICopdC1cXHUwMDNlYWRkciwgcHJfdGltZSAtIHQtXFx1MDAzZXdoZW4sIHQtXFx1MDAzZWNwdSwgdC1cXHUwMDNlcGlkKTtcXG5tbS9zbHViLmM6MTEwNjojaWZkZWYgQ09ORklHX1NUQUNLREVQT1RcXG5tbS9zbHViLmMtMTEwNy1cXHRoYW5kbGUgPSBSRUFEX09OQ0UodC1cXHUwMDNlaGFuZGxlKTtcXG4tLVxcbm1tL3NsdWIuYz0xMjk3PXN0YXRpYyB2b2lkIHJlc3RvcmVfYnl0ZXMoc3RydWN0IGttZW1fY2FjaGUgKnMsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHU4IGRhdGEsXFxuLS1cXG5tbS9zbHViLmMtMTMwMy1cXG5tbS9zbHViLmM6MTMwNDojaWZkZWYgQ09ORklHX0tNU0FOXFxubW0vc2x1Yi5jLTEzMDUtI2RlZmluZSBwYWRfY2hlY2tfYXR0cmlidXRlcyBub2lubGluZSBfX25vX2ttc2FuX2NoZWNrc1xcbi0tXFxubW0vc2x1Yi5jPTIwNDY9c3RhdGljIGlubGluZSB2b2lkIGRlY19zbGFic19ub2RlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy0yMDYxLVxcbm1tL3NsdWIuYzoyMDYyOiNpZmRlZiBDT05GSUdfU0xBQl9PQkpfRVhUXFxubW0vc2x1Yi5jLTIwNjMtXFxubW0vc2x1Yi5jOjIwNjQ6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HX0RFQlVHXFxubW0vc2x1Yi5jLTIwNjUtXFxuLS1cXG5tbS9zbHViLmM9MjEyNz1pbnQgYWxsb2Nfc2xhYl9vYmpfZXh0cyhzdHJ1Y3Qgc2xhYiAqc2xhYiwgc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMjE4MS1cXHRuZXdfZXh0cyA9ICh1bnNpZ25lZCBsb25nKXZlYztcXG5tbS9zbHViLmM6MjE4MjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIxODMtXFx0bmV3X2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jPTIyNDk9c3RhdGljIHZvaWQgYWxsb2Nfc2xhYl9vYmpfZXh0c19lYXJseShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtMjI2OC1cXG5tbS9zbHViLmM6MjI2OTojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTIyNzAtXFx0XFx0b2JqX2V4dHMgfD0gTUVNQ0dfREFUQV9PQkpFWFRTO1xcbi0tXFxubW0vc2x1Yi5jLTIyODUtXFxubW0vc2x1Yi5jOjIyODY6I2lmZGVmIENPTkZJR19NRU1DR1xcbm1tL3NsdWIuYy0yMjg3LVxcdFxcdG9ial9leHRzIHw9IE1FTUNHX0RBVEFfT0JKRVhUUztcXG4tLVxcbm1tL3NsdWIuYz0yMzE0PXN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvY19zbGFiX29ial9leHRzX2Vhcmx5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTIzMjAtXFxubW0vc2x1Yi5jOjIzMjE6I2lmZGVmIENPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HXFxubW0vc2x1Yi5jLTIzMjItXFxuLS1cXG5tbS9zbHViLmM9MjQyNT1hbGxvY190YWdnaW5nX3NsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAqc2xhYiwgdm9pZCAqKnAsXFxuLS1cXG5tbS9zbHViLmMtMjQzMi1cXG5tbS9zbHViLmM6MjQzMzojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTI0MzQtXFxuLS1cXG5tbS9zbHViLmM9MjU1NT1zdGF0aWMgaW5saW5lIGJvb2wgbWVtY2dfc2xhYl9wb3N0X2NoYXJnZSh2b2lkICpwLCBnZnBfdCBmbGFncylcXG4tLVxcbm1tL3NsdWIuYy0yNTYwLVxcbm1tL3NsdWIuYzoyNTYxOiNpZmRlZiBDT05GSUdfU0xVQl9SQ1VfREVCVUdcXG5tbS9zbHViLmMtMjU2Mi1zdGF0aWMgdm9pZCBzbGFiX2ZyZWVfYWZ0ZXJfcmN1X2RlYnVnKHN0cnVjdCByY3VfaGVhZCAqcmN1X2hlYWQpO1xcbi0tXFxubW0vc2x1Yi5jPTI1OTc9Ym9vbCBzbGFiX2ZyZWVfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqeCwgYm9vbCBpbml0LFxcbi0tXFxubW0vc2x1Yi5jLTI2MjUtXFxubW0vc2x1Yi5jOjI2MjY6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy0yNjI3LVxcdGlmIChzdGlsbF9hY2Nlc3NpYmxlKSB7XFxuLS1cXG5tbS9zbHViLmM9MzI1Mz1zdGF0aWMgaW5saW5lIHN0cnVjdCBzbGFiICphbGxvY19zbGFiX3BhZ2UoZ2ZwX3QgZmxhZ3MsIGludCBub2RlLFxcbi0tXFxubW0vc2x1Yi5jLTMyODAtXFxubW0vc2x1Yi5jOjMyODE6I2lmZGVmIENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTVxcbm1tL3NsdWIuYy0zMjgyLS8qIFByZS1pbml0aWFsaXplIHRoZSByYW5kb20gc2VxdWVuY2UgY2FjaGUgKi9cXG4tLVxcbm1tL3NsdWIuYz0zNTQ5PXN0YXRpYyB2b2lkICphbGxvY19zaW5nbGVfZnJvbV9wYXJ0aWFsKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTM1NTUtXFxubW0vc2x1Yi5jOjM1NTY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTM1NTctXFx0aWYgKHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0xBQl9DT05TSVNURU5DWV9DSEVDS1MpIHtcXG4tLVxcbm1tL3NsdWIuYz0zNTgzPXN0YXRpYyBpbmxpbmUgdm9pZCAqbmV4dF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy0zNTg1LXtcXG5tbS9zbHViLmM6MzU4NjojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTM1ODctXFx0aWYgKGl0ZXItXFx1MDAzZXJhbmRvbSkge1xcbi0tXFxubW0vc2x1Yi5jPTM2MzM9c3RhdGljIGlubGluZSB2b2lkIGluaXRfc2xhYl9vYmpfaXRlcihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtMzYzOS1cXG5tbS9zbHViLmM6MzY0MDojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfUkFORE9NXFxubW0vc2x1Yi5jLTM2NDEtXFx0aXRlci1cXHUwMDNlcmFuZG9tID0gKHNsYWItXFx1MDAzZW9iamVjdHMgXFx1MDAzZT0gMiBcXHUwMDI2XFx1MDAyNiBzLVxcdTAwM2VyYW5kb21fc2VxKTtcXG4tLVxcbm1tL3NsdWIuYz0zODY1PXN0YXRpYyB2b2lkICpnZXRfZnJvbV9hbnlfcGFydGlhbChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbi0tXFxubW0vc2x1Yi5jLTM4Njcte1xcbm1tL3NsdWIuYzozODY4OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy0zODY5LVxcdHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3Q7XFxuLS1cXG5tbS9zbHViLmM9NDE0Nj1zdGF0aWMgaW50IHNsdWJfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbm1tL3NsdWIuYy00MTU4LVxcbm1tL3NsdWIuYzo0MTU5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00MTYwLXN0YXRpYyBpbnQgY291bnRfZnJlZShzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYz00MjMwPXN0YXRpYyB1bnNpZ25lZCBsb25nIGNvdW50X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGVfbm9kZSAqbixcXG4tLVxcbm1tL3NsdWIuYy00MjQ0LVxcbm1tL3NsdWIuYzo0MjQ1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy00MjQ2LSNkZWZpbmUgTUFYX1BBUlRJQUxfVE9fU0NBTiAxMDAwMFxcbi0tXFxubW0vc2x1Yi5jPTQ1MDM9c3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgYXBwbHlfc3RyaWN0X251bWFfcG9saWN5KGludCBub2RlKVxcbm1tL3NsdWIuYy00NTA0LXtcXG5tbS9zbHViLmM6NDUwNTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtNDUwNi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2c3RyaWN0X251bWEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5tbS9zbHViLmM9NjA5OT1zdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgY2FuX2ZyZWVfdG9fcGNzKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jLTYxMDgtXFxubW0vc2x1Yi5jOjYxMDk6I2lmZGVmIENPTkZJR19IQVZFX01FTU9SWUxFU1NfTk9ERVNcXG5tbS9zbHViLmMtNjExMC1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTYzNTY9dm9pZCBzbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpvYmplY3QsXFxuLS1cXG5tbS9zbHViLmMtNjM3MS1cXG5tbS9zbHViLmM6NjM3MjojaWZkZWYgQ09ORklHX01FTUNHXFxubW0vc2x1Yi5jLTYzNzMtLyogRG8gbm90IGlubGluZSB0aGUgcmFyZSBtZW1jZyBjaGFyZ2luZyBmYWlsZWQgcGF0aCBpbnRvIHRoZSBhbGxvY2F0aW9uIHBhdGggKi9cXG4tLVxcbm1tL3NsdWIuYz02Mzg3PXZvaWQgc2xhYl9mcmVlX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLCB2b2lkICpoZWFkLFxcbi0tXFxubW0vc2x1Yi5jLTY0MDEtXFxubW0vc2x1Yi5jOjY0MDI6I2lmZGVmIENPTkZJR19TTFVCX1JDVV9ERUJVR1xcbm1tL3NsdWIuYy02NDAzLXN0YXRpYyB2b2lkIHNsYWJfZnJlZV9hZnRlcl9yY3VfZGVidWcoc3RydWN0IHJjdV9oZWFkICpyY3VfaGVhZClcXG4tLVxcbm1tL3NsdWIuYy02NDMwLVxcbm1tL3NsdWIuYzo2NDMxOiNpZmRlZiBDT05GSUdfS0FTQU5fR0VORVJJQ1xcbm1tL3NsdWIuYy02NDMyLXZvaWQgX19fY2FjaGVfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKngsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbm1tL3NsdWIuYz02NDkzPXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNsYWJfa3NpemUoc3RydWN0IHNsYWIgKnNsYWIpXFxuLS1cXG5tbS9zbHViLmMtNjQ5Ni1cXG5tbS9zbHViLmM6NjQ5NzojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNjQ5OC1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTY1MjI9c3RhdGljIHNpemVfdCBfX2tzaXplKGNvbnN0IHZvaWQgKm9iamVjdClcXG4tLVxcbm1tL3NsdWIuYy02NTM5LVxcbm1tL3NsdWIuYzo2NTQwOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy02NTQxLVxcdHNraXBfb3JpZ19zaXplX2NoZWNrKHNsYWItXFx1MDAzZXNsYWJfY2FjaGUsIG9iamVjdCk7XFxuLS1cXG5tbS9zbHViLmM9NzE0MD1fX3JlZmlsbF9vYmplY3RzX25vZGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKipwLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBtaW4sXFxuLS1cXG5tbS9zbHViLmMtNzIxMy1cXG5tbS9zbHViLmM6NzIxNDojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtNzIxNS1zdGF0aWMgdW5zaWduZWQgaW50XFxuLS1cXG5tbS9zbHViLmM9NzU1Nz1pbml0X2ttZW1fY2FjaGVfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZV9ub2RlICpuKVxcbi0tXFxubW0vc2x1Yi5jLTc1NjEtXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm4tXFx1MDAzZXBhcnRpYWwpO1xcbm1tL3NsdWIuYzo3NTYyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03NTYzLVxcdGF0b21pY19sb25nX3NldChcXHUwMDI2bi1cXHUwMDNlbnJfc2xhYnMsIDApO1xcbi0tXFxubW0vc2x1Yi5jLTc1NjgtXFxubW0vc2x1Yi5jOjc1Njk6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTc1NzAtc3RhdGljIGlubGluZSBpbnQgYWxsb2Nfa21lbV9jYWNoZV9zdGF0cyhzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYz03NjM4PXN0YXRpYyB2b2lkIGVhcmx5X2ttZW1fY2FjaGVfbm9kZV9hbGxvYyhpbnQgbm9kZSlcXG4tLVxcbm1tL3NsdWIuYy03NjYxLVxcbm1tL3NsdWIuYzo3NjYyOiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy03NjYzLVxcdGluaXRfb2JqZWN0KGttZW1fY2FjaGVfbm9kZSwgbiwgU0xVQl9SRURfQUNUSVZFKTtcXG4tLVxcbm1tL3NsdWIuYz03NzAwPXZvaWQgX19rbWVtX2NhY2hlX3JlbGVhc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtNzcwMy1cXHRwY3NfZGVzdHJveShzKTtcXG5tbS9zbHViLmM6NzcwNDojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtNzcwNS1cXHRmcmVlX3BlcmNwdShzLVxcdTAwM2VjcHVfc3RhdHMpO1xcbi0tXFxubW0vc2x1Yi5jPTc4MDA9c3RhdGljIGludCBjYWxjdWxhdGVfc2l6ZXMoc3RydWN0IGttZW1fY2FjaGVfYXJncyAqYXJncywgc3RydWN0IGttZW1fY2FjaGUgKnMpXFxuLS1cXG5tbS9zbHViLmMtNzgxMy1cXG5tbS9zbHViLmM6NzgxNDojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzgxNS1cXHQvKlxcbi0tXFxubW0vc2x1Yi5jLTc4NzYtXFxubW0vc2x1Yi5jOjc4Nzc6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc4NzgtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU0xBQl9TVE9SRV9VU0VSKSB7XFxuLS1cXG5tbS9zbHViLmMtNzg5MS1cXHRrYXNhbl9jYWNoZV9jcmVhdGUocywgXFx1MDAyNnNpemUsIFxcdTAwMjZzLVxcdTAwM2VmbGFncyk7XFxubW0vc2x1Yi5jOjc4OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTc4OTMtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU0xBQl9SRURfWk9ORSkge1xcbi0tXFxubW0vc2x1Yi5jPTc5NTY9c3RhdGljIHZvaWQgbGlzdF9zbGFiX29iamVjdHMoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiKVxcbm1tL3NsdWIuYy03OTU3LXtcXG5tbS9zbHViLmM6Nzk1ODojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtNzk1OS1cXHR2b2lkICphZGRyID0gc2xhYl9hZGRyZXNzKHNsYWIpO1xcbi0tXFxubW0vc2x1Yi5jPTgwMjM9aW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcylcXG4tLVxcbm1tL3NsdWIuYy04MDQ5LVxcbm1tL3NsdWIuYzo4MDUwOiNpZmRlZiBDT05GSUdfUFJJTlRLXFxubW0vc2x1Yi5jLTgwNTEtdm9pZCBfX2ttZW1fb2JqX2luZm8oc3RydWN0IGttZW1fb2JqX2luZm8gKmtwcCwgdm9pZCAqb2JqZWN0LCBzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04MDY1LVxcdG9ianAwID0ga2FzYW5fcmVzZXRfdGFnKG9iamVjdCk7XFxubW0vc2x1Yi5jOjgwNjY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTgwNjctXFx0b2JqcCA9IHJlc3RvcmVfcmVkX2xlZnQocywgb2JqcDApO1xcbi0tXFxubW0vc2x1Yi5jLTgwNzgtXFx0XFx0cmV0dXJuO1xcbm1tL3NsdWIuYzo4MDc5OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04MDgwLVxcdG9ianAgPSBmaXh1cF9yZWRfbGVmdChzLCBvYmpwKTtcXG4tLVxcbm1tL3NsdWIuYy04MDgyLVxcdGtwcC1cXHUwMDNla3BfcmV0ID0gKHZvaWQgKil0cmFja3AtXFx1MDAzZWFkZHI7XFxubW0vc2x1Yi5jOjgwODM6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTgwODQtXFx0e1xcbi0tXFxubW0vc2x1Yi5jPTgxNTY9Y29yZV9wYXJhbShzbHViX21pbl9vYmplY3RzLCBzbHViX21pbl9vYmplY3RzLCB1aW50LCAwKTtcXG5tbS9zbHViLmMtODE1Ny1cXG5tbS9zbHViLmM6ODE1ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODE1OS1zdGF0aWMgaW50IF9faW5pdCBzZXR1cF9zbGFiX3N0cmljdF9udW1hKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5tbS9zbHViLmM9ODE3NT1fX2NvcmVfcGFyYW1fY2Ioc2xhYl9zdHJpY3RfbnVtYSwgXFx1MDAyNnBhcmFtX29wc19zbGFiX3N0cmljdF9udW1hLCBOVUxMLCAwKTtcXG4tLVxcbm1tL3NsdWIuYy04MTc4LVxcbm1tL3NsdWIuYzo4MTc5OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODE4MC0vKlxcbi0tXFxubW0vc2x1Yi5jPTg0MjQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICogX19pbml0IGJvb3RzdHJhcChzdHJ1Y3Qga21lbV9jYWNoZSAqc3RhdGljX2NhY2hlKVxcbi0tXFxubW0vc2x1Yi5jLTg0MzctXFxubW0vc2x1Yi5jOjg0Mzg6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg0MzktXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2bi1cXHUwMDNlZnVsbCwgc2xhYl9saXN0KVxcbi0tXFxubW0vc2x1Yi5jPTg1ODM9dm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0X2xhdGUodm9pZClcXG4tLVxcbm1tL3NsdWIuYy04NTg3LVxcdFdBUk5fT04oIWZsdXNod3EpO1xcbm1tL3NsdWIuYzo4NTg4OiNpZmRlZiBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET01cXG5tbS9zbHViLmMtODU4OS1cXHRwcmFuZG9tX2luaXRfb25jZShcXHUwMDI2c2xhYl9ybmRfc3RhdGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg1OTM9aW50IGRvX2ttZW1fY2FjaGVfY3JlYXRlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxubW0vc2x1Yi5jLTg2MDItXFx0cy1cXHUwMDNlZmxhZ3MgPSBrbWVtX2NhY2hlX2ZsYWdzKGZsYWdzLCBzLVxcdTAwM2VuYW1lKTtcXG5tbS9zbHViLmM6ODYwMzojaWZkZWYgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORURcXG5tbS9zbHViLmMtODYwNC1cXHRzLVxcdTAwM2VyYW5kb20gPSBnZXRfcmFuZG9tX2xvbmcoKTtcXG4tLVxcbm1tL3NsdWIuYy04NjA3LVxcdHMtXFx1MDAzZWN0b3IgPSBhcmdzLVxcdTAwM2VjdG9yO1xcbm1tL3NsdWIuYzo4NjA4OiNpZmRlZiBDT05GSUdfSEFSREVORURfVVNFUkNPUFlcXG5tbS9zbHViLmMtODYwOS1cXHRzLVxcdTAwM2V1c2Vyb2Zmc2V0ID0gYXJncy1cXHUwMDNldXNlcm9mZnNldDtcXG4tLVxcbm1tL3NsdWIuYy04NjI3LVxcbm1tL3NsdWIuYzo4NjI4OiNpZmRlZiBzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYVxcbm1tL3NsdWIuYy04NjI5LVxcdGlmIChzeXN0ZW1faGFzX2ZyZWVsaXN0X2FiYSgpIFxcdTAwMjZcXHUwMDI2ICEocy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTTEFCX05PX0NNUFhDSEcpKSB7XFxuLS1cXG5tbS9zbHViLmMtODY0Ny1cXG5tbS9zbHViLmM6ODY0ODojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtODY0OS1cXHRzLVxcdTAwM2VyZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8gPSAxMDAwO1xcbi0tXFxubW0vc2x1Yi5jLTg2NjAtXFxubW0vc2x1Yi5jOjg2NjE6I2lmZGVmIENPTkZJR19TTFVCX1NUQVRTXFxubW0vc2x1Yi5jLTg2NjItXFx0aWYgKCFhbGxvY19rbWVtX2NhY2hlX3N0YXRzKHMpKVxcbi0tXFxubW0vc2x1Yi5jLTg2OTEtXFxubW0vc2x1Yi5jOjg2OTI6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODY5My1zdGF0aWMgaW50IGNvdW50X2ludXNlKHN0cnVjdCBzbGFiICpzbGFiKVxcbi0tXFxubW0vc2x1Yi5jPTg2OTg9c3RhdGljIGludCBjb3VudF90b3RhbChzdHJ1Y3Qgc2xhYiAqc2xhYilcXG4tLVxcbm1tL3NsdWIuYy04NzAzLVxcbm1tL3NsdWIuYzo4NzA0OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy04NzA1LXN0YXRpYyB2b2lkIHZhbGlkYXRlX3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTg3ODY9RVhQT1JUX1NZTUJPTCh2YWxpZGF0ZV9zbGFiX2NhY2hlKTtcXG5tbS9zbHViLmMtODc4Ny1cXG5tbS9zbHViLmM6ODc4ODojaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxubW0vc2x1Yi5jLTg3ODktLypcXG4tLVxcbm1tL3NsdWIuYz04ODQ0PXN0YXRpYyBpbnQgYWRkX2xvY2F0aW9uKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg4NTQtXFxubW0vc2x1Yi5jOjg4NTU6I2lmZGVmIENPTkZJR19TVEFDS0RFUE9UXFxubW0vc2x1Yi5jLTg4NTYtXFx0aGFuZGxlID0gUkVBRF9PTkNFKHRyYWNrLVxcdTAwM2VoYW5kbGUpO1xcbi0tXFxubW0vc2x1Yi5jPTg5MzY9c3RhdGljIHZvaWQgcHJvY2Vzc19zbGFiKHN0cnVjdCBsb2NfdHJhY2sgKnQsIHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5NTQtXFxubW0vc2x1Yi5jOjg5NTU6I2lmZGVmIFNMQUJfU1VQUE9SVFNfU1lTRlNcXG5tbS9zbHViLmMtODk1Ni1lbnVtIHNsYWJfc3RhdF90eXBlIHtcXG4tLVxcbm1tL3NsdWIuYz04OTY4PXN0YXRpYyBzc2l6ZV90IHNob3dfc2xhYl9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTg5OTEtXFxubW0vc2x1Yi5jOjg5OTI6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTg5OTMtXFx0aWYgKGZsYWdzIFxcdTAwMjYgU09fQUxMKSB7XFxuLS1cXG5tbS9zbHViLmMtOTAyNS1cXHRsZW4gKz0gc3lzZnNfZW1pdF9hdChidWYsIGxlbiwgXFxcIiVsdVxcXCIsIHRvdGFsKTtcXG5tbS9zbHViLmM6OTAyNjojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTAyNy1cXHRmb3IgKG5vZGUgPSAwOyBub2RlIFxcdTAwM2MgbnJfbm9kZV9pZHM7IG5vZGUrKykge1xcbi0tXFxubW0vc2x1Yi5jPTkxNzk9U0xBQl9BVFRSX1JPKGh3Y2FjaGVfYWxpZ24pO1xcbm1tL3NsdWIuYy05MTgwLVxcbm1tL3NsdWIuYzo5MTgxOiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTE4Mi1zdGF0aWMgc3NpemVfdCBjYWNoZV9kbWFfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkxODY9U0xBQl9BVFRSX1JPKGNhY2hlX2RtYSk7XFxuLS1cXG5tbS9zbHViLmMtOTE4OC1cXG5tbS9zbHViLmM6OTE4OTojaWZkZWYgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZXFxubW0vc2x1Yi5jLTkxOTAtc3RhdGljIHNzaXplX3QgdXNlcnNpemVfc2hvdyhzdHJ1Y3Qga21lbV9jYWNoZSAqcywgY2hhciAqYnVmKVxcbi0tXFxubW0vc2x1Yi5jPTkyMDE9U0xBQl9BVFRSX1JPKGRlc3Ryb3lfYnlfcmN1KTtcXG5tbS9zbHViLmMtOTIwMi1cXG5tbS9zbHViLmM6OTIwMzojaWZkZWYgQ09ORklHX1NMVUJfREVCVUdcXG5tbS9zbHViLmMtOTIwNC1zdGF0aWMgc3NpemVfdCBzbGFic19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTI3Mj1TTEFCX0FUVFIodmFsaWRhdGUpO1xcbi0tXFxubW0vc2x1Yi5jLTkyNzUtXFxubW0vc2x1Yi5jOjkyNzY6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05Mjc3LXN0YXRpYyBzc2l6ZV90IGZhaWxzbGFiX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05MzEyPVNMQUJfQVRUUihzaHJpbmspO1xcbm1tL3NsdWIuYy05MzEzLVxcbm1tL3NsdWIuYzo5MzE0OiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3NsdWIuYy05MzE1LXN0YXRpYyBzc2l6ZV90IHJlbW90ZV9ub2RlX2RlZnJhZ19yYXRpb19zaG93KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYpXFxuLS1cXG5tbS9zbHViLmM9OTMzNj1TTEFCX0FUVFIocmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvKTtcXG4tLVxcbm1tL3NsdWIuYy05MzM4LVxcbm1tL3NsdWIuYzo5MzM5OiNpZmRlZiBDT05GSUdfU0xVQl9TVEFUU1xcbm1tL3NsdWIuYy05MzQwLXN0YXRpYyBpbnQgc2hvd19zdGF0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjaGFyICpidWYsIGVudW0gc3RhdF9pdGVtIHNpKVxcbi0tXFxubW0vc2x1Yi5jLTkzNTgtXFxubW0vc2x1Yi5jOjkzNTk6I2lmZGVmIENPTkZJR19TTVBcXG5tbS9zbHViLmMtOTM2MC1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbi0tXFxubW0vc2x1Yi5jPTk0MjA9U1RBVF9BVFRSKFNIRUFGX1JFVFVSTl9TTE9XLCBzaGVhZl9yZXR1cm5fc2xvdyk7XFxuLS1cXG5tbS9zbHViLmMtOTQyMi1cXG5tbS9zbHViLmM6OTQyMzojaWZkZWYgQ09ORklHX0tGRU5DRVxcbm1tL3NsdWIuYy05NDI0LXN0YXRpYyBzc2l6ZV90IHNraXBfa2ZlbmNlX3Nob3coc3RydWN0IGttZW1fY2FjaGUgKnMsIGNoYXIgKmJ1ZilcXG4tLVxcbm1tL3NsdWIuYz05NDQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICpjb25zdCBzbGFiX2F0dHJzW10gPSB7XFxuLS1cXG5tbS9zbHViLmMtOTQ2NC1cXHRcXHUwMDI2c2xhYnNfY3B1X3BhcnRpYWxfYXR0ci5hdHRyLFxcbm1tL3NsdWIuYzo5NDY1OiNpZmRlZiBDT05GSUdfU0xVQl9ERUJVR1xcbm1tL3NsdWIuYy05NDY2LVxcdFxcdTAwMjZ0b3RhbF9vYmplY3RzX2F0dHIuYXR0cixcXG4tLVxcbm1tL3NsdWIuYy05NDc1LSNlbmRpZlxcbm1tL3NsdWIuYzo5NDc2OiNpZmRlZiBDT05GSUdfWk9ORV9ETUFcXG5tbS9zbHViLmMtOTQ3Ny1cXHRcXHUwMDI2Y2FjaGVfZG1hX2F0dHIuYXR0cixcXG5tbS9zbHViLmMtOTQ3OC0jZW5kaWZcXG5tbS9zbHViLmM6OTQ3OTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS9zbHViLmMtOTQ4MC1cXHRcXHUwMDI2cmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvX2F0dHIuYXR0cixcXG5tbS9zbHViLmMtOTQ4MS0jZW5kaWZcXG5tbS9zbHViLmM6OTQ4MjojaWZkZWYgQ09ORklHX1NMVUJfU1RBVFNcXG5tbS9zbHViLmMtOTQ4My1cXHRcXHUwMDI2YWxsb2NfZmFzdHBhdGhfYXR0ci5hdHRyLFxcbi0tXFxubW0vc2x1Yi5jLTk1MDktI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTA6I2lmZGVmIENPTkZJR19GQUlMU0xBQlxcbm1tL3NsdWIuYy05NTExLVxcdFxcdTAwMjZmYWlsc2xhYl9hdHRyLmF0dHIsXFxubW0vc2x1Yi5jLTk1MTItI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTM6I2lmZGVmIENPTkZJR19IQVJERU5FRF9VU0VSQ09QWVxcbm1tL3NsdWIuYy05NTE0LVxcdFxcdTAwMjZ1c2Vyc2l6ZV9hdHRyLmF0dHIsXFxubW0vc2x1Yi5jLTk1MTUtI2VuZGlmXFxubW0vc2x1Yi5jOjk1MTY6I2lmZGVmIENPTkZJR19LRkVOQ0VcXG5tbS9zbHViLmMtOTUxNy1cXHRcXHUwMDI2c2tpcF9rZmVuY2VfYXR0ci5hdHRyLFxcbi0tXFxubW0vc2x1Yi5jPTk3NjY9c3RhdGljIGludCBzbGFiX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4tLVxcbm1tL3NsdWIuYy05ODA3LVxcbm1tL3NsdWIuYzo5ODA4OiNpZmRlZiBDT05GSUdfU1RBQ0tERVBPVFxcbm1tL3NsdWIuYy05ODA5LVxcdFxcdHtcXG4tLVxcbm1tL3NsdWIuYz05OTcxPV9faW5pdGNhbGwoc2xhYl9kZWJ1Z2ZzX2luaXQpO1xcbi0tXFxubW0vc2x1Yi5jLTk5NzUtICovXFxubW0vc2x1Yi5jOjk5NzY6I2lmZGVmIENPTkZJR19TTFVCX0RFQlVHXFxubW0vc2x1Yi5jLTk5Nzctdm9pZCBnZXRfc2xhYmluZm8oc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiaW5mbyAqc2luZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjM2LjM2NzMwOTU1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE2ODgzNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlOlxuXG4qKlNoZWF2ZXMgYW5kIHRoZSBTTFVCIEFsbG9jYXRvcioqXG5cblJpZ2h0LCBzbyBJIHdhcyBkaWdnaW5nIGludG8gdGhlIGNvZGUsIGFuZCBJJ20gbm90IHNlZWluZyBhbnkgc3BlY2lmaWMgYENPTkZJR19gIG9wdGlvbiBmb3Igc2hlYXZlcy4gVGhhdCdzIGEgYml0IG9kZDsgdGhleSdyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFNMVUIgYWxsb2NhdG9yLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgQ09ORklHX1NMVUJgIHNob3VsZCBiZSB0aGUga2V5LCBidXQgb2YgY291cnNlLCB0aGF0J3MganVzdCB0aGUgYWxsb2NhdG9yIGl0c2VsZi4gSXQncyB0aGUgZGVmYXVsdCwgYW5kIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkIGluIG1vc3QgY29uZmlncyBJJ3ZlIHNlZW4uXG5cblRoZW4gaXQgaGl0IG1lIC0gd2hhdCBhYm91dCBgQ09ORklHX1NMVUJfVElOWWA/IFRoYXQncyB0aGUgb25lIHRoYXQgZGVhbHMgd2l0aCBzbWFsbGVyIHN5c3RlbXMsIHJpZ2h0PyBNaWdodCB0aGF0IGhhdmUgYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gc2hlYXZlcywgb3IgZXZlbiBvbWl0IHRoZW0gZW50aXJlbHk/IEl04oCZcyBhIGdvb2QgcXVlc3Rpb24gdG8gaW52ZXN0aWdhdGUgdGhlIGRlc2lnbiBkaWZmZXJlbmNlcy5cblxuT2theSwgYmVzdCBiZXQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UuIEknbGwgbmVlZCB0byBjaGVjayBgbW0vc2x1Yi5jYCBhbmQgaHVudCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQgdGllcyBpbnRvIGBDT05GSUdfU0xVQl9USU5ZYC4gVGhhdCBzaG91bGQgdGVsbCBtZSB3aGV0aGVyIG9yIGhvdyBzaGVhdmVzIGFyZSBoYW5kbGVkIGluIHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gVGltZSB0byByb2xsIHVwIG15IHNsZWV2ZXMgYW5kIGdldCB0byB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDoyMjo0MC4yODQxOTY4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4OTIwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19TTFVCX1RJTllcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz0xOTM9ZW51bSBzbGFiX2ZsYWdzIHtcXG4tLVxcbm1tL3NsdWIuYy0xOTgtXFxubW0vc2x1Yi5jOjE5OTojaWZuZGVmIENPTkZJR19TTFVCX1RJTllcXG5tbS9zbHViLmMtMjAwLSNkZWZpbmUgX19mYXN0cGF0aF9pbmxpbmUgX19hbHdheXNfaW5saW5lXFxuLS1cXG5tbS9zbHViLmM9MjQ5PXZvaWQgKmZpeHVwX3JlZF9sZWZ0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpwKVxcbi0tXFxubW0vc2x1Yi5jLTI2Ny1cXG5tbS9zbHViLmM6MjY4OiNpZm5kZWYgQ09ORklHX1NMVUJfVElOWVxcbm1tL3NsdWIuYy0yNjktLypcXG4tLVxcbm1tL3NsdWIuYz0zODAwPXN0YXRpYyB2b2lkICpnZXRfZnJvbV9wYXJ0aWFsX25vZGUoc3RydWN0IGttZW1fY2FjaGUgKnMsXFxuLS1cXG5tbS9zbHViLmMtMzgyOC1cXG5tbS9zbHViLmM6MzgyOTpcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XFxubW0vc2x1Yi5jLTM4MzAtXFx0XFx0XFx0b2JqZWN0ID0gYWxsb2Nfc2luZ2xlX2Zyb21fcGFydGlhbChzLCBuLCBzbGFiLFxcbi0tXFxubW0vc2x1Yi5jPTQ0MzA9c3RhdGljIHZvaWQgKl9fX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCBpbnQgbm9kZSxcXG4tLVxcbm1tL3NsdWIuYy00NDc4LVxcbm1tL3NsdWIuYzo0NDc5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcXG5tbS9zbHViLmMtNDQ4MC1cXHRcXHRvYmplY3QgPSBhbGxvY19zaW5nbGVfZnJvbV9uZXdfc2xhYihzLCBzbGFiLCBhYyk7XFxuLS1cXG5tbS9zbHViLmM9NTYwOT1zdGF0aWMgdm9pZCBfX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0IHNsYWIgKnNsYWIsXFxuLS1cXG5tbS9zbHViLmMtNTYxOS1cXG5tbS9zbHViLmM6NTYyMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSB8fCBrbWVtX2NhY2hlX2RlYnVnKHMpKSB7XFxubW0vc2x1Yi5jLTU2MjEtXFx0XFx0ZnJlZV90b19wYXJ0aWFsX2xpc3Qocywgc2xhYiwgaGVhZCwgdGFpbCwgY250LCBhZGRyKTtcXG4tLVxcbm1tL3NsdWIuYz03MzExPXN0YXRpYyBib29sIF9fa21lbV9jYWNoZV9hbGxvY19idWxrKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBmbGFncyxcXG4tLVxcbm1tL3NsdWIuYy03MzE1LVxcbm1tL3NsdWIuYzo3MzE2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IGttZW1fY2FjaGVfZGVidWcocykpIHtcXG5tbS9zbHViLmMtNzMxNy1cXHRcXHRjb25zdCBzdHJ1Y3Qgc2xhYl9hbGxvY19jb250ZXh0IGFjID0ge1xcbi0tXFxubW0vc2x1Yi5jPTc0NDQ9c3RhdGljIHVuc2lnbmVkIGludCBzbHViX21heF9vcmRlciA9XFxubW0vc2x1Yi5jOjc0NDU6XFx0SVNfRU5BQkxFRChDT05GSUdfU0xVQl9USU5ZKSA/IDEgOiBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUjtcXG5tbS9zbHViLmMtNzQ0Ni1zdGF0aWMgdW5zaWduZWQgaW50IHNsdWJfbWluX29iamVjdHM7XFxuLS1cXG5tbS9zbHViLmM9Nzc0OT1zdGF0aWMgdW5zaWduZWQgaW50IGNhbGN1bGF0ZV9zaGVhZl9jYXBhY2l0eShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcXG4tLVxcbm1tL3NsdWIuYy03NzU2LVxcbm1tL3NsdWIuYzo3NzU3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19TTFVCX1RJTlkpIHx8IHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0xBQl9ERUJVR19GTEFHUylcXG5tbS9zbHViLmMtNzc1OC1cXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NDAuNDczMTI0Mjg4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTM1ODY1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5YCBpcyBnaXZpbmcgbWUgYSB6ZXJvIHJlc3VsdCB3aGVuIGBDT05GSUdfU0xVQl9USU5ZYCBpcyBpbiBwbGF5LiBSaWdodCwgc28gc2hlYXZlcyBhcmUgZWZmZWN0aXZlbHkgZGlzYWJsZWQgdW5kZXIgdGhhdCBjb25maWd1cmF0aW9uLiBNYWtlcyBzZW5zZS4gQnV0IHdlIGRvbid0ICpuZWVkKiB0aGF0IHRpbnkgU0xVQiBzZXR1cDsgd2UncmUgYWltaW5nIGZvciBhIHN0YW5kYXJkIFNMVUIgY29uZmlndXJhdGlvbi4gV2Ugc2hvdWxkIG1ha2Ugc3VyZSBgQ09ORklHX1NMVUJfVElOWWAgaXMgKm5vdCogZW5hYmxlZC4gSSBuZWVkIHJlZ3VsYXIgU0xVQi5cblxuTm93LCBpcyB0aGVyZSBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gZmxhZyB0aGF0ICpzcGVjaWZpY2FsbHkqIGVuYWJsZXMgc2hlYXZlcywgZXZlbiB0aG91Z2ggdGhleSBzZWVtIHRvIGJlIHRoZSBkZWZhdWx0IHVuZGVyIFNMVUIgdW5sZXNzIGBDT05GSUdfU0xVQl9USU5ZYCBvciBgU0xBQl9ERUJVR19GTEFHU2AgYXJlIHNldD8gSSBkb24ndCB0aGluayBzbywgdGhlIG1hcGxlIHRyZWUgaXMgYWx3YXlzIHRoZXJlLlxuXG5SaWdodCwgc28gYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBpcyBhIGNvcmUgU0xVQiBmdW5jdGlvbiBhbmQgSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBpdCB3b3JrcyBhbmQgd2hlcmUgaXQncyBjYWxsZWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBPa2F5LCBpdCBjYWxscyBgcmVmaWxsX3NoZWFmYCB3aXRoIGEgYnVuY2ggb2YgZmxhZ3M6IGBnZnAgfCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdvcnRoIGEgc2Vjb25kIGxvb2suIFRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgZGVmaW5pdGVseSBga21lbV9jYWNoZV9yZXR1cm5fc2hlYWZgLiBJIHNob3VsZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0cyBleGFjdCBiZWhhdmlvci5cblxuQXJlIHRoZXJlIG90aGVyIGVudHJ5IHBvaW50cyBpbnRvIHRoYXQgbG9naWM/IExldCdzIHNlZTogYGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmYCBjYWxscyBpdC4gQW5kIGBtdF9yZXR1cm5fc2hlYWZgIGNhbGxzIGl0LiBUaGVuIGBtYXNfZW1wdHlfbm9kZXNgIGNhbGxzIGBtdF9yZXR1cm5fc2hlYWZgLlxuXG5Pa2F5LCBuZXh0IHN0b3A6IGxldCdzIGRpdmUgaW50byBgcmVmaWxsX3NoZWFmYCB3aXRoaW4gYG1tL3NsdWIuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODcwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIyOjQ2LjA2NjcxMzg2OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzNTY0MjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWZpbGxfc2hlYWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vc2x1Yi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NsdWIuYz0yNzkzPXJlZmlsbF9vYmplY3RzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTI3OTUtXFxubW0vc2x1Yi5jOjI3OTY6c3RhdGljIGludCByZWZpbGxfc2hlYWYoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZixcXG5tbS9zbHViLmMtMjc5Ny1cXHRcXHRcXHQgZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vc2x1Yi5jPTQ2MTE9X19wY3NfcmVwbGFjZV9lbXB0eV9tYWluKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2x1Yl9wZXJjcHVfc2hlYXZlcyAqcGNzLFxcbi0tXFxubW0vc2x1Yi5jLTQ2NzAtXFxubW0vc2x1Yi5jOjQ2NzE6XFx0aWYgKHJlZmlsbF9zaGVhZihzLCBlbXB0eSwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG5tbS9zbHViLmMtNDY3Mi1cXHRcXHQvKlxcbi0tXFxubW0vc2x1Yi5jPTQ5NzE9RVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX25vZGVfbm9wcm9mKTtcXG5tbS9zbHViLmMtNDk3Mi1cXG5tbS9zbHViLmM6NDk3MzpzdGF0aWMgaW50IF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbm1tL3NsdWIuYy00OTc0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZiwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0vc2x1Yi5jLTQ5ODItXFxubW0vc2x1Yi5jOjQ5ODM6XFx0cmV0ID0gcmVmaWxsX3NoZWFmKHMsIHNoZWFmLCBnZnBfbm9tZW1hbGxvYyk7XFxubW0vc2x1Yi5jLTQ5ODQtXFxuLS1cXG5tbS9zbHViLmMtNDk5MS1cXHQgKi9cXG5tbS9zbHViLmM6NDk5MjpcXHRyZXQgPSByZWZpbGxfc2hlYWYocywgc2hlYWYsIGdmcCk7XFxubW0vc2x1Yi5jLTQ5OTMtXFx0c2hlYWYtXFx1MDAzZXBmbWVtYWxsb2MgPSB0cnVlO1xcbi0tXFxubW0vc2x1Yi5jPTUwMDc9c3RydWN0IHNsYWJfc2hlYWYgKlxcbm1tL3NsdWIuYzo1MDA4OmttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG5tbS9zbHViLmMtNTAwOS17XFxuLS1cXG5tbS9zbHViLmMtNTA3MC1cXHRcXHRpZiAoc2hlYWYtXFx1MDAzZXNpemUgXFx1MDAzYyBzaXplIFxcdTAwMjZcXHUwMDI2XFxubW0vc2x1Yi5jOjUwNzE6XFx0XFx0ICAgIF9fcHJlZmlsbF9zaGVhZl9wZm1lbWFsbG9jKHMsIHNoZWFmLCBnZnApKSB7XFxubW0vc2x1Yi5jLTUwNzItXFx0XFx0XFx0c2hlYWZfZmx1c2hfdW51c2VkKHMsIHNoZWFmKTtcXG4tLVxcbm1tL3NsdWIuYy01MDgxLS8qXFxubW0vc2x1Yi5jOjUwODI6ICogVXNlIHRoaXMgdG8gcmV0dXJuIGEgc2hlYWYgb2J0YWluZWQgYnkga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKClcXG5tbS9zbHViLmMtNTA4My0gKlxcbi0tXFxubW0vc2x1Yi5jPTUwOTE9dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbi0tXFxubW0vc2x1Yi5jLTUxMjUtXFx0aWYgKCFiYXJuIHx8IGRhdGFfcmFjZShiYXJuLVxcdTAwM2Vucl9mdWxsKSBcXHUwMDNlPSBNQVhfRlVMTF9TSEVBVkVTIHx8XFxubW0vc2x1Yi5jOjUxMjY6XFx0ICAgIHJlZmlsbF9zaGVhZihzLCBzaGVhZiwgZ2ZwIHwgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikpIHtcXG5tbS9zbHViLmMtNTEyNy1cXHRcXHRzaGVhZl9mbHVzaF91bnVzZWQocywgc2hlYWYpO1xcbi0tXFxubW0vc2x1Yi5jLTUxMzYtLypcXG5tbS9zbHViLmM6NTEzNzogKiBSZWZpbGwgYSBzaGVhZiBwcmV2aW91c2x5IHJldHVybmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZiB0byBhdCBsZWFzdFxcbm1tL3NsdWIuYy01MTM4LSAqIHRoZSBnaXZlbiBzaXplLlxcbi0tXFxubW0vc2x1Yi5jLTUxNDgtICovXFxubW0vc2x1Yi5jOjUxNDk6aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxubW0vc2x1Yi5jLTUxNTAtXFx0XFx0XFx0ICAgIHN0cnVjdCBzbGFiX3NoZWFmICoqc2hlYWZwLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbm1tL3NsdWIuYy01MTU1LVxcdCAqIFRPRE86IGRvIHdlIHdhbnQgdG8gc3VwcG9ydCAqc2hlYWYgPT0gTlVMTCB0byBiZSBlcXVpdmFsZW50IG9mXFxubW0vc2x1Yi5jOjUxNTY6XFx0ICoga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKCkgP1xcbm1tL3NsdWIuYy01MTU3LVxcdCAqL1xcbi0tXFxubW0vc2x1Yi5jLTUxNjYtXFx0XFx0aWYgKGxpa2VseShzaGVhZi1cXHUwMDNlY2FwYWNpdHkgPT0gcy1cXHUwMDNlc2hlYWZfY2FwYWNpdHkpKVxcbm1tL3NsdWIuYzo1MTY3OlxcdFxcdFxcdHJldHVybiBfX3ByZWZpbGxfc2hlYWZfcGZtZW1hbGxvYyhzLCBzaGVhZiwgZ2ZwKTtcXG5tbS9zbHViLmMtNTE2OC1cXG4tLVxcbm1tL3NsdWIuYy01MTgxLVxcdCAqL1xcbm1tL3NsdWIuYzo1MTgyOlxcdHNoZWFmID0ga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHMsIGdmcCwgc2l6ZSk7XFxubW0vc2x1Yi5jLTUxODMtXFx0aWYgKCFzaGVhZilcXG4tLVxcbm1tL3NsdWIuYy01MTkxLS8qXFxubW0vc2x1Yi5jOjUxOTI6ICogQWxsb2NhdGUgZnJvbSBhIHNoZWFmIG9idGFpbmVkIGJ5IGttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZigpXFxubW0vc2x1Yi5jLTUxOTMtICpcXG4tLVxcbm1tL3NsdWIuYz03NzQ5PXN0YXRpYyB1bnNpZ25lZCBpbnQgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTc3ODktXFx0ICogUmVzcGVjdCBhbiBleHBsaWNpdCByZXF1ZXN0IGZvciBjYXBhY2l0eSB0aGF0J3MgdHlwaWNhbGx5IG1vdGl2YXRlZCBieVxcbm1tL3NsdWIuYzo3NzkwOlxcdCAqIGV4cGVjdGVkIG1heGltdW0gc2l6ZSBvZiBrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWYoKSB0byBub3QgZW5kIHVwXFxubW0vc2x1Yi5jLTc3OTEtXFx0ICogdXNpbmcgbG93LXBlcmZvcm1hbmNlIG92ZXJzaXplIHNoZWF2ZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NDcuNjAyMzcxMTU0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTQ2NTU3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTTFVCIEFsbG9jYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgYXQgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgU0xVQiBhbGxvY2F0b3IuIFRoYXQncyBhIHdlbGwtdHJvZGRlbiBhcmVhLiBJIGtub3cgdGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm8gc3BlY2lhbCBDT05GSUcgb3B0aW9ucyBhcmUgbmVlZGVkLCBqdXN0IHRoZSBzdGFuZGFyZCBTTFVCIGNvbmZpZ3VyYXRpb24uIFRob3VnaCBJJ20gcGF1c2luZyB0byBtYWtlIHN1cmUsIGl0J3MgdGhlICpkZWZhdWx0KiwgcmlnaHQ/IEFuZCBgQ09ORklHX1NMVUJgICppcyogdGhlIGRlZmF1bHQuIEdvb2QuIFNvLCBgRW5hYmxlQ29uZmlnc2AgY2FuIHJlbWFpbiBlbXB0eS5cblxuRm9yIGBGb2N1c1N5bWJvbHNgLCBJJ2xsIGxpc3QgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCwgYW5kIGxldCdzIGFkZCBga21lbV9jYWNoZV9yZWZpbGxfc2hlYWZgIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYCBhcyB3ZWxsLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudC4gYG10X3JldHVybl9zaGVhZmAgY29tZXMgdG8gbWluZCwgYnV0IHRoYXQncyBzdGF0aWMgd2l0aGluIGBsaWIvbWFwbGVfdHJlZS5jYCwgc28gaXQncyBub3QgYSBnb29kIGNhbmRpZGF0ZSBoZXJlLiBCdXQgd2FpdCwgaXMgYGttZW1fY2FjaGVfcmV0dXJuX3NoZWFmYCBleHBvcnRlZD8gT3IgYXQgbGVhc3QgZ2xvYmFsPyBJJ2QgYmV0dGVyIGNoZWNrIGBtbS9zbHViLmNgIGFnYWluIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTIuMzU3MDI5NjkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc4NDY2OTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmttZW1fY2FjaGVfcmV0dXJuX3NoZWFmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NsdWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTIuNTU0ODg1Mjg4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODY0MTc0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCByZWZsZWN0aW5nIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIHRoZSBFeHBvcnQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6ICppcyBpdCBleHBvcnRlZD8qIFRoYXQncyB0aGUgY29yZSBjb25jZXJuLCB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24gdGhhdCBldmVyeXRoaW5nIGhpbmdlcyB1cG9uLiBJdCdzIGEgcXVpY2ssIGRpcmVjdCBxdWVyeSwgYm9ybiBmcm9tIGEgbmVlZCBmb3IgY29uZmlybWF0aW9uLiBOb3csIGhvdyBkbyB3ZSBnZXQgdGhhdCBjb25maXJtYXRpb24/IFdlbGwsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0by4uLiAqbGV0J3MgY2hlY2suKiBJdCdzIGEgcHJhZ21hdGljLCBhY3Rpb24tb3JpZW50ZWQgYXBwcm9hY2guIE5vIG5lZWQgZm9yIG92ZXJ0aGlua2luZyBvciBlbGFib3JhdGUgYW5hbHlzaXMgYXQgdGhpcyBwb2ludDsgbGV0J3MgdmVyaWZ5IHRoZSBleHBvcnQgc3RhdHVzIGRpcmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU1NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTUuNTQxMzA3MTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODExNzUzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9zbHViLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2x1Yi5jPTUwMDg9a21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBzaXplKVxcbi0tXFxubW0vc2x1Yi5jLTUwOTAtICovXFxubW0vc2x1Yi5jOjUwOTE6dm9pZCBrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2ZwLFxcbm1tL3NsdWIuYy01MDkyLVxcdFxcdFxcdCAgICAgc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxubW0vc2x1Yi5jPTUxNDk9aW50IGttZW1fY2FjaGVfcmVmaWxsX3NoZWFmKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnAsXFxuLS1cXG5tbS9zbHViLmMtNTE4NS1cXG5tbS9zbHViLmM6NTE4NjpcXHRrbWVtX2NhY2hlX3JldHVybl9zaGVhZihzLCBnZnAsICpzaGVhZnApO1xcbm1tL3NsdWIuYy01MTg3LVxcdCpzaGVhZnAgPSBzaGVhZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjI6NTUuNzY5NDMwNjE0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTU4MzE4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipUcmFjaW5nIHRoZSBBbGxvY2F0aW9uIFNvdXJjZSoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGJlaW5nIGV4cG9ydGVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRoYXQgaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIHNsYWIgYWxsb2NhdGlvbi4gVGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHJlbGV2YW50IGNvZGUgYXJlIGluIHRoZSBgbW0vc2x1Yi5jYCBhbmQgYG1tL3NsYWJfY29tbW9uLmNgIGZpbGVzLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHNwZWNpZmljIGZpbGVzIGFuZCBzZWUgaWYgaXQncyBleHBsaWNpdGx5IGRlZmluZWQgaW4gZWl0aGVyIG9mIHRoZW0uIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk3OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIzOjAwLjM2NTI2NjIxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxNDE4MzE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipzaGVhZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjIzOjAwLjU1NjY5NTQxMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI1NjQ2NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBmdW5jdGlvbiBpc24ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCBvbmx5IGJlIHVzZWQgaW50ZXJuYWxseSwgcGVyaGFwcyBieSB0aGUgbWFwbGUgdHJlZSBvciBzb21ldGhpbmcgc2ltaWxhci4gTm8gcHJvYmxlbSwgc3l6a2FsbGVyIGNhbiBzdGlsbCBwb3RlbnRpYWxseSByZWFjaCBpdCBpZiBpdCdzIHBhcnQgb2YgYW4gYWNjZXNzaWJsZSBjb2RlcGF0aC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZywgaXQgbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IsIHNwZWNpZmljYWxseSwgdGhlIGBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOYCBmbGFncyBhcmUgYmVpbmcgYWRkZWQgdG8gYHJlZmlsbF9zaGVhZmAuIFRoaXMgY2hhbmdlIHByZXZlbnRzIGVtZXJnZW5jeSBhbGxvY2F0aW9ucyBhbmQgdGhvc2UgYW5ub3lpbmcgd2FybmluZ3Mgd2hlbiByZXR1cm5pbmcgYSBzaGVhZi4gVGhhdCwgb24gaXRzIG93biwgbWFrZXMgdGhpcyB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5UaGVyZWZvcmUsIGhlcmUncyBteSBxdWljayBzdW1tYXJ5IG9mIHRoZSBzaXR1YXRpb24uIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLCBhbmQgSSdtIGdvaW5nIHRvIG1ha2Ugc3VyZSB0byBmb2N1cyBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGBrbWVtX2NhY2hlX3JldHVybl9zaGVhZmAsIGBrbWVtX2NhY2hlX3JlZmlsbF9zaGVhZmAsIGFuZCBga21lbV9jYWNoZV9wcmVmaWxsX3NoZWFmYC4gV2UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyB0byB0ZXN0IHRoaXMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIFNMVUIgYWxsb2NhdG9y4oCZcyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgYW5kIGhhcyBhIGRpcmVjdCBpbXBhY3Qgb24gaG93IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHdoaWNoIGFsd2F5cyBoYXMgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2NiwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MjM6MDUuNDgyMzQ0ODE1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrbWVtX2NhY2hlX3JldHVybl9zaGVhZlwiLFxuICAgIFwia21lbV9jYWNoZV9yZWZpbGxfc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcHJlZmlsbF9zaGVhZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBTTFVCIGFsbG9jYXRvcidzIHNoZWFmIEFQSSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBHRlAgZmxhZ3MgdXNlZCB3aGVuIHJlZmlsbGluZyBhIHNoZWFmIGR1cmluZyBpdHMgcmV0dXJuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia21lbV9jYWNoZV9yZXR1cm5fc2hlYWZcIixcbiAgICBcImttZW1fY2FjaGVfcmVmaWxsX3NoZWFmXCIsXG4gICAgXCJrbWVtX2NhY2hlX3ByZWZpbGxfc2hlYWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgU0xVQiBhbGxvY2F0b3IncyBzaGVhZiBBUEksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgR0ZQIGZsYWdzIHVzZWQgd2hlbiByZWZpbGxpbmcgYSBzaGVhZiBkdXJpbmcgaXRzIHJldHVybi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqpqb5[1] Phase: Succeeded StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 14:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 14:23:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2] Phase: Succeeded StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 15:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 15:41:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 14:23:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 14:23:16 +0000 UTC FinishedAt: 2026-07-21 14:23:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowqpqb5/series-workflowqpqb5-convert-artifact-3026117767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 14:23:26 +0000 UTC FinishedAt: 2026-07-21 15:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 14:23:26 +0000 UTC FinishedAt: 2026-07-21 15:07:43 +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:*63cc84ac-e475-4365-ae2c-f190656b5824,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-workflowqpqb5/series-workflowqpqb5-convert-artifact-3026117767/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": "8d0ec6ad-13db-4bfe-844f-3c745d6af2ab", "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-workflowqpqb5/series-workflowqpqb5-build-action-2085630749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 14:23:26 +0000 UTC FinishedAt: 2026-07-21 15:07:33 +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:*63cc84ac-e475-4365-ae2c-f190656b5824,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-workflowqpqb5/series-workflowqpqb5-convert-artifact-3026117767/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": "8d0ec6ad-13db-4bfe-844f-3c745d6af2ab", "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-workflowqpqb5/series-workflowqpqb5-build-action-2085630749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 15:07:43 +0000 UTC FinishedAt: 2026-07-21 15:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 15:07:43 +0000 UTC FinishedAt: 2026-07-21 15:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 15:07:43 +0000 UTC FinishedAt: 2026-07-21 15:07:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 15:07:43 +0000 UTC FinishedAt: 2026-07-21 15:07:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowqpqb5/series-workflowqpqb5-convert-artifact-1186678710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 15:07:54 +0000 UTC FinishedAt: 2026-07-21 15:40:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 15:07:54 +0000 UTC FinishedAt: 2026-07-21 15:40:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8d0ec6ad-13db-4bfe-844f-3c745d6af2ab,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-workflowqpqb5/series-workflowqpqb5-build-action-2085630749/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": false },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-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-21 15:40:31 +0000 UTC FinishedAt: 2026-07-21 15:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpqb5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kmem_cache_return_sheaf","kmem_cache_refill_sheaf","kmem_cache_prefill_sheaf"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"3fe08b9796f36ef437ab9328e7dd1e5ff2d66603","config_name":"upstream-apparmor-kasan.config","series_id":"e150d2e5-613a-430d-b6b9-4a84d116380c","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-07-21 15:40:31 +0000 UTC FinishedAt: 2026-07-21 15:40:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}