Name: series-workflowx29hf Phase: Succeeded StartedAt: 2026-07-25 09:50:57 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[0] Phase: Succeeded StartedAt: 2026-07-25 09:50:57 +0000 UTC FinishedAt: 2026-07-25 10:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 09:50:57 +0000 UTC FinishedAt: 2026-07-25 10:22:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "e308057e-2788-4a01-8f40-7935ba61e751" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vhost_scsi_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZTJjOWMzMGY4OTMxN2YzMDI5NzgwNzZkZGUzOWFlNzg5ZTgwNTYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTA6MjE6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC9zY3NpLmMgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5AQCAtMjQyNiw5ICYjNDM7MjQyNiwxMCBAQCB2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxuIFx0ZGVmYXVsdDpcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyID0gdmhvc3RfZGV2X2lvY3RsKFx1MDAyNnZzLVx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xuLVx0XHQvKiBUT0RPOiBmbHVzaCBiYWNrZW5kIGFmdGVyIGRldiBpb2N0bC4gKi9cbiBcdFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxuIFx0XHRcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0dmhvc3Rfc2NzaV9mbHVzaCh2cyk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhlMmM5YzMwZjg5MzE3ZjMwMjk3ODA3NmRkZTM5YWU3ODllODA1NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMDoyMTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jIGIvZHJpdmVycy92aG9zdC9zY3NpLmMKaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Njc2kuYwpAQCAtMjQyNiw5ICYjNDM7MjQyNiwxMCBAQCB2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLAogCWRlZmF1bHQ6CiAJCW11dGV4X2xvY2soJmFtcDt2cy0mZ3Q7ZGV2Lm11dGV4KTsKIAkJciA9IHZob3N0X2Rldl9pb2N0bCgmYW1wO3ZzLSZndDtkZXYsIGlvY3RsLCBhcmdwKTsKLQkJLyogVE9ETzogZmx1c2ggYmFja2VuZCBhZnRlciBkZXYgaW9jdGwuICovCiAJCWlmIChyID09IC1FTk9JT0NUTENNRCkKIAkJCXIgPSB2aG9zdF92cmluZ19pb2N0bCgmYW1wO3ZzLSZndDtkZXYsIGlvY3RsLCBhcmdwKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2aG9zdF9zY3NpX2ZsdXNoKHZzKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7dnMtJmd0O2Rldi5tdXRleCk7CiAJCXJldHVybiByOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmhvc3Qtc2NzaSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC9zY3NpLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgY2hhbmdlIGludHJvZHVjZXMgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoKHZzKWAgKmFmdGVyKiB0aGUgYHZob3N0X2Rldl9pb2N0bGAgY2FsbCwgYnV0IG9ubHkgaWYgdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGZ1bmN0aW9uICpkaWRuJiMzOTt0KiByZXR1cm4gYC1FTk9JT0NUTENNRGAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBpb2N0bCBjb21tYW5kIGhhbmRsaW5nIGludGVyYWN0aW9uLiBMZXQgbWUgY29uZmlybSB0aGUgZnVuY3Rpb24gY2FsbHMgYW5kIHRoZSByZWFzb25zIGZvciB0aGlzIGFkZGl0aW9uYWwgY2FsbC4gCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB2aG9zdF9zY3NpX2lvY3RsYCBhbmQgYHZob3N0X3Njc2lfZmx1c2hgIGRvIGluIG9yZGVyIHRvIGRldGVybWluZSB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGNoYW5nZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIHRoaXMgY2hhbmdlIHRvIHBvc3NpYmxlIFNDU0kgcmVsYXRlZCBjb21tYW5kcyBvciBzdGF0ZSBtYWNoaW5lcy4gVGhpcyB3aWxsIHJlcXVpcmUgY2hlY2tpbmcgaG93IHRoZSBpb2N0bCBjb21tYW5kIGlzIGhhbmRsZWQsIHRoZW4gaG93IHRoZSBmbHVzaCBpcyBpbXBsZW1lbnRlZC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1lLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSByZWFsbHkgbG9va2luZyBhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTkxOT1zdGF0aWMgaW50IHZob3N0X3Njc2lfc2V0dXBfdnFfY21kcyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgaW50IG1heF9jbWRzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzMtLypcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5NzQ6ICogQ2FsbGVkIGZyb20gdmhvc3Rfc2NzaV9pb2N0bCgpIGNvbnRleHQgdG8gd2FsayB0aGUgbGlzdCBvZiBhdmFpbGFibGVcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzUtICogdmhvc3Rfc2NzaV90cGcgd2l0aCBhbiBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVx0XHQgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDAtXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDQxOlx0LnVubG9ja2VkX2lvY3RsID0gdmhvc3Rfc2NzaV9pb2N0bCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDItXHQuY29tcGF0X2lvY3RsXHQ9IGNvbXBhdF9wdHJfaW9jdGwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIHZob3N0LXNjc2kgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byBgdmhvc3Rfc2NzaV9pb2N0bGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBhbGwgc29ydHMgb2YgY29udHJvbCBvcGVyYXRpb25zLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGBpb2N0bGAgY2hhbmdlcyB0aGVtc2VsdmVzLCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIHNlZSBob3cgdGhpcyBwYXRjaCBhZmZlY3RzIHJlbGF0ZWQgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBvdXQgYHZob3N0X3Njc2lfZmx1c2hgLiBHaXZlbiB0aGUgY29udGV4dCwgY2hhbmdlcyB0byB0aGUgY29yZSBgaW9jdGxgIG1pZ2h0IHRyaWdnZXIgY2FzY2FkaW5nIGltcGxpY2F0aW9ucyBhbmQgcmVxdWlyZSB1cGRhdGVzIHRvIGZ1bmN0aW9ucyB0aGF0IG1hbmFnZSBjbGVhbnVwLiBVbmRlcnN0YW5kaW5nIHRoZSAmIzM0O2ZsdXNoJiMzNDsgYmVoYXZpb3IgaXMgY3JpdGljYWwgZm9yIGRhdGEgY29uc2lzdGVuY3ksIGVycm9yIGhhbmRsaW5nLCBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2ZsdXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTg0ND1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2hhbmRsZV9raWNrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTMtLyogQ2FsbGVycyBtdXN0IGhvbGQgZGV2IG11dGV4ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU0OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1NS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTk4MT12aG9zdF9zY3NpX3NldF9lbmRwb2ludChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4NC1cdCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjA4NTpcdHZob3N0X3Njc2lfZmx1c2godnMpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4Ni1cdHZzLVx1MDAzZXZzX3RwZyA9IHZzX3RwZztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMTEzPXZob3N0X3Njc2lfY2xlYXJfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNzAtXHQvKiBNYWtlIHN1cmUgY21kcyBhcmUgbm90IHJ1bm5pbmcgYmVmb3JlIHRlYXJpbmcgdGhlbSBkb3duLiAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE3MTpcdHZob3N0X3Njc2lfZmx1c2godnMpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3Mi1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjA0LVx0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjA1Olx0dmhvc3Rfc2NzaV9mbHVzaCh2cyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjA2LVx0a2ZyZWUodnMtXHUwMDNldnNfdHBnKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYyPXZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzMS1cdFx0ZWxzZVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzMjpcdFx0XHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWNlbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgd2l0aGluIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBpbmRpY2F0ZXMgYW4gZXhwbGljaXQgZmx1c2hpbmcgbWVjaGFuaXNtIGJlaW5nIGV4cG9zZWQgdmlhIHRoZSBgaW9jdGxgIGludGVyZmFjZSBvbiBgL2Rldi92aG9zdC1zY3NpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCB0aHVzIHBvdGVudGlhbGx5IHVzYWJsZSBmcm9tIHVzZXJzcGFjZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGB2aG9zdF9zY3NpYC4gSSB3YW50IHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBhdmFpbGFibGUuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgKmhvdyogdGhpcyBpcyBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGZlYXR1cmVzIGFyZSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Mi1cdGhlbHBcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1MzpcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTQtXHRmb3IgdXNlIHdpdGggdmlydGlvLXNjc2kgZ3Vlc3RzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkNoZWNraW5nIHRoZSBTQ1NJIFZob3N0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFZIT1NUX1NDU0kuIEkga25vdyBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEhvcGVmdWxseSwgdGhlIG9wdGlvbnMgYXJlIGNsZWFybHkgZG9jdW1lbnRlZCBhbmQgb3JnYW5pemVkLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGFuZCBtYXliZSBzb21lIGhlbHAgdGV4dCB0byBjbGFyaWZ5IHRoZSBwdXJwb3NlIGFuZCBiZWhhdmlvciBvZiB0aGUgYFZIT1NUX1NDU0lgIGZlYXR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxuICA0MTpcdFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICA0NDpcdFx0ICBiZSBjYWxsZWQgdmhvc3RfbmV0LlxuICA0NTpcdFxuICA0NjpcdGNvbmZpZyBWSE9TVF9TQ1NJXG4gIDQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXCYjMzQ7XG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDQ5Olx0XHRzZWxlY3QgVkhPU1RcbiAgNTA6XHRcdHNlbGVjdCBTR19QT09MXG4gIDUxOlx0XHRkZWZhdWx0IG5cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXG4gIDU0Olx0XHRmb3IgdXNlIHdpdGggdmlydGlvLXNjc2kgZ3Vlc3RzXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIFZIT1NUX1ZTT0NLXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDt2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXCYjMzQ7XG4gIDU4Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDU5Olx0XHRzZWxlY3QgVkhPU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgU0NTSSBWaXJ0dWFsIEhvc3QgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGlzIHJlbGllcyBvbiBhIGNvdXBsZSBvZiBrZXkgZGVwZW5kZW5jaWVzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIFJpZ2h0LCBhbmQgY2xlYXJseSBgVEFSR0VUX0NPUkVgIGlzICpkZWZpbml0ZWx5KiBuZWVkZWQsIHRoYXQmIzM5O3Mgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMsIHNvIG15IG5leHQgc3RlcCBpcyB0byBnbyBkaXJlY3RseSBpbnRvIHRoZSBLY29uZmlnIGFuZCBleGFtaW5lIHRoZSBgVEFSR0VUX0NPUkVgIHNldHRpbmdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBWSE9TVF9TQ1NJYCBtb3JlIGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEFSR0VUX0NPUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFZIT1NUX1NDU0kgYW5kIFRBUkdFVF9DT1JFKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAg4oCTIHRob3NlIGFyZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBzdGFydCB3aXRoLiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGJlaGF2ZXMuIEkmIzM5O20gd29uZGVyaW5nIGlmIGB2aG9zdF9zY3NpX2ZsdXNoYCBtaWdodCBhbHNvIGJlIHVzZWZ1bCBhcyBhIGZvY3VzIHN5bWJvbCwgdGhvdWdoIEkgc2VlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLCB3aGljaCBjb3VsZCBtYWtlIGRlYnVnZ2luZyBhIGJpdCBtb3JlIGNoYWxsZW5naW5nLiBOb3csIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIGlmIGB2aG9zdF9zY3NpX2lvY3RsYCBpcyBkZWNsYXJlZCBzdGF0aWNhbGx5IHRvby4gVGhhdCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5MTk9c3RhdGljIGludCB2aG9zdF9zY3NpX3NldHVwX3ZxX2NtZHMoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIGludCBtYXhfY21kcylcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTczLS8qXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxOTc0OiAqIENhbGxlZCBmcm9tIHZob3N0X3Njc2lfaW9jdGwoKSBjb250ZXh0IHRvIHdhbGsgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTc1LSAqIHZob3N0X3Njc2lfdHBnIHdpdGggYW4gYWN0aXZlIHN0cnVjdCB2aG9zdF9zY3NpX25leHVzXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM2MT1zdGF0aWMgbG9uZ1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjM2Mjp2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjM2My1cdFx0IHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZob3N0X3Njc2lfZm9wcyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQwLVx0LnJlbGVhc2UgICAgICAgID0gdmhvc3Rfc2NzaV9yZWxlYXNlLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0MTpcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQyLVx0LmNvbXBhdF9pb2N0bFx0PSBjb21wYXRfcHRyX2lvY3RsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXYWl0LCBpc24mIzM5O3QgdGhhdCBzdGF0aWM/IElmIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgbWVhbmluZyBpdCB3b3VsZG4mIzM5O3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCByaWdodD8mIzM0Oy4gQnV0IHRoZW4sIEkgcmVtZW1iZXIgc2VlaW5nIGl0IHVzZWQgaW4gYHZob3N0X3Njc2lfZm9wc2AgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBBaCwgdGhhdCBzZXR0bGVzIGl0OyBiZWluZyBhIGZ1bmN0aW9uIHBvaW50ZXIgbWVhbnMgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgaXQgKndpbGwqIGhhdmUgaXRzIG93biBzeW1ib2wgYWRkcmVzcy4gR29vZC4KCkJ1dCB0aGVuIEkgcmVjYWxsIHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb246ICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zJiMzNDsuICp2aG9zdF9zY3NpX2lvY3RsKiBpcyBhIGZpbGUgb3BlcmF0aW9ucyBjYWxsYmFjayB0aG91Z2gsIHdoaWNoIG1ha2VzIGl0IGFuIEFQSSBlbnRyeXBvaW50LCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSAqbm90KiBpbmxpbmVkLiBTbywgaXQgYXBwZWFycyB0byBmaXQgdGhlIHJlY29tbWVuZGF0aW9uLCBtYWtpbmcgaXQgdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGZvciB1c2UuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSAqbm9uKi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdlIGNvdWxkIGxldmVyYWdlPyBKdXN0IHRvIGJlIHN1cmUgd2UgYXJlIGFkaGVyaW5nIHRvIHRoZSBzdHlsZSBpbnN0cnVjdGlvbnMsIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIGluc2lkZSBvZiBgZHJpdmVycy92aG9zdC9zY3NpLmNgIHRvIHNlZSBpZiBhbnkgb3RoZXIgZnVuY3Rpb24gd291bGQgYmV0dGVyIGZpdCB0aGUgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZob3N0X3Njc2lfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MzMyPXN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzM6dmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTUzOD1zdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfZXZ0ICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDAtXHRcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTcxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz03NDQ9c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDU6dmhvc3Rfc2NzaV9nZXRfY21kKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCB1NjQgc2NzaV90YWcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NDYte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTgwMD1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDE6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAyLVx0XHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9ODY2PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg2Nzp2aG9zdF9zY3NpX2NhbGNfc2dscyhzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsIHNpemVfdCBieXRlcywgaW50IG1heF9zZ2xzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODY4LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04ODY9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODg3OnZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04ODgtXHRcdFx0ICAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NDc6dmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQ4LVx0XHRcdCAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LCBib29sIGlzX3Byb3QpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk2Njp2aG9zdF9zY3NpX21hcGFsKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjctXHRcdCBzaXplX3QgcHJvdF9ieXRlcywgc3RydWN0IGlvdl9pdGVyICpwcm90X2l0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA3Njp2aG9zdF9zY3NpX3NlbmRfc3RhdHVzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LVx0XHQgICAgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgdTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMDE9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMDI6dmhvc3Rfc2NzaV9zZW5kX2JhZF90YXJnZXQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwMy1cdFx0XHQgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTM5PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExNDA6dmhvc3Rfc2NzaV9nZXRfZGVzYyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTE0MS1cdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTE5Mz1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTk0OnZob3N0X3Njc2lfY2hrX3NpemUoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTk1LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjExPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyMTI6dmhvc3Rfc2NzaV9nZXRfcmVxKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIxMy1cdFx0ICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICoqdHBncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyNDM6dmhvc3Rfc2NzaV9zZXR1cF9yZXNwX2lvdnMoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZlYyAqaW5faW92cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDQtXHRcdFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyODM9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODQ6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODUte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE1MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1Mjc6dmhvc3Rfc2NzaV9zZW5kX3RtZl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTI4LVx0XHRcdCBpbnQgaW5faW92cywgaW50IHZxX2Rlc2MsIHN0cnVjdCBpb3ZlYyAqcmVzcF9pb3YsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTU4Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTU4NDp2aG9zdF9zY3NpX2hhbmRsZV90bWYoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1ODUtXHRcdCAgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2NDU6dmhvc3Rfc2NzaV9zZW5kX2FuX3Jlc3Aoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY0Ni1cdFx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xNjY2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjY3OnZob3N0X3Njc2lfY3RsX2hhbmRsZV92cShzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY2OC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTc5OD1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc5OTp2aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODAwLVx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsIHN0cnVjdCBzZV9sdW4gKmx1bixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5ODE6dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk4Mi1cdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90YXJnZXQgKnQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjExMj1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTEzOnZob3N0X3Njc2lfY2xlYXJfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjExNC1cdFx0XHQgIHN0cnVjdCB2aG9zdF9zY3NpX3RhcmdldCAqdClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVx0XHQgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0ODA6dmhvc3Rfc2NzaV9kb19wbHVnKHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ4MS1cdFx0ICBzdHJ1Y3Qgc2VfbHVuICpsdW4sIGJvb2wgcGx1Zylcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNzc5PXN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI3ODA6dmhvc3Rfc2NzaV9tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzgxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yODM1PXN0YXRpYyBzdHJ1Y3Qgc2Vfd3duICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MzY6dmhvc3Rfc2NzaV9tYWtlX3Rwb3J0KHN0cnVjdCB0YXJnZXRfZmFicmljX2NvbmZpZ2ZzICp0ZixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MzctXHRcdCAgICAgc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkwOD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjkwOTp2aG9zdF9zY3NpX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjkxMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxOTEKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIE5vbi1TdGF0aWMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc2NvcGUgaGVyZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueXRoaW5nIGx1cmtpbmcgaW4gdGhpcyBjb2RlYmFzZSB0aGF0JiMzOTtzIG5vdC4uLndlbGwsICpzdGF0aWMqLiBBbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGluc3RhbmNlIHZhcmlhYmxlcyB1c2VkIGJ5IG1ldGhvZHMgSSBuZWVkIHRvIHNjcnV0aW5pemUsIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIG11dGFibGUgc3RhdGUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBrbm93IHRoZSBkZWdyZWUgb2YgcmVsaWFuY2Ugb24gb2JqZWN0LWxldmVsIGRhdGEuIEl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGF2b2lkaW5nIHBvdGVudGlhbCBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFRoYXQgd2lsbCBncmVhdGx5IGluZmx1ZW5jZSB0aGUgc3Vic2VxdWVudCBzdGVwcy4gSWYgaXQmIzM5O3MgYWxsIHN0YXRpYywgdGhlbiBJIGNhbiBrZWVwIGl0IGluIG15IGhlYWQgZWFzaWVyIGFuZCBtb3ZlIG9uLiBJZiBub3QsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoZSByZWxhdGlvbnNoaXBzIG5vdywgYmVmb3JlIHRoaW5ncyBnZXQgdW53aWVsZHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXCYjMzQ7U2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXHRpbnQgaGVhZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIwOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lgIE1vZHVsZSoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYHZob3N0X3Njc2lfaW9jdGxgIGlzIHRoZSBzb2xlIGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgc2Nhbm5pbmcgdGhyb3VnaCB0aGlzLi4uIHdoYXQgYWJvdXQgYHZob3N0X3Njc2lfZmx1c2hgPyBJdCBsb29rcyB0byBiZSBzdGF0aWMuIEhtbSwgdGhhdCBjaGFuZ2VzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZSwgYmVjYXVzZSB0aGUgc2NvcGUgaXMgbXVjaCBtb3JlIGxpbWl0ZWQuIE5vdyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIG9yIGRlcGVuZCBvbiBgdmhvc3Rfc2NzaV9pb2N0bGAuIExldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgdGhpcyBjb2RlIGluIHJlbGF0aW9uIHRvIG90aGVycywgYW5kIGVzdGFibGlzaCB3aGF0IHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGNvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXCYjMzQ7U2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXHRpbnQgaGVhZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSB2aG9zdF9zY3NpX2lvY3RsIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxvY2F0ZSB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIGZ1bmN0aW9uLCBhbmQgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgZmlsZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHR5cGUgb2YgZnVuY3Rpb24sIG15IGd1dCB0ZWxscyBtZSBpdCYjMzk7cyBwcm9iYWJseSBzdGF0aWMuIExldCYjMzk7cyBjb25maXJtIHRoYXQgcXVpY2tseSwgYnV0IGFsc28sIGxldCYjMzk7cyBub3QgZ2V0IHR1bm5lbCB2aXNpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzICphY2Nlc3NlZCouIFNpbmNlIGl0IHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgaW50ZXJuYWwsIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBlaXRoZXIgYW4gYEVYUE9SVF9TWU1CT0xgIG1hY3JvLCBpbmRpY2F0aW5nIGl0IGlzIG1hZGUgYXZhaWxhYmxlIG91dHNpZGUgb2YgdGhlIG1vZHVsZSwgb3IgcG90ZW50aWFsbHksIGEgYG1vZHVsZV9pbml0YCBjYWxsLCBpbmRpY2F0aW5nIGl0JiMzOTtzIGJyb3VnaHQgaW50byB0aGUga2VybmVsIGF0IG1vZHVsZSBsb2FkLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbjogSW5pdGlhbCBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbywgdGhlIGluaXRpYWwgc2NhbiByZXZlYWxzIGFic29sdXRlbHkgKm5vKiBleHBvcnRlZCBzeW1ib2xzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGFuZCBzdWdnZXN0cyBhIGZldyBwb3NzaWJsZSBzY2VuYXJpb3MuIFRoZSBtb3N0IG9idmlvdXMsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSYjMzk7ZCBsb29rLCBpcyBhdCB0aGUgYG1vZHVsZV9pbml0YCBtYWNyby4gIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgbW9kdWxlIGlzIGJlaW5nIGxvYWRlZCBhbmQgd2hhdCB0aGUgZW50cnkgcG9pbnQgaXMuICBObyBleHBvcnRlZCBzeW1ib2xzIGNvdWxkIG1lYW4gZXZlcnl0aGluZyBpcyBpbnRlbnRpb25hbGx5IGhpZGRlbiwgaGFuZGxlZCBpbnRlcm5hbGx5LCBvciBwZXJoYXBzIHNvbWV0aGluZyBpcyBnb2luZyB3cm9uZyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIGBtb2R1bGVfaW5pdGAgdG8gY29uZmlybSB0aGUgbG9hZGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTk0LW1vZHVsZV9leGl0KHZob3N0X3Njc2lfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODExCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgdmhvc3Rfc2NzaSBJbml0aWFsaXphdGlvbiBhbmQgRXhpdCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24gaW4gZGV0YWlsLiBNeSBmb2N1cyByaWdodCBub3cgaXMgcGlucG9pbnRpbmcgdGhlIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biByb3V0aW5lcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGB2aG9zdF9zY3NpX2luaXRgIGFuZCBgdmhvc3Rfc2NzaV9leGl0YC4gSSB3YW50IHRvIHNlZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGJyb3VnaHQgdXAgYW5kIGhvdyBpdCBncmFjZWZ1bGx5IGV4aXRzLiBBcmUgd2UgdGFsa2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RyYXRpb24gd2l0aCBvdGhlciBzdWJzeXN0ZW1zLCBvciBwZXJoYXBzIHNvbWUgc3BlY2lmaWMgc2V0dXAgcmVsYXRlZCB0byB0aGUgU0NTSSB0cmFuc3BvcnQgbGF5ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIGFyZSBiZWluZyBzZXQgdXAsIHRvcm4gZG93biBhbmQgd2hlbi4gSSBoYXZlIGEgZmVlbGluZyB0aGVzZSBhcmUgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBjb3JlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA2LVx0XHRcdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xODU0PXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTgtXHQvKiBJbml0IG5ldyBpbmZsaWdodCBhbmQgcmVtZW1iZXIgdGhlIG9sZCBpbmZsaWdodCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1OTpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXHUwMDNlb2xkX2luZmxpZ2h0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NjAtXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MT1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyODpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgTlVMTCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI5LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI5MjM9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHZob3N0X3Njc2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTYwOnN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2MS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5Mj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5Mzptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU4NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHZob3N0LXNjc2lgIElvY3RsIEludGVyZmFjZSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdmhvc3Qtc2NzaWAgc2V0dXAuIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IHNlZW0gaW50ZXJlc3RpbmcgaW4gdGhlIGNvZGViYXNlIGFyZSBzdGF0aWMuIEJ1dCB3YWl0LCBgdmhvc3Rfc2NzaV9pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBpb2N0bHMgb24gYC9kZXYvdmhvc3Qtc2NzaWAuIFBlcmZlY3QhIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgSSBjYW4ganVzdCB1c2UgaXQgYXMgbXkgZm9jdXMgc3ltYm9sLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCBldmVuIGlmIGl0JiMzOTtzIG5vdCBpbmxpbmVkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzbiYjMzk7dCBpbmxpbmVkLCBpdCBpc24mIzM5O3QsIHNvIHRoYXQmIzM5O3MgZ29vZCEKCk5vdywganVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYFZIT1NUX1NDU0lgIGRlcGVuZHMgb24gYFRBUkdFVF9DT1JFYCBhbmQgYEVWRU5URkRgLiBgRVZFTlRGRGAgaXMgcHJldHR5IHN0YW5kYXJkLCB1c3VhbGx5IGVuYWJsZWQsIHNvIEkmIzM5O20gbm90IHRvbyB3b3JyaWVkIGFib3V0IHRoYXQuIGBUQVJHRVRfQ09SRWAgc2VlbXMgdG8gbWFwIHRvIGBDT05GSUdfVEFSR0VUX0NPUkVgIOKAkyBnb29kIHRvIGtub3cuIFNvLCBJIG5lZWQgdG8gYWRkIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCB0byB0aGUgY29uZmlndXJhdGlvbi4KCkkgdGhvdWdodCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHZob3N0X3Njc2lfaW9jdGxgLiBJdCBtaWdodCBiZSBpbmxpbmVkLiBMZXQmIzM5O3Mgc3RpY2sgd2l0aCBgdmhvc3Rfc2NzaV9pb2N0bGAgZm9yIG5vdy4gU2ltcGxlciBpcyBiZXR0ZXIuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBhZ2Fpbi4gQWgsIHJpZ2h0LiBJdCYjMzk7cyBhZGRpbmcgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCBhZnRlciB0aGUgYHZob3N0X2Rldl9pb2N0bGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCYjMzk7cyBmbHVzaGluZyB0aGUgYmFja2VuZCBhZnRlciBhIGRldmljZSBpb2N0bC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBhbiBpb2N0bCBvbiBgL2Rldi92aG9zdC1zY3NpYC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIEkgY2FuIGRlZmluaXRlbHkgZnV6eiBpdC4gYFdvcnRoRnV6emluZz10cnVlYC4KClNvLCB0aGUgZm9jdXMgc3ltYm9sIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gQW5kIHRoZSBlbmFibGVkIGNvbmZpZ3MgYXJlIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgYnV0IEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfU0NTSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9MzQ9Y29uZmlnIFZIT1NUX05FVFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00NS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo0Njpjb25maWcgVkhPU1RfU0NTSVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7VkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcwNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogYFRBUkdFVF9DT1JFYCoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgY29yZSBvZiBpdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBydW5uaW5nIGEgdGhvcm91Z2ggY2hlY2sgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZSBzY2FuOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmRlcHRoKiBvZiB0aGUgZGVwZW5kZW5jeSBncmFwaC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGFueSBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWlnaHQgYmUgbHVya2luZyB3aXRoaW4gdGhlIGRlcGVuZGVuY2llcyBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBhbGlnbnMgd2l0aCBteSBzdGFuZGFyZHMgYW5kIGJlc3QgcHJhY3RpY2VzLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGF0IGBUQVJHRVRfQ09SRWAgcmVsaWVzIHVwb24sIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGFuYWx5emUgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IHJlZCBmbGFnczogZGVwcmVjYXRlZCB2ZXJzaW9ucywgbGlicmFyaWVzIHdpdGgga25vd24gZXhwbG9pdHMsIG9yIGNvbXBvbmVudHMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLCBhcyBhbnkgaXNzdWVzIGF0IHRoaXMgbGV2ZWwgY291bGQgcmlwcGxlIG91dHdhcmRzLCBpbXBhY3RpbmcgdGhlIGVudGlyZSBzeXN0ZW0uIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgc29saWQgZm91bmRhdGlvbi4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRBUkdFVF9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDI1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBgVEFSR0VUX0NPUkVgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy90YXJnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFRBUkdFVF9DT1JFYCBkZWZpbml0aW9uLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHRhcmdldCBkZXZpY2UsIGxpa2VseSBzb21lIGZ1bmRhbWVudGFsIGZlYXR1cmVzIG9yIGFyY2hpdGVjdHVyZSBjaG9pY2VzLiBUaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIHRoZSBidWlsZCBzeXN0ZW07IGl0JiMzOTtzIHdoZXJlIHRoZSB1c2VyIHNlbGVjdHMgdGhlIHNwZWNpZmljIG9wdGlvbnMgdGhhdCBkZWZpbmUgd2hhdCBnZXRzIGJ1aWx0IGludG8gdGhlIGZpbmFsIGZpcm13YXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgbWF5YmUgc29tZSBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgVEFSR0VUX0NPUkVgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhpcyBvcHRpb24gYW5kIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSwgb3IgZXZlbiBicm9hZGVyIHN5c3RlbS1sZXZlbCBjaG9pY2VzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGNvbmZsaWN0cyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD8gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBkZXNpZ24gZGVjaXNpb25zIGFyZSBleHBvc2VkLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGhhdmUgdG8gd29yayB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU1MwoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpczoKCioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGNsZWFybHkgYSBrZXkgY29tcG9uZW50LCBhbmQgaXQmIzM5O3MgY29udGluZ2VudCB1cG9uIGBCTE9DS2AsIHdoaWNoIGlzIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCBhcmUgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCwgZ2l2ZW4gdGhhdCB0aGVzZSBzZWVtIGNlbnRyYWwgdG8gdGhlIGRlc2lnbi4KCkxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kgdHJlZSwgSSBzZWUgdGhhdCBgVkhPU1RfU0NTSWAgYWxzbyBoYXMgYSBkZXBlbmRlbmN5IG9uIGBUQVJHRVRfQ09SRWAgKmFuZCogYEVWRU5URkRgLiBBbmQgYEVWRU5URkRgIGlzIHR5cGljYWxseSBlbmFibGVkLCB3aGljaCBJJiMzOTtkIGV4cGVjdC4KCkkgdGhpbmsgSSYjMzk7dmUgZ290IGVub3VnaCBpbmZvcm1hdGlvbi4gVGltZSB0byBicmluZyB1cCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjQ2LjY2MTM2NTM1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDk5NzgwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjQ2LjY2MTM3ODA3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1OTA5MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUyYzljMzBmODkzMTdmMzAyOTc4MDc2ZGRlMzlhZTc4OWU4MDU2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMDoyMTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuKysrIGIvZHJpdmVycy92aG9zdC9zY3NpLmNcXG5AQCAtMjQyNiw5ICsyNDI2LDEwIEBAIHZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbiBcXHRcXHRyID0gdmhvc3RfZGV2X2lvY3RsKFxcdTAwMjZ2cy1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuLVxcdFxcdC8qIFRPRE86IGZsdXNoIGJhY2tlbmQgYWZ0ZXIgZGV2IGlvY3RsLiAqL1xcbiBcXHRcXHRpZiAociA9PSAtRU5PSU9DVExDTUQpXFxuIFxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2dnMtXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo0Ny4wMzc5MzE4NDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1OTcyMzIwNTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9TQ1NJXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCBpbiB0aGUgaW9jdGwgaGFuZGxlciBmb3IgYC9kZXYvdmhvc3Qtc2NzaWAuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBtb2RpZmllcyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIHZob3N0LXNjc2kgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZTJjOWMzMGY4OTMxN2YzMDI5NzgwNzZkZGUzOWFlNzg5ZTgwNTYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTA6MjE6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5pbmRleCA5YTEyNTNiOWQ4YzUwZS4uMzkzN2ViNTAxMzI0YWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuKysrIGIvZHJpdmVycy92aG9zdC9zY3NpLmNcbkBAIC0yNDI2LDkgKzI0MjYsMTAgQEAgdmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbiBcdGRlZmF1bHQ6XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dnMtXHUwMDNlZGV2Lm11dGV4KTtcbiBcdFx0ciA9IHZob3N0X2Rldl9pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbi1cdFx0LyogVE9ETzogZmx1c2ggYmFja2VuZCBhZnRlciBkZXYgaW9jdGwuICovXG4gXHRcdGlmIChyID09IC1FTk9JT0NUTENNRClcbiBcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2dnMtXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4rXHRcdGVsc2VcbitcdFx0XHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHJldHVybiByO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NDcuMDM3OTMyNzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NzUwODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZob3N0LXNjc2kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaCh2cylgICphZnRlciogdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGNhbGwsIGJ1dCBvbmx5IGlmIHRoZSBgdmhvc3RfZGV2X2lvY3RsYCBmdW5jdGlvbiAqZGlkbid0KiByZXR1cm4gYC1FTk9JT0NUTENNRGAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGlvY3RsIGNvbW1hbmQgaGFuZGxpbmcgaW50ZXJhY3Rpb24uIExldCBtZSBjb25maXJtIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIHJlYXNvbnMgZm9yIHRoaXMgYWRkaXRpb25hbCBjYWxsLiBcblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdmhvc3Rfc2NzaV9pb2N0bGAgYW5kIGB2aG9zdF9zY3NpX2ZsdXNoYCBkbyBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCB0aGlzIGNoYW5nZSB0byBwb3NzaWJsZSBTQ1NJIHJlbGF0ZWQgY29tbWFuZHMgb3Igc3RhdGUgbWFjaGluZXMuIFRoaXMgd2lsbCByZXF1aXJlIGNoZWNraW5nIGhvdyB0aGUgaW9jdGwgY29tbWFuZCBpcyBoYW5kbGVkLCB0aGVuIGhvdyB0aGUgZmx1c2ggaXMgaW1wbGVtZW50ZWQuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkIGZvciBtZSwgc28gbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJ3JlIHJlYWxseSBsb29raW5nIGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo1MC4zMzU0NDI2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxNjAxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTE5PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXR1cF92cV9jbWRzKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBpbnQgbWF4X2NtZHMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTczLS8qXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTk3NDogKiBDYWxsZWQgZnJvbSB2aG9zdF9zY3NpX2lvY3RsKCkgY29udGV4dCB0byB3YWxrIHRoZSBsaXN0IG9mIGF2YWlsYWJsZVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzUtICogdmhvc3Rfc2NzaV90cGcgd2l0aCBhbiBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9c3RhdGljIGxvbmdcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjM2My1cXHRcXHQgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjQzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQwLVxcdC5yZWxlYXNlICAgICAgICA9IHZob3N0X3Njc2lfcmVsZWFzZSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDQxOlxcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0Mi1cXHQuY29tcGF0X2lvY3RsXFx0PSBjb21wYXRfcHRyX2lvY3RsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo1MC4zOTI2MDc3NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgzODM3MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB2aG9zdC1zY3NpIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byBgdmhvc3Rfc2NzaV9pb2N0bGAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIGFsbCBzb3J0cyBvZiBjb250cm9sIG9wZXJhdGlvbnMuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYGlvY3RsYCBjaGFuZ2VzIHRoZW1zZWx2ZXMsIGl0J3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBzZWUgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyByZWxhdGVkIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgb3V0IGB2aG9zdF9zY3NpX2ZsdXNoYC4gR2l2ZW4gdGhlIGNvbnRleHQsIGNoYW5nZXMgdG8gdGhlIGNvcmUgYGlvY3RsYCBtaWdodCB0cmlnZ2VyIGNhc2NhZGluZyBpbXBsaWNhdGlvbnMgYW5kIHJlcXVpcmUgdXBkYXRlcyB0byBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgY2xlYW51cC4gVW5kZXJzdGFuZGluZyB0aGUgXCJmbHVzaFwiIGJlaGF2aW9yIGlzIGNyaXRpY2FsIGZvciBkYXRhIGNvbnNpc3RlbmN5LCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjUzLjA3NjQ0NjUyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ1MzEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpX2ZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE4NDQ9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTMtLyogQ2FsbGVycyBtdXN0IGhvbGQgZGV2IG11dGV4ICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1NDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODU1LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5ODE9dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4NC1cXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDg1OlxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwODYtXFx0dnMtXFx1MDAzZXZzX3RwZyA9IHZzX3RwZztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxMTM9dmhvc3Rfc2NzaV9jbGVhcl9lbmRwb2ludChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTcwLVxcdC8qIE1ha2Ugc3VyZSBjbWRzIGFyZSBub3QgcnVubmluZyBiZWZvcmUgdGVhcmluZyB0aGVtIGRvd24uICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE3MTpcXHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTcyLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIwNC1cXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjA1OlxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIyMDYtXFx0a2ZyZWUodnMtXFx1MDAzZXZzX3RwZyk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYyPXZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDMxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDMyOlxcdFxcdFxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cy1cXHUwMDNlZGV2Lm11dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTMuMTMyOTAzMzQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxMTM0OTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWNlbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCB3aXRoaW4gdGhlIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgaW5kaWNhdGVzIGFuIGV4cGxpY2l0IGZsdXNoaW5nIG1lY2hhbmlzbSBiZWluZyBleHBvc2VkIHZpYSB0aGUgYGlvY3RsYCBpbnRlcmZhY2Ugb24gYC9kZXYvdmhvc3Qtc2NzaWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBzdHJhaWdodGZvcndhcmQ7IGl0J3MgcmVhY2hhYmxlIGFuZCB0aHVzIHBvdGVudGlhbGx5IHVzYWJsZSBmcm9tIHVzZXJzcGFjZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGB2aG9zdF9zY3NpYC4gSSB3YW50IHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBhdmFpbGFibGUuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgKmhvdyogdGhpcyBpcyBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGZlYXR1cmVzIGFyZSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjU2LjA0NDI1NDkyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUxODU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9NDY9Y29uZmlnIFZIT1NUX1NDU0lcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Mi1cXHRoZWxwXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjUzOlxcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU0LVxcdGZvciB1c2Ugd2l0aCB2aXJ0aW8tc2NzaSBndWVzdHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTYuMTAwNzc2ODk5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNDE1NTkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqQ2hlY2tpbmcgdGhlIFNDU0kgVmhvc3QgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBWSE9TVF9TQ1NJLiBJIGtub3cgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQncyB3aGF0LiBIb3BlZnVsbHksIHRoZSBvcHRpb25zIGFyZSBjbGVhcmx5IGRvY3VtZW50ZWQgYW5kIG9yZ2FuaXplZC4gSSBleHBlY3QgdG8gZmluZCBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgbWF5YmUgc29tZSBoZWxwIHRleHQgdG8gY2xhcmlmeSB0aGUgcHVycG9zZSBhbmQgYmVoYXZpb3Igb2YgdGhlIGBWSE9TVF9TQ1NJYCBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTkuMDM0OTM2NDA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxcbiAgNDE6XFx0XFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXFxuICA0NDpcXHRcXHQgIGJlIGNhbGxlZCB2aG9zdF9uZXQuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBWSE9TVF9TQ1NJXFxuICA0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkUgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbiAgNDk6XFx0XFx0c2VsZWN0IFZIT1NUXFxuICA1MDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAgNTE6XFx0XFx0ZGVmYXVsdCBuXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxcbiAgNTQ6XFx0XFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgVkhPU1RfVlNPQ0tcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuICA1OTpcXHRcXHRzZWxlY3QgVkhPU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTkuMDM1MDg0ODM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzk4MjQ3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBTQ1NJIFZpcnR1YWwgSG9zdCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHdvcmtpbmcgd2l0aCBpcyBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGlzIHJlbGllcyBvbiBhIGNvdXBsZSBvZiBrZXkgZGVwZW5kZW5jaWVzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIFJpZ2h0LCBhbmQgY2xlYXJseSBgVEFSR0VUX0NPUkVgIGlzICpkZWZpbml0ZWx5KiBuZWVkZWQsIHRoYXQncyBub24tbmVnb3RpYWJsZS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGdvIGRpcmVjdGx5IGludG8gdGhlIEtjb25maWcgYW5kIGV4YW1pbmUgdGhlIGBUQVJHRVRfQ09SRWAgc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYFZIT1NUX1NDU0lgIG1vcmUgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjAxLjc3NDkxMTUyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4OTQ3ODI0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWctMi1cXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjowNC45NjQzOTU4MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NjQwNjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgVkhPU1RfU0NTSSBhbmQgVEFSR0VUX0NPUkUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAg4oCTIHRob3NlIGFyZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBzdGFydCB3aXRoLiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGJlaGF2ZXMuIEknbSB3b25kZXJpbmcgaWYgYHZob3N0X3Njc2lfZmx1c2hgIG1pZ2h0IGFsc28gYmUgdXNlZnVsIGFzIGEgZm9jdXMgc3ltYm9sLCB0aG91Z2ggSSBzZWUgaXQncyBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggY291bGQgbWFrZSBkZWJ1Z2dpbmcgYSBiaXQgbW9yZSBjaGFsbGVuZ2luZy4gTm93LCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGRldGVybWluZSBpZiBgdmhvc3Rfc2NzaV9pb2N0bGAgaXMgZGVjbGFyZWQgc3RhdGljYWxseSB0b28uIFRoYXQgd2lsbCBtYWtlIGl0IGVhc2llciB0byBkZWFsIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjowOC4wNTA4MDQxNjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk5NzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MTkxOT1zdGF0aWMgaW50IHZob3N0X3Njc2lfc2V0dXBfdnFfY21kcyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgaW50IG1heF9jbWRzKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk3My0vKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5NzQ6ICogQ2FsbGVkIGZyb20gdmhvc3Rfc2NzaV9pb2N0bCgpIGNvbnRleHQgdG8gd2FsayB0aGUgbGlzdCBvZiBhdmFpbGFibGVcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTc1LSAqIHZob3N0X3Njc2lfdHBnIHdpdGggYW4gYWN0aXZlIHN0cnVjdCB2aG9zdF9zY3NpX25leHVzXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjM2Mjp2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzNjMtXFx0XFx0IHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0MC1cXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0MTpcXHQudW5sb2NrZWRfaW9jdGwgPSB2aG9zdF9zY3NpX2lvY3RsLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDItXFx0LmNvbXBhdF9pb2N0bFxcdD0gY29tcGF0X3B0cl9pb2N0bCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MDguMTA4MzA3NzY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTk4NTgwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0LCBpc24ndCB0aGF0IHN0YXRpYz8gSWYgaXQncyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgbWVhbmluZyBpdCB3b3VsZG4ndCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIHJpZ2h0P1wiLiBCdXQgdGhlbiwgSSByZW1lbWJlciBzZWVpbmcgaXQgdXNlZCBpbiBgdmhvc3Rfc2NzaV9mb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEFoLCB0aGF0IHNldHRsZXMgaXQ7IGJlaW5nIGEgZnVuY3Rpb24gcG9pbnRlciBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQgYW5kIGl0ICp3aWxsKiBoYXZlIGl0cyBvd24gc3ltYm9sIGFkZHJlc3MuIEdvb2QuXG5cbkJ1dCB0aGVuIEkgcmVjYWxsIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi4gKnZob3N0X3Njc2lfaW9jdGwqIGlzIGEgZmlsZSBvcGVyYXRpb25zIGNhbGxiYWNrIHRob3VnaCwgd2hpY2ggbWFrZXMgaXQgYW4gQVBJIGVudHJ5cG9pbnQsIGFuZCBpdCdzIGRlZmluaXRlbHkgKm5vdCogaW5saW5lZC4gU28sIGl0IGFwcGVhcnMgdG8gZml0IHRoZSByZWNvbW1lbmRhdGlvbiwgbWFraW5nIGl0IHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBmb3IgdXNlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSAqbm9uKi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdlIGNvdWxkIGxldmVyYWdlPyBKdXN0IHRvIGJlIHN1cmUgd2UgYXJlIGFkaGVyaW5nIHRvIHRoZSBzdHlsZSBpbnN0cnVjdGlvbnMsIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgaW5zaWRlIG9mIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbiB3b3VsZCBiZXR0ZXIgZml0IHRoZSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjEyLjE2ODE2Nzg1OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNjY3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTMzMj1zdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzMzp2aG9zdF9zY3NpX2dldF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTM4PXN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTQwLVxcdFxcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz01Njk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU3MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz03NDQ9c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ1OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0Ni17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04MDA9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwMTp2aG9zdF9zY3NpX21hcF90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAyLVxcdFxcdCAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg2Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODY3OnZob3N0X3Njc2lfY2FsY19zZ2xzKHN0cnVjdCBpb3ZfaXRlciAqaXRlciwgc2l6ZV90IGJ5dGVzLCBpbnQgbWF4X3NnbHMpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODY4LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg4Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODg3OnZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODg4LVxcdFxcdFxcdCAgIHN0cnVjdCBzZ190YWJsZSAqc2dfdGFibGUsIGludCBzZ19jb3VudCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk0Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTQ3OnZob3N0X3Njc2lfbWFwX2lvdl90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NDgtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsIGJvb2wgaXNfcHJvdClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2NT1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTY2OnZob3N0X3Njc2lfbWFwYWwoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjctXFx0XFx0IHNpemVfdCBwcm90X2J5dGVzLCBzdHJ1Y3QgaW92X2l0ZXIgKnByb3RfaXRlcixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEwNzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDc2OnZob3N0X3Njc2lfc2VuZF9zdGF0dXMoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LVxcdFxcdCAgICAgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLCB1OCBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTAxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMjp2aG9zdF9zY3NpX3NlbmRfYmFkX3RhcmdldChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwMy1cXHRcXHRcXHQgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMzk9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExNDA6dmhvc3Rfc2NzaV9nZXRfZGVzYyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTkzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTk0OnZob3N0X3Njc2lfY2hrX3NpemUoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTE5NS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjEyOnZob3N0X3Njc2lfZ2V0X3JlcShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjEzLVxcdFxcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnRwZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjQzOnZob3N0X3Njc2lfc2V0dXBfcmVzcF9pb3ZzKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92ZWMgKmluX2lvdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTI0NC1cXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgaW5faW92c19jbnQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjgzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4NDp2aG9zdF9zY3NpX2hhbmRsZV92cShzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODUte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTUyNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1Mjc6dmhvc3Rfc2NzaV9zZW5kX3RtZl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUyOC1cXHRcXHRcXHQgaW50IGluX2lvdnMsIGludCB2cV9kZXNjLCBzdHJ1Y3QgaW92ZWMgKnJlc3BfaW92LFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTU4Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1ODQ6dmhvc3Rfc2NzaV9oYW5kbGVfdG1mKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTU4NS1cXHRcXHQgICAgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NDQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjQ1OnZob3N0X3Njc2lfc2VuZF9hbl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjQ2LVxcdFxcdFxcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTY2Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2Njc6dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX3ZxKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY2OC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xNzk4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc5OTp2aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgwMC1cXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsIHN0cnVjdCBzZV9sdW4gKmx1bixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5ODA9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5ODE6dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5ODItXFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdGFyZ2V0ICp0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjExMj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjExMzp2aG9zdF9zY3NpX2NsZWFyX2VuZHBvaW50KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTE0LVxcdFxcdFxcdCAgc3RydWN0IHZob3N0X3Njc2lfdGFyZ2V0ICp0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM2MT1zdGF0aWMgbG9uZ1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzNjI6dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ4MDp2aG9zdF9zY3NpX2RvX3BsdWcoc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ4MS1cXHRcXHQgIHN0cnVjdCBzZV9sdW4gKmx1biwgYm9vbCBwbHVnKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjc3OT1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjc4MDp2aG9zdF9zY3NpX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3biwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzgxLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI4MzU9c3RhdGljIHN0cnVjdCBzZV93d24gKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MzY6dmhvc3Rfc2NzaV9tYWtlX3Rwb3J0KHN0cnVjdCB0YXJnZXRfZmFicmljX2NvbmZpZ2ZzICp0ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODM3LVxcdFxcdCAgICAgc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTA4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjkwOTp2aG9zdF9zY3NpX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5MTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoxMi4yMjU0NDEyMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwNzAwNzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBOb24tU3RhdGljIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzY29wZSBoZXJlLiBCZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIHdoZXRoZXIgdGhlcmUncyBhbnl0aGluZyBsdXJraW5nIGluIHRoaXMgY29kZWJhc2UgdGhhdCdzIG5vdC4uLndlbGwsICpzdGF0aWMqLiBBbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGluc3RhbmNlIHZhcmlhYmxlcyB1c2VkIGJ5IG1ldGhvZHMgSSBuZWVkIHRvIHNjcnV0aW5pemUsIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIG11dGFibGUgc3RhdGUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBrbm93IHRoZSBkZWdyZWUgb2YgcmVsaWFuY2Ugb24gb2JqZWN0LWxldmVsIGRhdGEuIEl0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gYXZvaWRpbmcgcG90ZW50aWFsIGdvdGNoYXMgZG93biB0aGUgbGluZS4gVGhhdCB3aWxsIGdyZWF0bHkgaW5mbHVlbmNlIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLiBJZiBpdCdzIGFsbCBzdGF0aWMsIHRoZW4gSSBjYW4ga2VlcCBpdCBpbiBteSBoZWFkIGVhc2llciBhbmQgbW92ZSBvbi4gSWYgbm90LCBJIG5lZWQgdG8gc3RhcnQgc2tldGNoaW5nIG91dCB0aGUgcmVsYXRpb25zaGlwcyBub3csIGJlZm9yZSB0aGluZ3MgZ2V0IHVud2llbGR5LiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxOTEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoxNS4zMzI0NTEyNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDQ4MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXFxcIlNldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlxcXCIpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVxcdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEyLVxcdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0OC1cXHQvKiBQb2ludGVyIHRvIFRDTSBzZXNzaW9uIGZvciBJX1QgTmV4dXMgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1MS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNTI6c3RydWN0IHZob3N0X3Njc2lfdHBnIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXFx0LyogVmhvc3QgcG9ydCB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXFx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg3LVxcdC8qIGV2ZW50IHRvIGJlIHNlbnQgdG8gZ3Vlc3QgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxND1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFxcXCJTZXQgdGhlIG1heCBudW1iZXIgb2YgSU8gdmlydHF1ZXVlcyBhIHZob3N0IHNjc2kgZGV2aWNlIGNhbiBzdXBwb3J0LiBUaGUgZGVmYXVsdCBpcyAxMjguIFRoZSBtYXggaXMgMTAyNC5cXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE2OnN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVxcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cXHRzdHJ1Y3Qgdmhvc3Rfd29yayB2d29yaztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI3OS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyODA6c3RydWN0IHZob3N0X3Njc2lfY3R4IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXFx0aW50IGhlYWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjE1LjM4OTUwNTQ1M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNjk2OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lgIE1vZHVsZSoqXG5cbk9rYXksIGxldCdzIHNlZS4uLiBpdCBsb29rcyBsaWtlIGB2aG9zdF9zY3NpX2lvY3RsYCBpcyB0aGUgc29sZSBmdW5jdGlvbiB0aGF0IHdhcyB0b3VjaGVkLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSdtIGp1c3QgcXVpY2tseSBzY2FubmluZyB0aHJvdWdoIHRoaXMuLi4gd2hhdCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGA/IEl0IGxvb2tzIHRvIGJlIHN0YXRpYy4gSG1tLCB0aGF0IGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBiZWNhdXNlIHRoZSBzY29wZSBpcyBtdWNoIG1vcmUgbGltaXRlZC4gTm93IEkgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggb3IgZGVwZW5kIG9uIGB2aG9zdF9zY3NpX2lvY3RsYC4gTGV0J3MganVzdCBxdWlja2x5IGNoZWNrIHRoaXMgY29kZSBpbiByZWxhdGlvbiB0byBvdGhlcnMsIGFuZCBlc3RhYmxpc2ggd2hhdCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBjb3VsZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIwOSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjE4Ljg1MzIwNDU1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3OTYyMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9OTY9TU9EVUxFX1BBUk1fREVTQyhpbmxpbmVfc2dfY250LCBcXFwiU2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXFxcIik7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA0OnN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDUtXFx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTItXFx0LyogRGVzY3JpcHRvciBmcm9tIHZob3N0X2dldF92cV9kZXNjKCkgZm9yIHZpcnRfcXVldWUgc2VnbWVudCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVxcdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1My1cXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3Ni1cXHQvKiBTQ1NJIHByb3RvY29sIHRoZSB0cG9ydCBpcyBwcm92aWRpbmcgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODY6c3RydWN0IHZob3N0X3Njc2lfZXZ0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXFx0LyogZXZlbnQgdG8gYmUgc2VudCB0byBndWVzdCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXFxcIlNldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlxcXCIpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTctXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzOT1zdHJ1Y3Qgdmhvc3Rfc2NzaSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjU3OnN0cnVjdCB2aG9zdF9zY3NpX3RtZiB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVxcdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cXHRpbnQgaGVhZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MTguOTExMDA3MTQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjAxNzI4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgdmhvc3Rfc2NzaV9pb2N0bCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9jYXRlIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgZnVuY3Rpb24sIGFuZCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCBmaWxlLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgdHlwZSBvZiBmdW5jdGlvbiwgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgcHJvYmFibHkgc3RhdGljLiBMZXQncyBjb25maXJtIHRoYXQgcXVpY2tseSwgYnV0IGFsc28sIGxldCdzIG5vdCBnZXQgdHVubmVsIHZpc2lvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgKmFjY2Vzc2VkKi4gU2luY2UgaXQgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSBpbnRlcm5hbCwgSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBmb3IgZWl0aGVyIGFuIGBFWFBPUlRfU1lNQk9MYCBtYWNybywgaW5kaWNhdGluZyBpdCBpcyBtYWRlIGF2YWlsYWJsZSBvdXRzaWRlIG9mIHRoZSBtb2R1bGUsIG9yIHBvdGVudGlhbGx5LCBhIGBtb2R1bGVfaW5pdGAgY2FsbCwgaW5kaWNhdGluZyBpdCdzIGJyb3VnaHQgaW50byB0aGUga2VybmVsIGF0IG1vZHVsZSBsb2FkLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyMi4xMzExODIzMzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTg4NTk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyMi4xODczNzU0NzJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5OTQ2NDIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBJbnZlc3RpZ2F0aW9uOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28sIHRoZSBpbml0aWFsIHNjYW4gcmV2ZWFscyBhYnNvbHV0ZWx5ICpubyogZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGFuZCBzdWdnZXN0cyBhIGZldyBwb3NzaWJsZSBzY2VuYXJpb3MuIFRoZSBtb3N0IG9idmlvdXMsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2ssIGlzIGF0IHRoZSBgbW9kdWxlX2luaXRgIG1hY3JvLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBtb2R1bGUgaXMgYmVpbmcgbG9hZGVkIGFuZCB3aGF0IHRoZSBlbnRyeSBwb2ludCBpcy4gIE5vIGV4cG9ydGVkIHN5bWJvbHMgY291bGQgbWVhbiBldmVyeXRoaW5nIGlzIGludGVudGlvbmFsbHkgaGlkZGVuLCBoYW5kbGVkIGludGVybmFsbHksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGlzIGdvaW5nIHdyb25nIHdpdGggdGhlIGJ1aWxkIHByb2Nlc3MuIEknbSBnb2luZyB0byBkaWcgaW50byBgbW9kdWxlX2luaXRgIHRvIGNvbmZpcm0gdGhlIGxvYWRpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTMzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MjUuMDg2ODQyMjIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIyMDI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyNS4xNDMwNjY0ODlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTE3MzAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgdmhvc3Rfc2NzaSBJbml0aWFsaXphdGlvbiBhbmQgRXhpdCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZSB2aG9zdC1zY3NpIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIHBpbnBvaW50aW5nIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgc2h1dGRvd24gcm91dGluZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGB2aG9zdF9zY3NpX2luaXRgIGFuZCBgdmhvc3Rfc2NzaV9leGl0YC4gSSB3YW50IHRvIHNlZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGJyb3VnaHQgdXAgYW5kIGhvdyBpdCBncmFjZWZ1bGx5IGV4aXRzLiBBcmUgd2UgdGFsa2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RyYXRpb24gd2l0aCBvdGhlciBzdWJzeXN0ZW1zLCBvciBwZXJoYXBzIHNvbWUgc3BlY2lmaWMgc2V0dXAgcmVsYXRlZCB0byB0aGUgU0NTSSB0cmFuc3BvcnQgbGF5ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIGFyZSBiZWluZyBzZXQgdXAsIHRvcm4gZG93biBhbmQgd2hlbi4gSSBoYXZlIGEgZmVlbGluZyB0aGVzZSBhcmUgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBjb3JlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgxMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjI4LjE3MjI0MjAzMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzUwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTg1ND1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTgtXFx0LyogSW5pdCBuZXcgaW5mbGlnaHQgYW5kIHJlbWVtYmVyIHRoZSBvbGQgaW5mbGlnaHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU5OlxcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXFx1MDAzZW9sZF9pbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg2MC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzE9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMjg6XFx0dmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHZzLCBOVUxMKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI5LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NjA6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyOC4yNzUwMDMyOTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4NzI2MjkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHZob3N0LXNjc2lgIElvY3RsIEludGVyZmFjZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZob3N0LXNjc2lgIHNldHVwLiBUaGUgb25seSBmdW5jdGlvbnMgdGhhdCBzZWVtIGludGVyZXN0aW5nIGluIHRoZSBjb2RlYmFzZSBhcmUgc3RhdGljLiBCdXQgd2FpdCwgYHZob3N0X3Njc2lfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaW9jdGxzIG9uIGAvZGV2L3Zob3N0LXNjc2lgLiBQZXJmZWN0ISBTaW5jZSBpdCdzIHN0YXRpYywgSSBjYW4ganVzdCB1c2UgaXQgYXMgbXkgZm9jdXMgc3ltYm9sLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCBldmVuIGlmIGl0J3Mgbm90IGlubGluZWQuIExldCdzIG1ha2Ugc3VyZSBpdCBpc24ndCBpbmxpbmVkLCBpdCBpc24ndCwgc28gdGhhdCdzIGdvb2QhXG5cbk5vdywganVzdCB0byBiZSBzdXJlLCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgVkhPU1RfU0NTSWAgZGVwZW5kcyBvbiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIGBFVkVOVEZEYCBpcyBwcmV0dHkgc3RhbmRhcmQsIHVzdWFsbHkgZW5hYmxlZCwgc28gSSdtIG5vdCB0b28gd29ycmllZCBhYm91dCB0aGF0LiBgVEFSR0VUX0NPUkVgIHNlZW1zIHRvIG1hcCB0byBgQ09ORklHX1RBUkdFVF9DT1JFYCDigJMgZ29vZCB0byBrbm93LiBTbywgSSBuZWVkIHRvIGFkZCBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkkgdGhvdWdodCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLCBidXQgaXQncyBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9pb2N0bGAuIEl0IG1pZ2h0IGJlIGlubGluZWQuIExldCdzIHN0aWNrIHdpdGggYHZob3N0X3Njc2lfaW9jdGxgIGZvciBub3cuIFNpbXBsZXIgaXMgYmV0dGVyLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGFnYWluLiBBaCwgcmlnaHQuIEl0J3MgYWRkaW5nIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgYWZ0ZXIgdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQncyBmbHVzaGluZyB0aGUgYmFja2VuZCBhZnRlciBhIGRldmljZSBpb2N0bC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBhbiBpb2N0bCBvbiBgL2Rldi92aG9zdC1zY3NpYC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIEkgY2FuIGRlZmluaXRlbHkgZnV6eiBpdC4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBmb2N1cyBzeW1ib2wgaXMgYHZob3N0X3Njc2lfaW9jdGxgLiBBbmQgdGhlIGVuYWJsZWQgY29uZmlncyBhcmUgYFZIT1NUX1NDU0lgIGFuZCBgVEFSR0VUX0NPUkVgLiBJJ2xsIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGJ1dCBJJ20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU4NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjozNS42NjIyNjk2MzZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE1OTc3ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1NDU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz0zND1jb25maWcgVkhPU1RfTkVUXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDUtXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ2OmNvbmZpZyBWSE9TVF9TQ1NJXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjozNi43ODM4NzM2NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNzYyOTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBgVEFSR0VUX0NPUkVgKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgaXQuIEknbSBnb2luZyB0byBzdGFydCBieSBydW5uaW5nIGEgdGhvcm91Z2ggY2hlY2sgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlIHNjYW47IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqZGVwdGgqIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBJJ20gdGhpbmtpbmcgYWJvdXQgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhbnkgcG90ZW50aWFsIHZlcnNpb24gY29uZmxpY3RzIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgd2l0aGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHdpdGggbXkgc3RhbmRhcmRzIGFuZCBiZXN0IHByYWN0aWNlcy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGF0IGBUQVJHRVRfQ09SRWAgcmVsaWVzIHVwb24sIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGFuYWx5emUgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEknbSBsb29raW5nIGZvciBhbnkgcmVkIGZsYWdzOiBkZXByZWNhdGVkIHZlcnNpb25zLCBsaWJyYXJpZXMgd2l0aCBrbm93biBleHBsb2l0cywgb3IgY29tcG9uZW50cyB0aGF0IGNvdWxkIGludHJvZHVjZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAsIGFzIGFueSBpc3N1ZXMgYXQgdGhpcyBsZXZlbCBjb3VsZCByaXBwbGUgb3V0d2FyZHMsIGltcGFjdGluZyB0aGUgZW50aXJlIHN5c3RlbS4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCBmb3VuZGF0aW9uLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzA2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MzkuNzExNTA2Mjc2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIzNjEzMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRBUkdFVF9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWc6MzptZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjM5LjgxMzg3MzQ1MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM3NzM1NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgYFRBUkdFVF9DT1JFYCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy90YXJnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFRBUkdFVF9DT1JFYCBkZWZpbml0aW9uLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGEgdGFyZ2V0IGRldmljZSwgbGlrZWx5IHNvbWUgZnVuZGFtZW50YWwgZmVhdHVyZXMgb3IgYXJjaGl0ZWN0dXJlIGNob2ljZXMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgdGhlIGJ1aWxkIHN5c3RlbTsgaXQncyB3aGVyZSB0aGUgdXNlciBzZWxlY3RzIHRoZSBzcGVjaWZpYyBvcHRpb25zIHRoYXQgZGVmaW5lIHdoYXQgZ2V0cyBidWlsdCBpbnRvIHRoZSBmaW5hbCBmaXJtd2FyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgbWF5YmUgc29tZSBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgVEFSR0VUX0NPUkVgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGlzIG9wdGlvbiBhbmQgb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIHBsYXRmb3JtLCBvciBldmVuIGJyb2FkZXIgc3lzdGVtLWxldmVsIGNob2ljZXMuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgY29uZmxpY3RzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkPyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlc2lnbiBkZWNpc2lvbnMgYXJlIGV4cG9zZWQuIFRpbWUgdG8gc2VlIHdoYXQgd2UgaGF2ZSB0byB3b3JrIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDI1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDMuMDUxNjEwODM0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA2OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQ19UMTBESUZcXG4gICA4OlxcdFxcdHNlbGVjdCBTQ1NJX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcXG4gIDEzOlxcdFxcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xcbiAgMTQ6XFx0XFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBUQVJHRVRfQ09SRVxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgVENNX0lCTE9DS1xcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIlRDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgQkxLX0RFVl9JTlRFR1JJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDMuMDUxNjY2MjU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mzc5OTk5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gYFRBUkdFVF9DT1JFYCBpcyBjbGVhcmx5IGEga2V5IGNvbXBvbmVudCwgYW5kIGl0J3MgY29udGluZ2VudCB1cG9uIGBCTE9DS2AsIHdoaWNoIGlzIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCBhcmUgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCwgZ2l2ZW4gdGhhdCB0aGVzZSBzZWVtIGNlbnRyYWwgdG8gdGhlIGRlc2lnbi5cblxuTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeSB0cmVlLCBJIHNlZSB0aGF0IGBWSE9TVF9TQ1NJYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYFRBUkdFVF9DT1JFYCAqYW5kKiBgRVZFTlRGRGAuIEFuZCBgRVZFTlRGRGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQsIHdoaWNoIEknZCBleHBlY3QuXG5cbkkgdGhpbmsgSSd2ZSBnb3QgZW5vdWdoIGluZm9ybWF0aW9uLiBUaW1lIHRvIGJyaW5nIHVwIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTUzLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDYuNjg5NjY4NDg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NjQwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 09:50:57 +0000 UTC FinishedAt: 2026-07-25 10:22:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_SCSI", "TARGET_CORE" ], "series_id": "e308057e-2788-4a01-8f40-7935ba61e751" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vhost_scsi_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX1NDU0kmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZTJjOWMzMGY4OTMxN2YzMDI5NzgwNzZkZGUzOWFlNzg5ZTgwNTYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTA6MjE6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC9zY3NpLmMgYi9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC9zY3NpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5AQCAtMjQyNiw5ICYjNDM7MjQyNiwxMCBAQCB2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxuIFx0ZGVmYXVsdDpcbiBcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyID0gdmhvc3RfZGV2X2lvY3RsKFx1MDAyNnZzLVx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xuLVx0XHQvKiBUT0RPOiBmbHVzaCBiYWNrZW5kIGFmdGVyIGRldiBpb2N0bC4gKi9cbiBcdFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxuIFx0XHRcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0dmhvc3Rfc2NzaV9mbHVzaCh2cyk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhlMmM5YzMwZjg5MzE3ZjMwMjk3ODA3NmRkZTM5YWU3ODllODA1NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxMDoyMTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jIGIvZHJpdmVycy92aG9zdC9zY3NpLmMKaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Njc2kuYwpAQCAtMjQyNiw5ICYjNDM7MjQyNiwxMCBAQCB2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLAogCWRlZmF1bHQ6CiAJCW11dGV4X2xvY2soJmFtcDt2cy0mZ3Q7ZGV2Lm11dGV4KTsKIAkJciA9IHZob3N0X2Rldl9pb2N0bCgmYW1wO3ZzLSZndDtkZXYsIGlvY3RsLCBhcmdwKTsKLQkJLyogVE9ETzogZmx1c2ggYmFja2VuZCBhZnRlciBkZXYgaW9jdGwuICovCiAJCWlmIChyID09IC1FTk9JT0NUTENNRCkKIAkJCXIgPSB2aG9zdF92cmluZ19pb2N0bCgmYW1wO3ZzLSZndDtkZXYsIGlvY3RsLCBhcmdwKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQl2aG9zdF9zY3NpX2ZsdXNoKHZzKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7dnMtJmd0O2Rldi5tdXRleCk7CiAJCXJldHVybiByOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgdmhvc3Qtc2NzaSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC9zY3NpLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIGZ1bmN0aW9uLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgY2hhbmdlIGludHJvZHVjZXMgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoKHZzKWAgKmFmdGVyKiB0aGUgYHZob3N0X2Rldl9pb2N0bGAgY2FsbCwgYnV0IG9ubHkgaWYgdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGZ1bmN0aW9uICpkaWRuJiMzOTt0KiByZXR1cm4gYC1FTk9JT0NUTENNRGAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBpb2N0bCBjb21tYW5kIGhhbmRsaW5nIGludGVyYWN0aW9uLiBMZXQgbWUgY29uZmlybSB0aGUgZnVuY3Rpb24gY2FsbHMgYW5kIHRoZSByZWFzb25zIGZvciB0aGlzIGFkZGl0aW9uYWwgY2FsbC4gCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGB2aG9zdF9zY3NpX2lvY3RsYCBhbmQgYHZob3N0X3Njc2lfZmx1c2hgIGRvIGluIG9yZGVyIHRvIGRldGVybWluZSB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGNoYW5nZS4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbWFwIHRoaXMgY2hhbmdlIHRvIHBvc3NpYmxlIFNDU0kgcmVsYXRlZCBjb21tYW5kcyBvciBzdGF0ZSBtYWNoaW5lcy4gVGhpcyB3aWxsIHJlcXVpcmUgY2hlY2tpbmcgaG93IHRoZSBpb2N0bCBjb21tYW5kIGlzIGhhbmRsZWQsIHRoZW4gaG93IHRoZSBmbHVzaCBpcyBpbXBsZW1lbnRlZC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIG1lLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSByZWFsbHkgbG9va2luZyBhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTkxOT1zdGF0aWMgaW50IHZob3N0X3Njc2lfc2V0dXBfdnFfY21kcyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgaW50IG1heF9jbWRzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzMtLypcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5NzQ6ICogQ2FsbGVkIGZyb20gdmhvc3Rfc2NzaV9pb2N0bCgpIGNvbnRleHQgdG8gd2FsayB0aGUgbGlzdCBvZiBhdmFpbGFibGVcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzUtICogdmhvc3Rfc2NzaV90cGcgd2l0aCBhbiBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVx0XHQgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDAtXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDQxOlx0LnVubG9ja2VkX2lvY3RsID0gdmhvc3Rfc2NzaV9pb2N0bCxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDItXHQuY29tcGF0X2lvY3RsXHQ9IGNvbXBhdF9wdHJfaW9jdGwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIHZob3N0LXNjc2kgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byBgdmhvc3Rfc2NzaV9pb2N0bGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBhbGwgc29ydHMgb2YgY29udHJvbCBvcGVyYXRpb25zLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGBpb2N0bGAgY2hhbmdlcyB0aGVtc2VsdmVzLCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIHNlZSBob3cgdGhpcyBwYXRjaCBhZmZlY3RzIHJlbGF0ZWQgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBvdXQgYHZob3N0X3Njc2lfZmx1c2hgLiBHaXZlbiB0aGUgY29udGV4dCwgY2hhbmdlcyB0byB0aGUgY29yZSBgaW9jdGxgIG1pZ2h0IHRyaWdnZXIgY2FzY2FkaW5nIGltcGxpY2F0aW9ucyBhbmQgcmVxdWlyZSB1cGRhdGVzIHRvIGZ1bmN0aW9ucyB0aGF0IG1hbmFnZSBjbGVhbnVwLiBVbmRlcnN0YW5kaW5nIHRoZSAmIzM0O2ZsdXNoJiMzNDsgYmVoYXZpb3IgaXMgY3JpdGljYWwgZm9yIGRhdGEgY29uc2lzdGVuY3ksIGVycm9yIGhhbmRsaW5nLCBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2ZsdXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MTg0ND1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2hhbmRsZV9raWNrKHN0cnVjdCB2aG9zdF93b3JrICp3b3JrKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTMtLyogQ2FsbGVycyBtdXN0IGhvbGQgZGV2IG11dGV4ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU0OnN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1NS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTk4MT12aG9zdF9zY3NpX3NldF9lbmRwb2ludChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4NC1cdCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjA4NTpcdHZob3N0X3Njc2lfZmx1c2godnMpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4Ni1cdHZzLVx1MDAzZXZzX3RwZyA9IHZzX3RwZztcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMTEzPXZob3N0X3Njc2lfY2xlYXJfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNzAtXHQvKiBNYWtlIHN1cmUgY21kcyBhcmUgbm90IHJ1bm5pbmcgYmVmb3JlIHRlYXJpbmcgdGhlbSBkb3duLiAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE3MTpcdHZob3N0X3Njc2lfZmx1c2godnMpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3Mi1cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjA0LVx0ICovXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjA1Olx0dmhvc3Rfc2NzaV9mbHVzaCh2cyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMjA2LVx0a2ZyZWUodnMtXHUwMDNldnNfdHBnKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYyPXZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzMS1cdFx0ZWxzZVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQzMjpcdFx0XHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzMtXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWNlbnQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgd2l0aGluIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBpbmRpY2F0ZXMgYW4gZXhwbGljaXQgZmx1c2hpbmcgbWVjaGFuaXNtIGJlaW5nIGV4cG9zZWQgdmlhIHRoZSBgaW9jdGxgIGludGVyZmFjZSBvbiBgL2Rldi92aG9zdC1zY3NpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCB0aHVzIHBvdGVudGlhbGx5IHVzYWJsZSBmcm9tIHVzZXJzcGFjZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGB2aG9zdF9zY3NpYC4gSSB3YW50IHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBhdmFpbGFibGUuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgKmhvdyogdGhpcyBpcyBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGZlYXR1cmVzIGFyZSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZz00Nj1jb25maWcgVkhPU1RfU0NTSVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Mi1cdGhlbHBcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1MzpcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTQtXHRmb3IgdXNlIHdpdGggdmlydGlvLXNjc2kgZ3Vlc3RzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkNoZWNraW5nIHRoZSBTQ1NJIFZob3N0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFZIT1NUX1NDU0kuIEkga25vdyBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyB0aGUgYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIEhvcGVmdWxseSwgdGhlIG9wdGlvbnMgYXJlIGNsZWFybHkgZG9jdW1lbnRlZCBhbmQgb3JnYW5pemVkLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcywgZGVmYXVsdHMsIGFuZCBtYXliZSBzb21lIGhlbHAgdGV4dCB0byBjbGFyaWZ5IHRoZSBwdXJwb3NlIGFuZCBiZWhhdmlvciBvZiB0aGUgYFZIT1NUX1NDU0lgIGZlYXR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxuICA0MTpcdFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICA0NDpcdFx0ICBiZSBjYWxsZWQgdmhvc3RfbmV0LlxuICA0NTpcdFxuICA0NjpcdGNvbmZpZyBWSE9TVF9TQ1NJXG4gIDQ3Olx0XHR0cmlzdGF0ZSBcJiMzNDtWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXCYjMzQ7XG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDQ5Olx0XHRzZWxlY3QgVkhPU1RcbiAgNTA6XHRcdHNlbGVjdCBTR19QT09MXG4gIDUxOlx0XHRkZWZhdWx0IG5cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXG4gIDU0Olx0XHRmb3IgdXNlIHdpdGggdmlydGlvLXNjc2kgZ3Vlc3RzXG4gIDU1Olx0XG4gIDU2Olx0Y29uZmlnIFZIT1NUX1ZTT0NLXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDt2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXCYjMzQ7XG4gIDU4Olx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG4gIDU5Olx0XHRzZWxlY3QgVkhPU1RcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgU0NTSSBWaXJ0dWFsIEhvc3QgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGlzIHJlbGllcyBvbiBhIGNvdXBsZSBvZiBrZXkgZGVwZW5kZW5jaWVzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIFJpZ2h0LCBhbmQgY2xlYXJseSBgVEFSR0VUX0NPUkVgIGlzICpkZWZpbml0ZWx5KiBuZWVkZWQsIHRoYXQmIzM5O3Mgbm9uLW5lZ290aWFibGUuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMsIHNvIG15IG5leHQgc3RlcCBpcyB0byBnbyBkaXJlY3RseSBpbnRvIHRoZSBLY29uZmlnIGFuZCBleGFtaW5lIHRoZSBgVEFSR0VUX0NPUkVgIHNldHRpbmdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIGBWSE9TVF9TQ1NJYCBtb3JlIGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEFSR0VUX0NPUkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZzozOm1lbnVjb25maWcgVEFSR0VUX0NPUkVcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFZIT1NUX1NDU0kgYW5kIFRBUkdFVF9DT1JFKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAg4oCTIHRob3NlIGFyZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBzdGFydCB3aXRoLiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGJlaGF2ZXMuIEkmIzM5O20gd29uZGVyaW5nIGlmIGB2aG9zdF9zY3NpX2ZsdXNoYCBtaWdodCBhbHNvIGJlIHVzZWZ1bCBhcyBhIGZvY3VzIHN5bWJvbCwgdGhvdWdoIEkgc2VlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLCB3aGljaCBjb3VsZCBtYWtlIGRlYnVnZ2luZyBhIGJpdCBtb3JlIGNoYWxsZW5naW5nLiBOb3csIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZGV0ZXJtaW5lIGlmIGB2aG9zdF9zY3NpX2lvY3RsYCBpcyBkZWNsYXJlZCBzdGF0aWNhbGx5IHRvby4gVGhhdCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmhvc3Rfc2NzaV9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5MTk9c3RhdGljIGludCB2aG9zdF9zY3NpX3NldHVwX3ZxX2NtZHMoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIGludCBtYXhfY21kcylcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTczLS8qXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxOTc0OiAqIENhbGxlZCBmcm9tIHZob3N0X3Njc2lfaW9jdGwoKSBjb250ZXh0IHRvIHdhbGsgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTc1LSAqIHZob3N0X3Njc2lfdHBnIHdpdGggYW4gYWN0aXZlIHN0cnVjdCB2aG9zdF9zY3NpX25leHVzXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM2MT1zdGF0aWMgbG9uZ1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjM2Mjp2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjM2My1cdFx0IHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZob3N0X3Njc2lfZm9wcyA9IHtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQwLVx0LnJlbGVhc2UgICAgICAgID0gdmhvc3Rfc2NzaV9yZWxlYXNlLFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0MTpcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQyLVx0LmNvbXBhdF9pb2N0bFx0PSBjb21wYXRfcHRyX2lvY3RsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXYWl0LCBpc24mIzM5O3QgdGhhdCBzdGF0aWM/IElmIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgbWVhbmluZyBpdCB3b3VsZG4mIzM5O3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCByaWdodD8mIzM0Oy4gQnV0IHRoZW4sIEkgcmVtZW1iZXIgc2VlaW5nIGl0IHVzZWQgaW4gYHZob3N0X3Njc2lfZm9wc2AgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBBaCwgdGhhdCBzZXR0bGVzIGl0OyBiZWluZyBhIGZ1bmN0aW9uIHBvaW50ZXIgbWVhbnMgaXQgKndvbiYjMzk7dCogYmUgaW5saW5lZCBhbmQgaXQgKndpbGwqIGhhdmUgaXRzIG93biBzeW1ib2wgYWRkcmVzcy4gR29vZC4KCkJ1dCB0aGVuIEkgcmVjYWxsIHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb246ICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zJiMzNDsuICp2aG9zdF9zY3NpX2lvY3RsKiBpcyBhIGZpbGUgb3BlcmF0aW9ucyBjYWxsYmFjayB0aG91Z2gsIHdoaWNoIG1ha2VzIGl0IGFuIEFQSSBlbnRyeXBvaW50LCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSAqbm90KiBpbmxpbmVkLiBTbywgaXQgYXBwZWFycyB0byBmaXQgdGhlIHJlY29tbWVuZGF0aW9uLCBtYWtpbmcgaXQgdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGZvciB1c2UuCgpUaGUgbmV4dCBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSAqbm9uKi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdlIGNvdWxkIGxldmVyYWdlPyBKdXN0IHRvIGJlIHN1cmUgd2UgYXJlIGFkaGVyaW5nIHRvIHRoZSBzdHlsZSBpbnN0cnVjdGlvbnMsIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIGluc2lkZSBvZiBgZHJpdmVycy92aG9zdC9zY3NpLmNgIHRvIHNlZSBpZiBhbnkgb3RoZXIgZnVuY3Rpb24gd291bGQgYmV0dGVyIGZpdCB0aGUgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZob3N0X3Njc2lfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmM9MzMyPXN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCAqXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzozMzM6dmhvc3Rfc2NzaV9nZXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzQte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTUzOD1zdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfZXZ0ICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy01NDAtXHRcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTY5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTcxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz03NDQ9c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo3NDU6dmhvc3Rfc2NzaV9nZXRfY21kKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCB1NjQgc2NzaV90YWcpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy03NDYte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTgwMD1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo4MDE6dmhvc3Rfc2NzaV9tYXBfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAyLVx0XHQgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9ODY2PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjg2Nzp2aG9zdF9zY3NpX2NhbGNfc2dscyhzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsIHNpemVfdCBieXRlcywgaW50IG1heF9zZ2xzKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtODY4LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04ODY9c3RhdGljIGludFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODg3OnZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy04ODgtXHRcdFx0ICAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo5NDc6dmhvc3Rfc2NzaV9tYXBfaW92X3RvX3NnbChzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCwgc3RydWN0IGlvdl9pdGVyICppdGVyLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtOTQ4LVx0XHRcdCAgc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZSwgaW50IHNnX2NvdW50LCBib29sIGlzX3Byb3QpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9OTY1PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjk2Njp2aG9zdF9zY3NpX21hcGFsKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjctXHRcdCBzaXplX3QgcHJvdF9ieXRlcywgc3RydWN0IGlvdl9pdGVyICpwcm90X2l0ZXIsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTA3NT1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA3Njp2aG9zdF9zY3NpX3NlbmRfc3RhdHVzKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LVx0XHQgICAgICAgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YywgdTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMDE9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExMDI6dmhvc3Rfc2NzaV9zZW5kX2JhZF90YXJnZXQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwMy1cdFx0XHQgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTM5PXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExNDA6dmhvc3Rfc2NzaV9nZXRfZGVzYyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTE0MS1cdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTE5Mz1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTk0OnZob3N0X3Njc2lfY2hrX3NpemUoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTk1LXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjExPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyMTI6dmhvc3Rfc2NzaV9nZXRfcmVxKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTIxMy1cdFx0ICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICoqdHBncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQyPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyNDM6dmhvc3Rfc2NzaV9zZXR1cF9yZXNwX2lvdnMoc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZlYyAqaW5faW92cyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyNDQtXHRcdFx0ICAgdW5zaWduZWQgaW50IGluX2lvdnNfY250KVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEyODM9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEyODQ6dmhvc3Rfc2NzaV9oYW5kbGVfdnEoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODUte1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE1MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1Mjc6dmhvc3Rfc2NzaV9zZW5kX3RtZl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTI4LVx0XHRcdCBpbnQgaW5faW92cywgaW50IHZxX2Rlc2MsIHN0cnVjdCBpb3ZlYyAqcmVzcF9pb3YsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTU4Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTU4NDp2aG9zdF9zY3NpX2hhbmRsZV90bWYoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcgKnRwZyxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1ODUtXHRcdCAgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NDQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2NDU6dmhvc3Rfc2NzaV9zZW5kX2FuX3Jlc3Aoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY0Ni1cdFx0XHRzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xNjY2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjY3OnZob3N0X3Njc2lfY3RsX2hhbmRsZV92cShzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY2OC17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTc5OD1zdGF0aWMgdm9pZFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc5OTp2aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODAwLVx0XHQgICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsIHN0cnVjdCBzZV9sdW4gKmx1bixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTgwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5ODE6dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk4Mi1cdFx0XHRzdHJ1Y3Qgdmhvc3Rfc2NzaV90YXJnZXQgKnQpXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjExMj1zdGF0aWMgaW50XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTEzOnZob3N0X3Njc2lfY2xlYXJfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjExNC1cdFx0XHQgIHN0cnVjdCB2aG9zdF9zY3NpX3RhcmdldCAqdClcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVx0XHQgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0ODA6dmhvc3Rfc2NzaV9kb19wbHVnKHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqdHBnLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ4MS1cdFx0ICBzdHJ1Y3Qgc2VfbHVuICpsdW4sIGJvb2wgcGx1Zylcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNzc5PXN0YXRpYyBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI3ODA6dmhvc3Rfc2NzaV9tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzgxLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yODM1PXN0YXRpYyBzdHJ1Y3Qgc2Vfd3duICpcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MzY6dmhvc3Rfc2NzaV9tYWtlX3Rwb3J0KHN0cnVjdCB0YXJnZXRfZmFicmljX2NvbmZpZ2ZzICp0ZixcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MzctXHRcdCAgICAgc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkwOD1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjkwOTp2aG9zdF9zY3NpX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjkxMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxOTEKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUG90ZW50aWFsIE5vbi1TdGF0aWMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc2NvcGUgaGVyZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueXRoaW5nIGx1cmtpbmcgaW4gdGhpcyBjb2RlYmFzZSB0aGF0JiMzOTtzIG5vdC4uLndlbGwsICpzdGF0aWMqLiBBbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGluc3RhbmNlIHZhcmlhYmxlcyB1c2VkIGJ5IG1ldGhvZHMgSSBuZWVkIHRvIHNjcnV0aW5pemUsIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIG11dGFibGUgc3RhdGUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBrbm93IHRoZSBkZWdyZWUgb2YgcmVsaWFuY2Ugb24gb2JqZWN0LWxldmVsIGRhdGEuIEl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIGluIGF2b2lkaW5nIHBvdGVudGlhbCBnb3RjaGFzIGRvd24gdGhlIGxpbmUuIFRoYXQgd2lsbCBncmVhdGx5IGluZmx1ZW5jZSB0aGUgc3Vic2VxdWVudCBzdGVwcy4gSWYgaXQmIzM5O3MgYWxsIHN0YXRpYywgdGhlbiBJIGNhbiBrZWVwIGl0IGluIG15IGhlYWQgZWFzaWVyIGFuZCBtb3ZlIG9uLiBJZiBub3QsIEkgbmVlZCB0byBzdGFydCBza2V0Y2hpbmcgb3V0IHRoZSByZWxhdGlvbnNoaXBzIG5vdywgYmVmb3JlIHRoaW5ncyBnZXQgdW53aWVsZHkuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXCYjMzQ7U2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXHRpbnQgaGVhZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIwOQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lgIE1vZHVsZSoqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgYHZob3N0X3Njc2lfaW9jdGxgIGlzIHRoZSBzb2xlIGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgc2Nhbm5pbmcgdGhyb3VnaCB0aGlzLi4uIHdoYXQgYWJvdXQgYHZob3N0X3Njc2lfZmx1c2hgPyBJdCBsb29rcyB0byBiZSBzdGF0aWMuIEhtbSwgdGhhdCBjaGFuZ2VzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZSwgYmVjYXVzZSB0aGUgc2NvcGUgaXMgbXVjaCBtb3JlIGxpbWl0ZWQuIE5vdyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIG9yIGRlcGVuZCBvbiBgdmhvc3Rfc2NzaV9pb2N0bGAuIExldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgdGhpcyBjb2RlIGluIHJlbGF0aW9uIHRvIG90aGVycywgYW5kIGVzdGFibGlzaCB3aGF0IHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGNvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiB2aG9zdF9zY3NpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXCYjMzQ7U2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDQ6c3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMi1cdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNDYtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVx0LyogUG9pbnRlciB0byBUQ00gc2Vzc2lvbiBmb3IgSV9UIE5leHVzICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTUyOnN0cnVjdCB2aG9zdF9zY3NpX3RwZyB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMTc2LVx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg1LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXHQvKiBldmVudCB0byBiZSBzZW50IHRvIGd1ZXN0ICovXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXCYjMzQ7U2V0IHRoZSBtYXggbnVtYmVyIG9mIElPIHZpcnRxdWV1ZXMgYSB2aG9zdCBzY3NpIGRldmljZSBjYW4gc3VwcG9ydC4gVGhlIGRlZmF1bHQgaXMgMTI4LiBUaGUgbWF4IGlzIDEwMjQuXCYjMzQ7KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIxNjpzdHJ1Y3Qgdmhvc3Rfc2NzaV92aXJ0cXVldWUge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1Ni1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVx0c3RydWN0IHZob3N0X3dvcmsgdndvcms7XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MjgwOnN0cnVjdCB2aG9zdF9zY3NpX2N0eCB7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXHRpbnQgaGVhZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMzcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSB2aG9zdF9zY3NpX2lvY3RsIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxvY2F0ZSB0aGUgYHZob3N0X3Njc2lfaW9jdGxgIGZ1bmN0aW9uLCBhbmQgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgZmlsZS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHR5cGUgb2YgZnVuY3Rpb24sIG15IGd1dCB0ZWxscyBtZSBpdCYjMzk7cyBwcm9iYWJseSBzdGF0aWMuIExldCYjMzk7cyBjb25maXJtIHRoYXQgcXVpY2tseSwgYnV0IGFsc28sIGxldCYjMzk7cyBub3QgZ2V0IHR1bm5lbCB2aXNpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzICphY2Nlc3NlZCouIFNpbmNlIGl0IHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgaW50ZXJuYWwsIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBlaXRoZXIgYW4gYEVYUE9SVF9TWU1CT0xgIG1hY3JvLCBpbmRpY2F0aW5nIGl0IGlzIG1hZGUgYXZhaWxhYmxlIG91dHNpZGUgb2YgdGhlIG1vZHVsZSwgb3IgcG90ZW50aWFsbHksIGEgYG1vZHVsZV9pbml0YCBjYWxsLCBpbmRpY2F0aW5nIGl0JiMzOTtzIGJyb3VnaHQgaW50byB0aGUga2VybmVsIGF0IG1vZHVsZSBsb2FkLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9zY3NpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgSW52ZXN0aWdhdGlvbjogSW5pdGlhbCBBc3Nlc3NtZW50KioKClJpZ2h0LCBzbywgdGhlIGluaXRpYWwgc2NhbiByZXZlYWxzIGFic29sdXRlbHkgKm5vKiBleHBvcnRlZCBzeW1ib2xzLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGFuZCBzdWdnZXN0cyBhIGZldyBwb3NzaWJsZSBzY2VuYXJpb3MuIFRoZSBtb3N0IG9idmlvdXMsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSYjMzk7ZCBsb29rLCBpcyBhdCB0aGUgYG1vZHVsZV9pbml0YCBtYWNyby4gIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgbW9kdWxlIGlzIGJlaW5nIGxvYWRlZCBhbmQgd2hhdCB0aGUgZW50cnkgcG9pbnQgaXMuICBObyBleHBvcnRlZCBzeW1ib2xzIGNvdWxkIG1lYW4gZXZlcnl0aGluZyBpcyBpbnRlbnRpb25hbGx5IGhpZGRlbiwgaGFuZGxlZCBpbnRlcm5hbGx5LCBvciBwZXJoYXBzIHNvbWV0aGluZyBpcyBnb2luZyB3cm9uZyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIGBtb2R1bGVfaW5pdGAgdG8gY29uZmlybSB0aGUgbG9hZGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTk0LW1vZHVsZV9leGl0KHZob3N0X3Njc2lfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODExCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgdmhvc3Rfc2NzaSBJbml0aWFsaXphdGlvbiBhbmQgRXhpdCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHZob3N0LXNjc2kgaW1wbGVtZW50YXRpb24gaW4gZGV0YWlsLiBNeSBmb2N1cyByaWdodCBub3cgaXMgcGlucG9pbnRpbmcgdGhlIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biByb3V0aW5lcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGB2aG9zdF9zY3NpX2luaXRgIGFuZCBgdmhvc3Rfc2NzaV9leGl0YC4gSSB3YW50IHRvIHNlZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGJyb3VnaHQgdXAgYW5kIGhvdyBpdCBncmFjZWZ1bGx5IGV4aXRzLiBBcmUgd2UgdGFsa2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RyYXRpb24gd2l0aCBvdGhlciBzdWJzeXN0ZW1zLCBvciBwZXJoYXBzIHNvbWUgc3BlY2lmaWMgc2V0dXAgcmVsYXRlZCB0byB0aGUgU0NTSSB0cmFuc3BvcnQgbGF5ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIGFyZSBiZWluZyBzZXQgdXAsIHRvcm4gZG93biBhbmQgd2hlbi4gSSBoYXZlIGEgZmVlbGluZyB0aGVzZSBhcmUgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBjb3JlIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF9zY3NpX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNC1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA2LVx0XHRcdFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0ICpvbGRfaW5mbGlnaHRbXSlcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xODU0PXN0YXRpYyB2b2lkIHZob3N0X3Njc2lfZmx1c2goc3RydWN0IHZob3N0X3Njc2kgKnZzKVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTgtXHQvKiBJbml0IG5ldyBpbmZsaWdodCBhbmQgcmVtZW1iZXIgdGhlIG9sZCBpbmZsaWdodCAqL1xuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1OTpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXHUwMDNlb2xkX2luZmxpZ2h0KTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NjAtXG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjI3MT1zdGF0aWMgaW50IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZilcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI3LVxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjMyODpcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgTlVMTCk7XG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI5LVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI5MjM9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHZob3N0X3Njc2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5NTktXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTYwOnN0YXRpYyBpbnQgX19pbml0IHZob3N0X3Njc2lfaW5pdCh2b2lkKVxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2MS17XG4tLVxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjk5Mj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjk5Mzptb2R1bGVfaW5pdCh2aG9zdF9zY3NpX2luaXQpO1xuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU4NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHZob3N0LXNjc2lgIElvY3RsIEludGVyZmFjZSBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdmhvc3Qtc2NzaWAgc2V0dXAuIFRoZSBvbmx5IGZ1bmN0aW9ucyB0aGF0IHNlZW0gaW50ZXJlc3RpbmcgaW4gdGhlIGNvZGViYXNlIGFyZSBzdGF0aWMuIEJ1dCB3YWl0LCBgdmhvc3Rfc2NzaV9pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBpb2N0bHMgb24gYC9kZXYvdmhvc3Qtc2NzaWAuIFBlcmZlY3QhIFNpbmNlIGl0JiMzOTtzIHN0YXRpYywgSSBjYW4ganVzdCB1c2UgaXQgYXMgbXkgZm9jdXMgc3ltYm9sLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCBldmVuIGlmIGl0JiMzOTtzIG5vdCBpbmxpbmVkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzbiYjMzk7dCBpbmxpbmVkLCBpdCBpc24mIzM5O3QsIHNvIHRoYXQmIzM5O3MgZ29vZCEKCk5vdywganVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYFZIT1NUX1NDU0lgIGRlcGVuZHMgb24gYFRBUkdFVF9DT1JFYCBhbmQgYEVWRU5URkRgLiBgRVZFTlRGRGAgaXMgcHJldHR5IHN0YW5kYXJkLCB1c3VhbGx5IGVuYWJsZWQsIHNvIEkmIzM5O20gbm90IHRvbyB3b3JyaWVkIGFib3V0IHRoYXQuIGBUQVJHRVRfQ09SRWAgc2VlbXMgdG8gbWFwIHRvIGBDT05GSUdfVEFSR0VUX0NPUkVgIOKAkyBnb29kIHRvIGtub3cuIFNvLCBJIG5lZWQgdG8gYWRkIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCB0byB0aGUgY29uZmlndXJhdGlvbi4KCkkgdGhvdWdodCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHZob3N0X3Njc2lfaW9jdGxgLiBJdCBtaWdodCBiZSBpbmxpbmVkLiBMZXQmIzM5O3Mgc3RpY2sgd2l0aCBgdmhvc3Rfc2NzaV9pb2N0bGAgZm9yIG5vdy4gU2ltcGxlciBpcyBiZXR0ZXIuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBhZ2Fpbi4gQWgsIHJpZ2h0LiBJdCYjMzk7cyBhZGRpbmcgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCBhZnRlciB0aGUgYHZob3N0X2Rldl9pb2N0bGAgY2FsbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCYjMzk7cyBmbHVzaGluZyB0aGUgYmFja2VuZCBhZnRlciBhIGRldmljZSBpb2N0bC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBhbiBpb2N0bCBvbiBgL2Rldi92aG9zdC1zY3NpYC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIEkgY2FuIGRlZmluaXRlbHkgZnV6eiBpdC4gYFdvcnRoRnV6emluZz10cnVlYC4KClNvLCB0aGUgZm9jdXMgc3ltYm9sIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gQW5kIHRoZSBlbmFibGVkIGNvbmZpZ3MgYXJlIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgYnV0IEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfU0NTSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9MzQ9Y29uZmlnIFZIT1NUX05FVFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00NS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo0Njpjb25maWcgVkhPU1RfU0NTSVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7VkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjcwNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVwZW5kZW5jeSBDaGVjazogYFRBUkdFVF9DT1JFYCoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgY29yZSBvZiBpdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBydW5uaW5nIGEgdGhvcm91Z2ggY2hlY2sgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZSBzY2FuOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmRlcHRoKiBvZiB0aGUgZGVwZW5kZW5jeSBncmFwaC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGFueSBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgbWlnaHQgYmUgbHVya2luZyB3aXRoaW4gdGhlIGRlcGVuZGVuY2llcyBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBhbGlnbnMgd2l0aCBteSBzdGFuZGFyZHMgYW5kIGJlc3QgcHJhY3RpY2VzLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGF0IGBUQVJHRVRfQ09SRWAgcmVsaWVzIHVwb24sIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGFuYWx5emUgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEkmIzM5O20gbG9va2luZyBmb3IgYW55IHJlZCBmbGFnczogZGVwcmVjYXRlZCB2ZXJzaW9ucywgbGlicmFyaWVzIHdpdGgga25vd24gZXhwbG9pdHMsIG9yIGNvbXBvbmVudHMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIFRoaXMgaXMgYSBjcml0aWNhbCBmaXJzdCBzdGVwLCBhcyBhbnkgaXNzdWVzIGF0IHRoaXMgbGV2ZWwgY291bGQgcmlwcGxlIG91dHdhcmRzLCBpbXBhY3RpbmcgdGhlIGVudGlyZSBzeXN0ZW0uIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgc29saWQgZm91bmRhdGlvbi4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTA6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRBUkdFVF9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy90YXJnZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEwOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDI1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBgVEFSR0VUX0NPUkVgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy90YXJnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFRBUkdFVF9DT1JFYCBkZWZpbml0aW9uLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIHRhcmdldCBkZXZpY2UsIGxpa2VseSBzb21lIGZ1bmRhbWVudGFsIGZlYXR1cmVzIG9yIGFyY2hpdGVjdHVyZSBjaG9pY2VzLiBUaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIHRoZSBidWlsZCBzeXN0ZW07IGl0JiMzOTtzIHdoZXJlIHRoZSB1c2VyIHNlbGVjdHMgdGhlIHNwZWNpZmljIG9wdGlvbnMgdGhhdCBkZWZpbmUgd2hhdCBnZXRzIGJ1aWx0IGludG8gdGhlIGZpbmFsIGZpcm13YXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgbWF5YmUgc29tZSBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgVEFSR0VUX0NPUkVgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhpcyBvcHRpb24gYW5kIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSwgb3IgZXZlbiBicm9hZGVyIHN5c3RlbS1sZXZlbCBjaG9pY2VzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGNvbmZsaWN0cyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD8gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBkZXNpZ24gZGVjaXNpb25zIGFyZSBleHBvc2VkLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGhhdmUgdG8gd29yayB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzU1MwoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpczoKCioqQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgVEFSR0VUX0NPUkVgIGlzIGNsZWFybHkgYSBrZXkgY29tcG9uZW50LCBhbmQgaXQmIzM5O3MgY29udGluZ2VudCB1cG9uIGBCTE9DS2AsIHdoaWNoIGlzIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCBhcmUgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCwgZ2l2ZW4gdGhhdCB0aGVzZSBzZWVtIGNlbnRyYWwgdG8gdGhlIGRlc2lnbi4KCkxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY3kgdHJlZSwgSSBzZWUgdGhhdCBgVkhPU1RfU0NTSWAgYWxzbyBoYXMgYSBkZXBlbmRlbmN5IG9uIGBUQVJHRVRfQ09SRWAgKmFuZCogYEVWRU5URkRgLiBBbmQgYEVWRU5URkRgIGlzIHR5cGljYWxseSBlbmFibGVkLCB3aGljaCBJJiMzOTtkIGV4cGVjdC4KCkkgdGhpbmsgSSYjMzk7dmUgZ290IGVub3VnaCBpbmZvcm1hdGlvbi4gVGltZSB0byBicmluZyB1cCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfU0NTSSYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3Njc2lfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjQ2LjY2MTM2NTM1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDk5NzgwODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjQ2LjY2MTM3ODA3NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1OTA5MDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUyYzljMzBmODkzMTdmMzAyOTc4MDc2ZGRlMzlhZTc4OWU4MDU2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMDoyMTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuaW5kZXggOWExMjUzYjlkOGM1MGUuLjM5MzdlYjUwMTMyNGFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXFxuKysrIGIvZHJpdmVycy92aG9zdC9zY3NpLmNcXG5AQCAtMjQyNiw5ICsyNDI2LDEwIEBAIHZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbiBcXHRcXHRyID0gdmhvc3RfZGV2X2lvY3RsKFxcdTAwMjZ2cy1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuLVxcdFxcdC8qIFRPRE86IGZsdXNoIGJhY2tlbmQgYWZ0ZXIgZGV2IGlvY3RsLiAqL1xcbiBcXHRcXHRpZiAociA9PSAtRU5PSU9DVExDTUQpXFxuIFxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2dnMtXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbiBcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo0Ny4wMzc5MzE4NDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1OTcyMzIwNTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9TQ1NJXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3Njc2lfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCBpbiB0aGUgaW9jdGwgaGFuZGxlciBmb3IgYC9kZXYvdmhvc3Qtc2NzaWAuIFRoaXMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBtb2RpZmllcyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIHZob3N0LXNjc2kgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4ZTJjOWMzMGY4OTMxN2YzMDI5NzgwNzZkZGUzOWFlNzg5ZTgwNTYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTA6MjE6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Njc2kuYyBiL2RyaXZlcnMvdmhvc3Qvc2NzaS5jXG5pbmRleCA5YTEyNTNiOWQ4YzUwZS4uMzkzN2ViNTAxMzI0YWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuY1xuKysrIGIvZHJpdmVycy92aG9zdC9zY3NpLmNcbkBAIC0yNDI2LDkgKzI0MjYsMTAgQEAgdmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbiBcdGRlZmF1bHQ6XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2dnMtXHUwMDNlZGV2Lm11dGV4KTtcbiBcdFx0ciA9IHZob3N0X2Rldl9pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbi1cdFx0LyogVE9ETzogZmx1c2ggYmFja2VuZCBhZnRlciBkZXYgaW9jdGwuICovXG4gXHRcdGlmIChyID09IC1FTk9JT0NUTENNRClcbiBcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2dnMtXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG4rXHRcdGVsc2VcbitcdFx0XHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZzLVx1MDAzZWRldi5tdXRleCk7XG4gXHRcdHJldHVybiByO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NDcuMDM3OTMyNzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NzUwODM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZob3N0LXNjc2kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaCh2cylgICphZnRlciogdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGNhbGwsIGJ1dCBvbmx5IGlmIHRoZSBgdmhvc3RfZGV2X2lvY3RsYCBmdW5jdGlvbiAqZGlkbid0KiByZXR1cm4gYC1FTk9JT0NUTENNRGAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGlvY3RsIGNvbW1hbmQgaGFuZGxpbmcgaW50ZXJhY3Rpb24uIExldCBtZSBjb25maXJtIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIHJlYXNvbnMgZm9yIHRoaXMgYWRkaXRpb25hbCBjYWxsLiBcblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgdmhvc3Rfc2NzaV9pb2N0bGAgYW5kIGB2aG9zdF9zY3NpX2ZsdXNoYCBkbyBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2UuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIG1hcCB0aGlzIGNoYW5nZSB0byBwb3NzaWJsZSBTQ1NJIHJlbGF0ZWQgY29tbWFuZHMgb3Igc3RhdGUgbWFjaGluZXMuIFRoaXMgd2lsbCByZXF1aXJlIGNoZWNraW5nIGhvdyB0aGUgaW9jdGwgY29tbWFuZCBpcyBoYW5kbGVkLCB0aGVuIGhvdyB0aGUgZmx1c2ggaXMgaW1wbGVtZW50ZWQuIFRoaXMgaXMgcHJldHR5IHN0YW5kYXJkIGZvciBtZSwgc28gbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlJ3JlIHJlYWxseSBsb29raW5nIGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo1MC4zMzU0NDI2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxNjAxOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmhvc3Rfc2NzaV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0xOTE5PXN0YXRpYyBpbnQgdmhvc3Rfc2NzaV9zZXR1cF92cV9jbWRzKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBpbnQgbWF4X2NtZHMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTczLS8qXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTk3NDogKiBDYWxsZWQgZnJvbSB2aG9zdF9zY3NpX2lvY3RsKCkgY29udGV4dCB0byB3YWxrIHRoZSBsaXN0IG9mIGF2YWlsYWJsZVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5NzUtICogdmhvc3Rfc2NzaV90cGcgd2l0aCBhbiBhY3RpdmUgc3RydWN0IHZob3N0X3Njc2lfbmV4dXNcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjE9c3RhdGljIGxvbmdcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMzYyOnZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjM2My1cXHRcXHQgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjQzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB2aG9zdF9zY3NpX2ZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDQwLVxcdC5yZWxlYXNlICAgICAgICA9IHZob3N0X3Njc2lfcmVsZWFzZSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDQxOlxcdC51bmxvY2tlZF9pb2N0bCA9IHZob3N0X3Njc2lfaW9jdGwsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0Mi1cXHQuY29tcGF0X2lvY3RsXFx0PSBjb21wYXRfcHRyX2lvY3RsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMTo1MC4zOTI2MDc3NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgzODM3MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB2aG9zdC1zY3NpIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyB0byBgdmhvc3Rfc2NzaV9pb2N0bGAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIGFsbCBzb3J0cyBvZiBjb250cm9sIG9wZXJhdGlvbnMuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYGlvY3RsYCBjaGFuZ2VzIHRoZW1zZWx2ZXMsIGl0J3MgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSB0byBzZWUgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyByZWxhdGVkIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgb3V0IGB2aG9zdF9zY3NpX2ZsdXNoYC4gR2l2ZW4gdGhlIGNvbnRleHQsIGNoYW5nZXMgdG8gdGhlIGNvcmUgYGlvY3RsYCBtaWdodCB0cmlnZ2VyIGNhc2NhZGluZyBpbXBsaWNhdGlvbnMgYW5kIHJlcXVpcmUgdXBkYXRlcyB0byBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgY2xlYW51cC4gVW5kZXJzdGFuZGluZyB0aGUgXCJmbHVzaFwiIGJlaGF2aW9yIGlzIGNyaXRpY2FsIGZvciBkYXRhIGNvbnNpc3RlbmN5LCBlcnJvciBoYW5kbGluZywgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjUzLjA3NjQ0NjUyNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ1MzEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpX2ZsdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE4NDQ9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9oYW5kbGVfa2ljayhzdHJ1Y3Qgdmhvc3Rfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTMtLyogQ2FsbGVycyBtdXN0IGhvbGQgZGV2IG11dGV4ICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg1NDpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODU1LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5ODE9dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjA4NC1cXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMDg1OlxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIwODYtXFx0dnMtXFx1MDAzZXZzX3RwZyA9IHZzX3RwZztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxMTM9dmhvc3Rfc2NzaV9jbGVhcl9lbmRwb2ludChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTcwLVxcdC8qIE1ha2Ugc3VyZSBjbWRzIGFyZSBub3QgcnVubmluZyBiZWZvcmUgdGVhcmluZyB0aGVtIGRvd24uICovXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE3MTpcXHR2aG9zdF9zY3NpX2ZsdXNoKHZzKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTcyLVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjIwNC1cXHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMjA1OlxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIyMDYtXFx0a2ZyZWUodnMtXFx1MDAzZXZzX3RwZyk7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYyPXZob3N0X3Njc2lfaW9jdGwoc3RydWN0IGZpbGUgKmYsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDMxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDMyOlxcdFxcdFxcdHZob3N0X3Njc2lfZmx1c2godnMpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cy1cXHUwMDNlZGV2Lm11dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTMuMTMyOTAzMzQyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxMTM0OTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSZWNlbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBjYWxsIHRvIGB2aG9zdF9zY3NpX2ZsdXNoYCB3aXRoaW4gdGhlIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgaW5kaWNhdGVzIGFuIGV4cGxpY2l0IGZsdXNoaW5nIG1lY2hhbmlzbSBiZWluZyBleHBvc2VkIHZpYSB0aGUgYGlvY3RsYCBpbnRlcmZhY2Ugb24gYC9kZXYvdmhvc3Qtc2NzaWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBzdHJhaWdodGZvcndhcmQ7IGl0J3MgcmVhY2hhYmxlIGFuZCB0aHVzIHBvdGVudGlhbGx5IHVzYWJsZSBmcm9tIHVzZXJzcGFjZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGB2aG9zdF9zY3NpYC4gSSB3YW50IHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBiZSBlbmFibGVkIGFuZCBhdmFpbGFibGUuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgKmhvdyogdGhpcyBpcyBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGZlYXR1cmVzIGFyZSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIxOjU2LjA0NDI1NDkyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUxODU3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aG9zdF9zY3NpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9NDY9Y29uZmlnIFZIT1NUX1NDU0lcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Mi1cXHRoZWxwXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjUzOlxcdFNheSBNIGhlcmUgdG8gZW5hYmxlIHRoZSB2aG9zdF9zY3NpIFRDTSBmYWJyaWMgbW9kdWxlXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU0LVxcdGZvciB1c2Ugd2l0aCB2aXJ0aW8tc2NzaSBndWVzdHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTYuMTAwNzc2ODk5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNDE1NTkzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqQ2hlY2tpbmcgdGhlIFNDU0kgVmhvc3QgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBWSE9TVF9TQ1NJLiBJIGtub3cgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQncyB3aGF0LiBIb3BlZnVsbHksIHRoZSBvcHRpb25zIGFyZSBjbGVhcmx5IGRvY3VtZW50ZWQgYW5kIG9yZ2FuaXplZC4gSSBleHBlY3QgdG8gZmluZCBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgbWF5YmUgc29tZSBoZWxwIHRleHQgdG8gY2xhcmlmeSB0aGUgcHVycG9zZSBhbmQgYmVoYXZpb3Igb2YgdGhlIGBWSE9TVF9TQ1NJYCBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTkuMDM0OTM2NDA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBndWVzdCBuZXR3b3JraW5nIHdpdGggdmlydGlvX25ldC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdmlydGlvX25ldFxcbiAgNDE6XFx0XFx0ICBtb2R1bGUgaXRzZWxmIHdoaWNoIG5lZWRzIHRvIGJlIGxvYWRlZCBpbiBndWVzdCBrZXJuZWwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXFxuICA0NDpcXHRcXHQgIGJlIGNhbGxlZCB2aG9zdF9uZXQuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBWSE9TVF9TQ1NJXFxuICA0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiVkhPU1RfU0NTSSBUQ00gZmFicmljIGRyaXZlclxcXCJcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkUgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbiAgNDk6XFx0XFx0c2VsZWN0IFZIT1NUXFxuICA1MDpcXHRcXHRzZWxlY3QgU0dfUE9PTFxcbiAgNTE6XFx0XFx0ZGVmYXVsdCBuXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHRTYXkgTSBoZXJlIHRvIGVuYWJsZSB0aGUgdmhvc3Rfc2NzaSBUQ00gZmFicmljIG1vZHVsZVxcbiAgNTQ6XFx0XFx0Zm9yIHVzZSB3aXRoIHZpcnRpby1zY3NpIGd1ZXN0c1xcbiAgNTU6XFx0XFxuICA1NjpcXHRjb25maWcgVkhPU1RfVlNPQ0tcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJ2aG9zdCB2aXJ0aW8tdnNvY2sgZHJpdmVyXFxcIlxcbiAgNTg6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUUyBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuICA1OTpcXHRcXHRzZWxlY3QgVkhPU1RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjE6NTkuMDM1MDg0ODM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzk4MjQ3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBTQ1NJIFZpcnR1YWwgSG9zdCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHdvcmtpbmcgd2l0aCBpcyBgVkhPU1RfU0NTSWAuIFN0cmFpZ2h0IGF3YXksIEkga25vdyB0aGlzIHJlbGllcyBvbiBhIGNvdXBsZSBvZiBrZXkgZGVwZW5kZW5jaWVzOiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIFJpZ2h0LCBhbmQgY2xlYXJseSBgVEFSR0VUX0NPUkVgIGlzICpkZWZpbml0ZWx5KiBuZWVkZWQsIHRoYXQncyBub24tbmVnb3RpYWJsZS4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgc28gbXkgbmV4dCBzdGVwIGlzIHRvIGdvIGRpcmVjdGx5IGludG8gdGhlIEtjb25maWcgYW5kIGV4YW1pbmUgdGhlIGBUQVJHRVRfQ09SRWAgc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gYFZIT1NUX1NDU0lgIG1vcmUgZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjAxLjc3NDkxMTUyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4OTQ3ODI0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWctMi1cXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjowNC45NjQzOTU4MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NjQwNjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgVkhPU1RfU0NTSSBhbmQgVEFSR0VUX0NPUkUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAg4oCTIHRob3NlIGFyZSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBzdGFydCB3aXRoLiBUaGUga2V5IGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGB2aG9zdF9zY3NpX2lvY3RsYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGJlaGF2ZXMuIEknbSB3b25kZXJpbmcgaWYgYHZob3N0X3Njc2lfZmx1c2hgIG1pZ2h0IGFsc28gYmUgdXNlZnVsIGFzIGEgZm9jdXMgc3ltYm9sLCB0aG91Z2ggSSBzZWUgaXQncyBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggY291bGQgbWFrZSBkZWJ1Z2dpbmcgYSBiaXQgbW9yZSBjaGFsbGVuZ2luZy4gTm93LCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGRldGVybWluZSBpZiBgdmhvc3Rfc2NzaV9pb2N0bGAgaXMgZGVjbGFyZWQgc3RhdGljYWxseSB0b28uIFRoYXQgd2lsbCBtYWtlIGl0IGVhc2llciB0byBkZWFsIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjowOC4wNTA4MDQxNjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk5NzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9MTkxOT1zdGF0aWMgaW50IHZob3N0X3Njc2lfc2V0dXBfdnFfY21kcyhzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgaW50IG1heF9jbWRzKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTk3My0vKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5NzQ6ICogQ2FsbGVkIGZyb20gdmhvc3Rfc2NzaV9pb2N0bCgpIGNvbnRleHQgdG8gd2FsayB0aGUgbGlzdCBvZiBhdmFpbGFibGVcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xOTc1LSAqIHZob3N0X3Njc2lfdHBnIHdpdGggYW4gYWN0aXZlIHN0cnVjdCB2aG9zdF9zY3NpX25leHVzXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzYxPXN0YXRpYyBsb25nXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjM2Mjp2aG9zdF9zY3NpX2lvY3RsKHN0cnVjdCBmaWxlICpmLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIzNjMtXFx0XFx0IHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI0Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmhvc3Rfc2NzaV9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ0MC1cXHQucmVsZWFzZSAgICAgICAgPSB2aG9zdF9zY3NpX3JlbGVhc2UsXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ0MTpcXHQudW5sb2NrZWRfaW9jdGwgPSB2aG9zdF9zY3NpX2lvY3RsLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0NDItXFx0LmNvbXBhdF9pb2N0bFxcdD0gY29tcGF0X3B0cl9pb2N0bCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MDguMTA4MzA3NzY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTk4NTgwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB2aG9zdF9zY3NpX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0LCBpc24ndCB0aGF0IHN0YXRpYz8gSWYgaXQncyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBjb3VsZCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgbWVhbmluZyBpdCB3b3VsZG4ndCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MsIHJpZ2h0P1wiLiBCdXQgdGhlbiwgSSByZW1lbWJlciBzZWVpbmcgaXQgdXNlZCBpbiBgdmhvc3Rfc2NzaV9mb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIEFoLCB0aGF0IHNldHRsZXMgaXQ7IGJlaW5nIGEgZnVuY3Rpb24gcG9pbnRlciBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQgYW5kIGl0ICp3aWxsKiBoYXZlIGl0cyBvd24gc3ltYm9sIGFkZHJlc3MuIEdvb2QuXG5cbkJ1dCB0aGVuIEkgcmVjYWxsIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi4gKnZob3N0X3Njc2lfaW9jdGwqIGlzIGEgZmlsZSBvcGVyYXRpb25zIGNhbGxiYWNrIHRob3VnaCwgd2hpY2ggbWFrZXMgaXQgYW4gQVBJIGVudHJ5cG9pbnQsIGFuZCBpdCdzIGRlZmluaXRlbHkgKm5vdCogaW5saW5lZC4gU28sIGl0IGFwcGVhcnMgdG8gZml0IHRoZSByZWNvbW1lbmRhdGlvbiwgbWFraW5nIGl0IHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBmb3IgdXNlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcywgYXJlIHRoZXJlIGFueSAqbm9uKi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdlIGNvdWxkIGxldmVyYWdlPyBKdXN0IHRvIGJlIHN1cmUgd2UgYXJlIGFkaGVyaW5nIHRvIHRoZSBzdHlsZSBpbnN0cnVjdGlvbnMsIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgaW5zaWRlIG9mIGBkcml2ZXJzL3Zob3N0L3Njc2kuY2AgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbiB3b3VsZCBiZXR0ZXIgZml0IHRoZSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjIyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjEyLjE2ODE2Nzg1OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNjY3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTMzMj1zdGF0aWMgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMzMzp2aG9zdF9zY3NpX2dldF9pbmZsaWdodChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0zMzQte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9NTM4PXN0YXRpYyBzdHJ1Y3Qgdmhvc3Rfc2NzaV9ldnQgKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjUzOTp2aG9zdF9zY3NpX2FsbG9jYXRlX2V2dChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtNTQwLVxcdFxcdCAgICAgICB1MzIgZXZlbnQsIHUzMiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz01Njk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzo1NzA6dmhvc3Rfc2NzaV9kb19ldnRfd29yayhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF9zY3NpX2V2dCAqZXZ0KVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTU3MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz03NDQ9c3RhdGljIHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6NzQ1OnZob3N0X3Njc2lfZ2V0X2NtZChzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgdTY0IHNjc2lfdGFnKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTc0Ni17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz04MDA9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjgwMTp2aG9zdF9zY3NpX21hcF90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODAyLVxcdFxcdCAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg2Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODY3OnZob3N0X3Njc2lfY2FsY19zZ2xzKHN0cnVjdCBpb3ZfaXRlciAqaXRlciwgc2l6ZV90IGJ5dGVzLCBpbnQgbWF4X3NnbHMpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODY4LXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTg4Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6ODg3OnZob3N0X3Njc2lfY29weV9pb3ZfdG9fc2dsKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtODg4LVxcdFxcdFxcdCAgIHN0cnVjdCBzZ190YWJsZSAqc2dfdGFibGUsIGludCBzZ19jb3VudCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk0Nj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTQ3OnZob3N0X3Njc2lfbWFwX2lvdl90b19zZ2woc3RydWN0IHZob3N0X3Njc2lfY21kICpjbWQsIHN0cnVjdCBpb3ZfaXRlciAqaXRlcixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NDgtXFx0XFx0XFx0ICBzdHJ1Y3Qgc2dfdGFibGUgKnNnX3RhYmxlLCBpbnQgc2dfY291bnQsIGJvb2wgaXNfcHJvdClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2NT1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6OTY2OnZob3N0X3Njc2lfbWFwYWwoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jbWQgKmNtZCxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy05NjctXFx0XFx0IHNpemVfdCBwcm90X2J5dGVzLCBzdHJ1Y3QgaW92X2l0ZXIgKnByb3RfaXRlcixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTEwNzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMDc2OnZob3N0X3Njc2lfc2VuZF9zdGF0dXMoc3RydWN0IHZob3N0X3Njc2kgKnZzLCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDc3LVxcdFxcdCAgICAgICBzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHggKnZjLCB1OCBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTAxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTEwMjp2aG9zdF9zY3NpX3NlbmRfYmFkX3RhcmdldChzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEwMy1cXHRcXHRcXHQgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTExMzk9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjExNDA6dmhvc3Rfc2NzaV9nZXRfZGVzYyhzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExNDEtXFx0XFx0ICAgIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMTkzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTk0OnZob3N0X3Njc2lfY2hrX3NpemUoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB2aG9zdF9zY3NpX2N0eCAqdmMpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTE5NS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjEyOnZob3N0X3Njc2lfZ2V0X3JlcShzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwgc3RydWN0IHZob3N0X3Njc2lfY3R4ICp2YyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMjEzLVxcdFxcdCAgIHN0cnVjdCB2aG9zdF9zY3NpX3RwZyAqKnRwZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjQyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMjQzOnZob3N0X3Njc2lfc2V0dXBfcmVzcF9pb3ZzKHN0cnVjdCB2aG9zdF9zY3NpX2NtZCAqY21kLCBzdHJ1Y3QgaW92ZWMgKmluX2lvdnMsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTI0NC1cXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgaW5faW92c19jbnQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xMjgzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTI4NDp2aG9zdF9zY3NpX2hhbmRsZV92cShzdHJ1Y3Qgdmhvc3Rfc2NzaSAqdnMsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTEyODUte1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTUyNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1Mjc6dmhvc3Rfc2NzaV9zZW5kX3RtZl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUyOC1cXHRcXHRcXHQgaW50IGluX2lvdnMsIGludCB2cV9kZXNjLCBzdHJ1Y3QgaW92ZWMgKnJlc3BfaW92LFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTU4Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1ODQ6dmhvc3Rfc2NzaV9oYW5kbGVfdG1mKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTU4NS1cXHRcXHQgICAgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE2NDQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNjQ1OnZob3N0X3Njc2lfc2VuZF9hbl9yZXNwKHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNjQ2LVxcdFxcdFxcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTY2Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE2Njc6dmhvc3Rfc2NzaV9jdGxfaGFuZGxlX3ZxKHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTY2OC17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0xNzk4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc5OTp2aG9zdF9zY3NpX3NlbmRfZXZ0KHN0cnVjdCB2aG9zdF9zY3NpICp2cywgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTgwMC1cXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsIHN0cnVjdCBzZV9sdW4gKmx1bixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTE5ODA9c3RhdGljIGludFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE5ODE6dmhvc3Rfc2NzaV9zZXRfZW5kcG9pbnQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE5ODItXFx0XFx0XFx0c3RydWN0IHZob3N0X3Njc2lfdGFyZ2V0ICp0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjExMj1zdGF0aWMgaW50XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjExMzp2aG9zdF9zY3NpX2NsZWFyX2VuZHBvaW50KHN0cnVjdCB2aG9zdF9zY3NpICp2cyxcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTE0LVxcdFxcdFxcdCAgc3RydWN0IHZob3N0X3Njc2lfdGFyZ2V0ICp0KVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjM2MT1zdGF0aWMgbG9uZ1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzNjI6dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzYzLVxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yNDc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjQ4MDp2aG9zdF9zY3NpX2RvX3BsdWcoc3RydWN0IHZob3N0X3Njc2lfdHBnICp0cGcsXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQ4MS1cXHRcXHQgIHN0cnVjdCBzZV9sdW4gKmx1biwgYm9vbCBwbHVnKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9Mjc3OT1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6Mjc4MDp2aG9zdF9zY3NpX21ha2VfdHBnKHN0cnVjdCBzZV93d24gKnd3biwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNzgxLXtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTI4MzU9c3RhdGljIHN0cnVjdCBzZV93d24gKlxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MzY6dmhvc3Rfc2NzaV9tYWtlX3Rwb3J0KHN0cnVjdCB0YXJnZXRfZmFicmljX2NvbmZpZ2ZzICp0ZixcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODM3LVxcdFxcdCAgICAgc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTA4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjkwOTp2aG9zdF9zY3NpX3d3bl92ZXJzaW9uX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI5MTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoxMi4yMjU0NDEyMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwNzAwNzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBvdGVudGlhbCBOb24tU3RhdGljIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzY29wZSBoZXJlLiBCZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIHdoZXRoZXIgdGhlcmUncyBhbnl0aGluZyBsdXJraW5nIGluIHRoaXMgY29kZWJhc2UgdGhhdCdzIG5vdC4uLndlbGwsICpzdGF0aWMqLiBBbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGluc3RhbmNlIHZhcmlhYmxlcyB1c2VkIGJ5IG1ldGhvZHMgSSBuZWVkIHRvIHNjcnV0aW5pemUsIGFueXRoaW5nIHRoYXQgcmVsaWVzIG9uIG11dGFibGUgc3RhdGUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBrbm93IHRoZSBkZWdyZWUgb2YgcmVsaWFuY2Ugb24gb2JqZWN0LWxldmVsIGRhdGEuIEl0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gYXZvaWRpbmcgcG90ZW50aWFsIGdvdGNoYXMgZG93biB0aGUgbGluZS4gVGhhdCB3aWxsIGdyZWF0bHkgaW5mbHVlbmNlIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLiBJZiBpdCdzIGFsbCBzdGF0aWMsIHRoZW4gSSBjYW4ga2VlcCBpdCBpbiBteSBoZWFkIGVhc2llciBhbmQgbW92ZSBvbi4gSWYgbm90LCBJIG5lZWQgdG8gc3RhcnQgc2tldGNoaW5nIG91dCB0aGUgcmVsYXRpb25zaGlwcyBub3csIGJlZm9yZSB0aGluZ3MgZ2V0IHVud2llbGR5LiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxOTEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoxNS4zMzI0NTEyNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDQ4MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHZob3N0X3Njc2lfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jPTk2PU1PRFVMRV9QQVJNX0RFU0MoaW5saW5lX3NnX2NudCwgXFxcIlNldCB0aGUgbnVtYmVyIG9mIHNjYXR0ZXJsaXN0IGVudHJpZXMgdG8gcHJlLWFsbG9jYXRlLiBUaGUgZGVmYXVsdCBpcyAyMDQ4LlxcXCIpO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTAzLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjEwNDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9pbmZsaWdodCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTA1LVxcdC8qIFdhaXQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gdG8gZmluaXNoICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTAtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTExOnN0cnVjdCB2aG9zdF9zY3NpX2NtZCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTEyLVxcdC8qIERlc2NyaXB0b3IgZnJvbSB2aG9zdF9nZXRfdnFfZGVzYygpIGZvciB2aXJ0X3F1ZXVlIHNlZ21lbnQgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0Ni1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNDc6c3RydWN0IHZob3N0X3Njc2lfbmV4dXMge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE0OC1cXHQvKiBQb2ludGVyIHRvIFRDTSBzZXNzaW9uIGZvciBJX1QgTmV4dXMgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1MS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNTI6c3RydWN0IHZob3N0X3Njc2lfdHBnIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNTMtXFx0LyogVmhvc3QgcG9ydCB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzQtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTc1OnN0cnVjdCB2aG9zdF9zY3NpX3Rwb3J0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xNzYtXFx0LyogU0NTSSBwcm90b2NvbCB0aGUgdHBvcnQgaXMgcHJvdmlkaW5nICovXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTg2OnN0cnVjdCB2aG9zdF9zY3NpX2V2dCB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg3LVxcdC8qIGV2ZW50IHRvIGJlIHNlbnQgdG8gZ3Vlc3QgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIxND1NT0RVTEVfUEFSTV9ERVNDKG1heF9pb192cXMsIFxcXCJTZXQgdGhlIG1heCBudW1iZXIgb2YgSU8gdmlydHF1ZXVlcyBhIHZob3N0IHNjc2kgZGV2aWNlIGNhbiBzdXBwb3J0LiBUaGUgZGVmYXVsdCBpcyAxMjguIFRoZSBtYXggaXMgMTAyNC5cXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTUtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjE2OnN0cnVjdCB2aG9zdF9zY3NpX3ZpcnRxdWV1ZSB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjE3LVxcdHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgdnE7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yMzk9c3RydWN0IHZob3N0X3Njc2kge1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI1NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV90bWYge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI1OC1cXHRzdHJ1Y3Qgdmhvc3Rfd29yayB2d29yaztcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI3OS0gKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyODA6c3RydWN0IHZob3N0X3Njc2lfY3R4IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yODEtXFx0aW50IGhlYWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjE1LjM4OTUwNTQ1M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYzNjk2OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHZob3N0X3Njc2lgIE1vZHVsZSoqXG5cbk9rYXksIGxldCdzIHNlZS4uLiBpdCBsb29rcyBsaWtlIGB2aG9zdF9zY3NpX2lvY3RsYCBpcyB0aGUgc29sZSBmdW5jdGlvbiB0aGF0IHdhcyB0b3VjaGVkLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgd2FpdCBhIG1pbnV0ZSwgSSdtIGp1c3QgcXVpY2tseSBzY2FubmluZyB0aHJvdWdoIHRoaXMuLi4gd2hhdCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGA/IEl0IGxvb2tzIHRvIGJlIHN0YXRpYy4gSG1tLCB0aGF0IGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLCBiZWNhdXNlIHRoZSBzY29wZSBpcyBtdWNoIG1vcmUgbGltaXRlZC4gTm93IEkgbmVlZCB0byBrbm93IGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggb3IgZGVwZW5kIG9uIGB2aG9zdF9zY3NpX2lvY3RsYC4gTGV0J3MganVzdCBxdWlja2x5IGNoZWNrIHRoaXMgY29kZSBpbiByZWxhdGlvbiB0byBvdGhlcnMsIGFuZCBlc3RhYmxpc2ggd2hhdCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBjb3VsZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIwOSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjE4Ljg1MzIwNDU1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3OTYyMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSogdmhvc3Rfc2NzaV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9zY3NpLmM9OTY9TU9EVUxFX1BBUk1fREVTQyhpbmxpbmVfc2dfY250LCBcXFwiU2V0IHRoZSBudW1iZXIgb2Ygc2NhdHRlcmxpc3QgZW50cmllcyB0byBwcmUtYWxsb2NhdGUuIFRoZSBkZWZhdWx0IGlzIDIwNDguXFxcIik7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDMtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MTA0OnN0cnVjdCB2aG9zdF9zY3NpX2luZmxpZ2h0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMDUtXFx0LyogV2FpdCBmb3IgdGhlIGZsdXNoIG9wZXJhdGlvbiB0byBmaW5pc2ggKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTExMC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxMTE6c3RydWN0IHZob3N0X3Njc2lfY21kIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xMTItXFx0LyogRGVzY3JpcHRvciBmcm9tIHZob3N0X2dldF92cV9kZXNjKCkgZm9yIHZpcnRfcXVldWUgc2VnbWVudCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ2LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE0NzpzdHJ1Y3Qgdmhvc3Rfc2NzaV9uZXh1cyB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTQ4LVxcdC8qIFBvaW50ZXIgdG8gVENNIHNlc3Npb24gZm9yIElfVCBOZXh1cyAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTUxLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjE1MjpzdHJ1Y3Qgdmhvc3Rfc2NzaV90cGcge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE1My1cXHQvKiBWaG9zdCBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3NC1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxNzU6c3RydWN0IHZob3N0X3Njc2lfdHBvcnQge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE3Ni1cXHQvKiBTQ1NJIHByb3RvY29sIHRoZSB0cG9ydCBpcyBwcm92aWRpbmcgKi9cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODY6c3RydWN0IHZob3N0X3Njc2lfZXZ0IHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0xODctXFx0LyogZXZlbnQgdG8gYmUgc2VudCB0byBndWVzdCAqL1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjE0PU1PRFVMRV9QQVJNX0RFU0MobWF4X2lvX3ZxcywgXFxcIlNldCB0aGUgbWF4IG51bWJlciBvZiBJTyB2aXJ0cXVldWVzIGEgdmhvc3Qgc2NzaSBkZXZpY2UgY2FuIHN1cHBvcnQuIFRoZSBkZWZhdWx0IGlzIDEyOC4gVGhlIG1heCBpcyAxMDI0LlxcXCIpO1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTIxNS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyMTY6c3RydWN0IHZob3N0X3Njc2lfdmlydHF1ZXVlIHtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMTctXFx0c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSB2cTtcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzOT1zdHJ1Y3Qgdmhvc3Rfc2NzaSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNTYtXFxuZHJpdmVycy92aG9zdC9zY3NpLmM6MjU3OnN0cnVjdCB2aG9zdF9zY3NpX3RtZiB7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjU4LVxcdHN0cnVjdCB2aG9zdF93b3JrIHZ3b3JrO1xcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjc5LSAqL1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI4MDpzdHJ1Y3Qgdmhvc3Rfc2NzaV9jdHgge1xcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI4MS1cXHRpbnQgaGVhZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MTguOTExMDA3MTQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjAxNzI4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgdmhvc3Rfc2NzaV9pb2N0bCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9jYXRlIHRoZSBgdmhvc3Rfc2NzaV9pb2N0bGAgZnVuY3Rpb24sIGFuZCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvdmhvc3Qvc2NzaS5jYCBmaWxlLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgdHlwZSBvZiBmdW5jdGlvbiwgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgcHJvYmFibHkgc3RhdGljLiBMZXQncyBjb25maXJtIHRoYXQgcXVpY2tseSwgYnV0IGFsc28sIGxldCdzIG5vdCBnZXQgdHVubmVsIHZpc2lvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgKmFjY2Vzc2VkKi4gU2luY2UgaXQgc2VlbXMgbGlrZSBpdCBtaWdodCBiZSBpbnRlcm5hbCwgSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBmb3IgZWl0aGVyIGFuIGBFWFBPUlRfU1lNQk9MYCBtYWNybywgaW5kaWNhdGluZyBpdCBpcyBtYWRlIGF2YWlsYWJsZSBvdXRzaWRlIG9mIHRoZSBtb2R1bGUsIG9yIHBvdGVudGlhbGx5LCBhIGBtb2R1bGVfaW5pdGAgY2FsbCwgaW5kaWNhdGluZyBpdCdzIGJyb3VnaHQgaW50byB0aGUga2VybmVsIGF0IG1vZHVsZSBsb2FkLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyMi4xMzExODIzMzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTg4NTk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvc2NzaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyMi4xODczNzU0NzJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5OTQ2NDIwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBJbnZlc3RpZ2F0aW9uOiBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28sIHRoZSBpbml0aWFsIHNjYW4gcmV2ZWFscyBhYnNvbHV0ZWx5ICpubyogZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGFuZCBzdWdnZXN0cyBhIGZldyBwb3NzaWJsZSBzY2VuYXJpb3MuIFRoZSBtb3N0IG9idmlvdXMsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSdkIGxvb2ssIGlzIGF0IHRoZSBgbW9kdWxlX2luaXRgIG1hY3JvLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBtb2R1bGUgaXMgYmVpbmcgbG9hZGVkIGFuZCB3aGF0IHRoZSBlbnRyeSBwb2ludCBpcy4gIE5vIGV4cG9ydGVkIHN5bWJvbHMgY291bGQgbWVhbiBldmVyeXRoaW5nIGlzIGludGVudGlvbmFsbHkgaGlkZGVuLCBoYW5kbGVkIGludGVybmFsbHksIG9yIHBlcmhhcHMgc29tZXRoaW5nIGlzIGdvaW5nIHdyb25nIHdpdGggdGhlIGJ1aWxkIHByb2Nlc3MuIEknbSBnb2luZyB0byBkaWcgaW50byBgbW9kdWxlX2luaXRgIHRvIGNvbmZpcm0gdGhlIGxvYWRpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTMzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MjUuMDg2ODQyMjIyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjIyMDI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyNS4xNDMwNjY0ODlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTE3MzAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgdmhvc3Rfc2NzaSBJbml0aWFsaXphdGlvbiBhbmQgRXhpdCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZSB2aG9zdC1zY3NpIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIHBpbnBvaW50aW5nIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBhbmQgc2h1dGRvd24gcm91dGluZXMuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGB2aG9zdF9zY3NpX2luaXRgIGFuZCBgdmhvc3Rfc2NzaV9leGl0YC4gSSB3YW50IHRvIHNlZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGJyb3VnaHQgdXAgYW5kIGhvdyBpdCBncmFjZWZ1bGx5IGV4aXRzLiBBcmUgd2UgdGFsa2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uLCByZWdpc3RyYXRpb24gd2l0aCBvdGhlciBzdWJzeXN0ZW1zLCBvciBwZXJoYXBzIHNvbWUgc3BlY2lmaWMgc2V0dXAgcmVsYXRlZCB0byB0aGUgU0NTSSB0cmFuc3BvcnQgbGF5ZXI/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIGFyZSBiZWluZyBzZXQgdXAsIHRvcm4gZG93biBhbmQgd2hlbi4gSSBoYXZlIGEgZmVlbGluZyB0aGVzZSBhcmUgdGhlIGJyZWFkY3J1bWJzIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBjb3JlIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgxMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjI4LjE3MjI0MjAzMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzUwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3Njc2lfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTc9c3RhdGljIHZvaWQgdmhvc3Rfc2NzaV9kb25lX2luZmxpZ2h0KHN0cnVjdCBrcmVmICprcmVmKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMzA0LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjMwNTpzdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2luaXRfaW5mbGlnaHQoc3RydWN0IHZob3N0X3Njc2kgKnZzLFxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTMwNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHZob3N0X3Njc2lfaW5mbGlnaHQgKm9sZF9pbmZsaWdodFtdKVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MTg1ND1zdGF0aWMgdm9pZCB2aG9zdF9zY3NpX2ZsdXNoKHN0cnVjdCB2aG9zdF9zY3NpICp2cylcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTE4NTgtXFx0LyogSW5pdCBuZXcgaW5mbGlnaHQgYW5kIHJlbWVtYmVyIHRoZSBvbGQgaW5mbGlnaHQgKi9cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoxODU5OlxcdHZob3N0X3Njc2lfaW5pdF9pbmZsaWdodCh2cywgdnMtXFx1MDAzZW9sZF9pbmZsaWdodCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMTg2MC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIyNzE9c3RhdGljIGludCB2aG9zdF9zY3NpX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI3LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjIzMjg6XFx0dmhvc3Rfc2NzaV9pbml0X2luZmxpZ2h0KHZzLCBOVUxMKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yMzI5LVxcbi0tXFxuZHJpdmVycy92aG9zdC9zY3NpLmM9MjkyMz1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdmhvc3Rfc2NzaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yOTU5LVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI5NjA6c3RhdGljIGludCBfX2luaXQgdmhvc3Rfc2NzaV9pbml0KHZvaWQpXFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk2MS17XFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Njc2kuYz0yOTkyPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyOTkzOm1vZHVsZV9pbml0KHZob3N0X3Njc2lfaW5pdCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjk5NC1tb2R1bGVfZXhpdCh2aG9zdF9zY3NpX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjoyOC4yNzUwMDMyOTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4NzI2MjkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHZob3N0LXNjc2lgIElvY3RsIEludGVyZmFjZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZob3N0LXNjc2lgIHNldHVwLiBUaGUgb25seSBmdW5jdGlvbnMgdGhhdCBzZWVtIGludGVyZXN0aW5nIGluIHRoZSBjb2RlYmFzZSBhcmUgc3RhdGljLiBCdXQgd2FpdCwgYHZob3N0X3Njc2lfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaW9jdGxzIG9uIGAvZGV2L3Zob3N0LXNjc2lgLiBQZXJmZWN0ISBTaW5jZSBpdCdzIHN0YXRpYywgSSBjYW4ganVzdCB1c2UgaXQgYXMgbXkgZm9jdXMgc3ltYm9sLiBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSBpdCBldmVuIGlmIGl0J3Mgbm90IGlubGluZWQuIExldCdzIG1ha2Ugc3VyZSBpdCBpc24ndCBpbmxpbmVkLCBpdCBpc24ndCwgc28gdGhhdCdzIGdvb2QhXG5cbk5vdywganVzdCB0byBiZSBzdXJlLCBsZXQncyB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgVkhPU1RfU0NTSWAgZGVwZW5kcyBvbiBgVEFSR0VUX0NPUkVgIGFuZCBgRVZFTlRGRGAuIGBFVkVOVEZEYCBpcyBwcmV0dHkgc3RhbmRhcmQsIHVzdWFsbHkgZW5hYmxlZCwgc28gSSdtIG5vdCB0b28gd29ycmllZCBhYm91dCB0aGF0LiBgVEFSR0VUX0NPUkVgIHNlZW1zIHRvIG1hcCB0byBgQ09ORklHX1RBUkdFVF9DT1JFYCDigJMgZ29vZCB0byBrbm93LiBTbywgSSBuZWVkIHRvIGFkZCBgVkhPU1RfU0NTSWAgYW5kIGBUQVJHRVRfQ09SRWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkkgdGhvdWdodCBhYm91dCBgdmhvc3Rfc2NzaV9mbHVzaGAgYXMgYSBwb3RlbnRpYWwgZm9jdXMgc3ltYm9sLCBidXQgaXQncyBjYWxsZWQgZnJvbSBgdmhvc3Rfc2NzaV9pb2N0bGAuIEl0IG1pZ2h0IGJlIGlubGluZWQuIExldCdzIHN0aWNrIHdpdGggYHZob3N0X3Njc2lfaW9jdGxgIGZvciBub3cuIFNpbXBsZXIgaXMgYmV0dGVyLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGFnYWluLiBBaCwgcmlnaHQuIEl0J3MgYWRkaW5nIGEgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgYWZ0ZXIgdGhlIGB2aG9zdF9kZXZfaW9jdGxgIGNhbGwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQncyBmbHVzaGluZyB0aGUgYmFja2VuZCBhZnRlciBhIGRldmljZSBpb2N0bC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBhbiBpb2N0bCBvbiBgL2Rldi92aG9zdC1zY3NpYC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIEkgY2FuIGRlZmluaXRlbHkgZnV6eiBpdC4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBmb2N1cyBzeW1ib2wgaXMgYHZob3N0X3Njc2lfaW9jdGxgLiBBbmQgdGhlIGVuYWJsZWQgY29uZmlncyBhcmUgYFZIT1NUX1NDU0lgIGFuZCBgVEFSR0VUX0NPUkVgLiBJJ2xsIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGJ1dCBJJ20gcHJldHR5IGNvbmZpZGVudCBpbiB0aGlzIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU4NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjozNS42NjIyNjk2MzZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE1OTc3ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1NDU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZz0zND1jb25maWcgVkhPU1RfTkVUXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDUtXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ2OmNvbmZpZyBWSE9TVF9TQ1NJXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMDoyMjozNi43ODM4NzM2NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNzYyOTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBgVEFSR0VUX0NPUkVgKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGNvcmUgb2YgaXQuIEknbSBnb2luZyB0byBzdGFydCBieSBydW5uaW5nIGEgdGhvcm91Z2ggY2hlY2sgb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlIHNjYW47IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqZGVwdGgqIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBJJ20gdGhpbmtpbmcgYWJvdXQgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMsIHBhcnRpY3VsYXJseSBhbnkgcG90ZW50aWFsIHZlcnNpb24gY29uZmxpY3RzIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgd2l0aGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgYWxpZ25zIHdpdGggbXkgc3RhbmRhcmRzIGFuZCBiZXN0IHByYWN0aWNlcy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGF0IGBUQVJHRVRfQ09SRWAgcmVsaWVzIHVwb24sIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGFuYWx5emUgKnRoZWlyKiBkZXBlbmRlbmNpZXMuIEknbSBsb29raW5nIGZvciBhbnkgcmVkIGZsYWdzOiBkZXByZWNhdGVkIHZlcnNpb25zLCBsaWJyYXJpZXMgd2l0aCBrbm93biBleHBsb2l0cywgb3IgY29tcG9uZW50cyB0aGF0IGNvdWxkIGludHJvZHVjZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAsIGFzIGFueSBpc3N1ZXMgYXQgdGhpcyBsZXZlbCBjb3VsZCByaXBwbGUgb3V0d2FyZHMsIGltcGFjdGluZyB0aGUgZW50aXJlIHN5c3RlbS4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCBmb3VuZGF0aW9uLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzA2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6MzkuNzExNTA2Mjc2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIzNjEzMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRBUkdFVF9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWc6MzptZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEwOjIyOjM5LjgxMzg3MzQ1MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM3NzM1NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgYFRBUkdFVF9DT1JFYCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGluc3RydWN0aW9uIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy90YXJnZXQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYFRBUkdFVF9DT1JFYCBkZWZpbml0aW9uLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGEgdGFyZ2V0IGRldmljZSwgbGlrZWx5IHNvbWUgZnVuZGFtZW50YWwgZmVhdHVyZXMgb3IgYXJjaGl0ZWN0dXJlIGNob2ljZXMuIFRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGJyZWFkIGFuZCBidXR0ZXIgb2YgdGhlIGJ1aWxkIHN5c3RlbTsgaXQncyB3aGVyZSB0aGUgdXNlciBzZWxlY3RzIHRoZSBzcGVjaWZpYyBvcHRpb25zIHRoYXQgZGVmaW5lIHdoYXQgZ2V0cyBidWlsdCBpbnRvIHRoZSBmaW5hbCBmaXJtd2FyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgbWF5YmUgc29tZSBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgVEFSR0VUX0NPUkVgLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGlzIG9wdGlvbiBhbmQgb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIHBsYXRmb3JtLCBvciBldmVuIGJyb2FkZXIgc3lzdGVtLWxldmVsIGNob2ljZXMuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgY29uZmxpY3RzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkPyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlc2lnbiBkZWNpc2lvbnMgYXJlIGV4cG9zZWQuIFRpbWUgdG8gc2VlIHdoYXQgd2UgaGF2ZSB0byB3b3JrIHdpdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDI1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDMuMDUxNjEwODM0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVGFyZ2V0IENvcmUgTW9kIChUQ00pIGFuZCBDb25maWdGUyBJbmZyYXN0cnVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA2OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQ19UMTBESUZcXG4gICA4OlxcdFxcdHNlbGVjdCBTQ1NJX0NPTU1PTlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNHTF9BTExPQ1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcXG4gIDEzOlxcdFxcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xcbiAgMTQ6XFx0XFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBUQVJHRVRfQ09SRVxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgVENNX0lCTE9DS1xcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIlRDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcXFwiXFxuICAyMDpcXHRcXHRzZWxlY3QgQkxLX0RFVl9JTlRFR1JJVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDMuMDUxNjY2MjU0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mzc5OTk5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gYFRBUkdFVF9DT1JFYCBpcyBjbGVhcmx5IGEga2V5IGNvbXBvbmVudCwgYW5kIGl0J3MgY29udGluZ2VudCB1cG9uIGBCTE9DS2AsIHdoaWNoIGlzIHByZXR0eSBtdWNoIGFsd2F5cyBlbmFibGVkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGBWSE9TVF9TQ1NJYCBhbmQgYFRBUkdFVF9DT1JFYCBhcmUgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSByZWxldmFudCwgZ2l2ZW4gdGhhdCB0aGVzZSBzZWVtIGNlbnRyYWwgdG8gdGhlIGRlc2lnbi5cblxuTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jeSB0cmVlLCBJIHNlZSB0aGF0IGBWSE9TVF9TQ1NJYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYFRBUkdFVF9DT1JFYCAqYW5kKiBgRVZFTlRGRGAuIEFuZCBgRVZFTlRGRGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQsIHdoaWNoIEknZCBleHBlY3QuXG5cbkkgdGhpbmsgSSd2ZSBnb3QgZW5vdWdoIGluZm9ybWF0aW9uLiBUaW1lIHRvIGJyaW5nIHVwIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTUzLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTA6MjI6NDYuNjg5NjY4NDg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0NjQwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX1NDU0lcIixcbiAgICBcIlRBUkdFVF9DT1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3Rfc2NzaV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNhbGwgdG8gYHZob3N0X3Njc2lfZmx1c2hgIGluIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBgL2Rldi92aG9zdC1zY3NpYC4gVGhpcyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIG1vZGlmaWVzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgdmhvc3Qtc2NzaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfU0NTSVwiLFxuICAgIFwiVEFSR0VUX0NPUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF9zY3NpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2FsbCB0byBgdmhvc3Rfc2NzaV9mbHVzaGAgaW4gdGhlIGlvY3RsIGhhbmRsZXIgZm9yIGAvZGV2L3Zob3N0LXNjc2lgLiBUaGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgbW9kaWZpZXMgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSB2aG9zdC1zY3NpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[1] Phase: Succeeded StartedAt: 2026-07-25 10:22:58 +0000 UTC FinishedAt: 2026-07-25 10:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 10:22:58 +0000 UTC FinishedAt: 2026-07-25 10:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2] Phase: Succeeded StartedAt: 2026-07-25 10:22:58 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 10:22:59 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 10:22:59 +0000 UTC FinishedAt: 2026-07-25 10:23:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 10:22:59 +0000 UTC FinishedAt: 2026-07-25 10:23:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowx29hf/series-workflowx29hf-convert-artifact-3034031663/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 10:23:10 +0000 UTC FinishedAt: 2026-07-25 10:59:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 10:23:10 +0000 UTC FinishedAt: 2026-07-25 10:59:02 +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:*ee705367-16e2-46d2-bee3-eaaf38a0bc1a,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-workflowx29hf/series-workflowx29hf-convert-artifact-3034031663/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": "7eb7fdaf-2ead-4bf8-8175-7010a4d63f9f", "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-workflowx29hf/series-workflowx29hf-build-action-1459956725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 10:23:11 +0000 UTC FinishedAt: 2026-07-25 10:57:53 +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:*ee705367-16e2-46d2-bee3-eaaf38a0bc1a,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-workflowx29hf/series-workflowx29hf-convert-artifact-3034031663/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": "7eb7fdaf-2ead-4bf8-8175-7010a4d63f9f", "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-workflowx29hf/series-workflowx29hf-build-action-1459956725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 10:59:02 +0000 UTC FinishedAt: 2026-07-25 10:59:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 10:59:02 +0000 UTC FinishedAt: 2026-07-25 10:59:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 10:59:02 +0000 UTC FinishedAt: 2026-07-25 10:59:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 10:59:02 +0000 UTC FinishedAt: 2026-07-25 10:59:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowx29hf/series-workflowx29hf-convert-artifact-3039165310/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 10:59:22 +0000 UTC FinishedAt: 2026-07-25 11:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 10:59:22 +0000 UTC FinishedAt: 2026-07-25 11:01:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7eb7fdaf-2ead-4bf8-8175-7010a4d63f9f,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-workflowx29hf/series-workflowx29hf-build-action-1459956725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 11:01:19 +0000 UTC FinishedAt: 2026-07-25 11:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 11:01:19 +0000 UTC FinishedAt: 2026-07-25 11:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 11:01:19 +0000 UTC FinishedAt: 2026-07-25 11:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 11:01:19 +0000 UTC FinishedAt: 2026-07-25 11:42:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ee705367-16e2-46d2-bee3-eaaf38a0bc1a,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-workflowx29hf/series-workflowx29hf-convert-artifact-3039165310/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": "660b2e91-44c4-4c71-bd25-0544883bfe50", "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-workflowx29hf/series-workflowx29hf-build-action-1838991314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 11:01:19 +0000 UTC FinishedAt: 2026-07-25 11:42:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ee705367-16e2-46d2-bee3-eaaf38a0bc1a,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-workflowx29hf/series-workflowx29hf-convert-artifact-3039165310/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": "660b2e91-44c4-4c71-bd25-0544883bfe50", "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-workflowx29hf/series-workflowx29hf-build-action-1838991314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 11:42:51 +0000 UTC FinishedAt: 2026-07-25 11:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 11:42:51 +0000 UTC FinishedAt: 2026-07-25 11:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 11:42:51 +0000 UTC FinishedAt: 2026-07-25 11:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 11:42:51 +0000 UTC FinishedAt: 2026-07-25 11:44:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*660b2e91-44c4-4c71-bd25-0544883bfe50,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-build-action-1838991314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7eb7fdaf-2ead-4bf8-8175-7010a4d63f9f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*660b2e91-44c4-4c71-bd25-0544883bfe50,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-build-action-1459956725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-build-action-1838991314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 11:45:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 11:44:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-convert-artifact-1999478659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 11:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 11:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 11:44:50 +0000 UTC FinishedAt: 2026-07-25 11:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 11:45:00 +0000 UTC FinishedAt: 2026-07-25 12:19:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx29hf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vhost_scsi_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_SCSI","TARGET_CORE"],"series_id":"e308057e-2788-4a01-8f40-7935ba61e751","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 11:45:00 +0000 UTC FinishedAt: 2026-07-25 12:19:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7eb7fdaf-2ead-4bf8-8175-7010a4d63f9f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*660b2e91-44c4-4c71-bd25-0544883bfe50,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-build-action-1459956725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-build-action-1838991314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx29hf/series-workflowx29hf-convert-artifact-1999478659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}