Name: series-workflowz5w7h Phase: Succeeded StartedAt: 2026-08-02 12:19:58 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[0] Phase: Succeeded StartedAt: 2026-08-02 12:19:58 +0000 UTC FinishedAt: 2026-08-02 12:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 12:19:58 +0000 UTC FinishedAt: 2026-08-02 12:37:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_LIST_SET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_LIST_SET" ], "series_id": "f642acbf-11e4-4aeb-b1f3-109b3999d9f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_put_byindex", "ip_set_swap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZTFjOGVlOGMwM2FjYzg5YjY5M2EyMzYzN2E3YTdjMzJhM2UyMDVlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjozNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1xuQEAgLTg1NSw5ICYjNDM7ODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbiBcdHN0cnVjdCBpcF9zZXQgKnNldDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHQvKiBTZXJpYWxpemUgdGhlIGxpc3QgbG9va3VwIHdpdGggaXBfc2V0X3N3YXAoKSwgd2hpY2ggc3dhcHMgYm90aFxuJiM0MztcdCAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LVx1MDAzZXJlZiB1bmRlciBpcF9zZXRfcmVmX2xvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0d3JpdGVfbG9ja19iaChcdTAwMjZpcF9zZXRfcmVmX2xvY2spO1xuIFx0c2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtXHUwMDNlaXBfc2V0X2xpc3QpW2luZGV4XTtcbi1cdGlmIChzZXQpXG4tXHRcdF9faXBfc2V0X3B1dChzZXQpO1xuJiM0MztcdGlmIChzZXQpIHtcbiYjNDM7XHRcdEJVR19PTihzZXQtXHUwMDNlcmVmID09IDApO1xuJiM0MztcdFx0c2V0LVx1MDAzZXJlZi0tO1xuJiM0MztcdH1cbiYjNDM7XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9MSVNUX1NFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF9wdXRfYnlpbmRleCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhlMWM4ZWU4YzAzYWNjODliNjkzYTIzNjM3YTdhN2MzMmEzZTIwNWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jCmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMKQEAgLTg1NSw5ICYjNDM7ODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleCkKIAlzdHJ1Y3QgaXBfc2V0ICpzZXQ7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CS8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoCiYjNDM7CSAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LSZndDtyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLgomIzQzOwkgKi8KJiM0MzsJd3JpdGVfbG9ja19iaCgmYW1wO2lwX3NldF9yZWZfbG9jayk7CiAJc2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtJmd0O2lwX3NldF9saXN0KVtpbmRleF07Ci0JaWYgKHNldCkKLQkJX19pcF9zZXRfcHV0KHNldCk7CiYjNDM7CWlmIChzZXQpIHsKJiM0MzsJCUJVR19PTihzZXQtJmd0O3JlZiA9PSAwKTsKJiM0MzsJCXNldC0mZ3Q7cmVmLS07CiYjNDM7CX0KJiM0MzsJd3JpdGVfdW5sb2NrX2JoKCZhbXA7aXBfc2V0X3JlZl9sb2NrKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXBfc2V0X2NvcmUuYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYCwgYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGUgY3J1Y2lhbCBjaGFuZ2UgaXMgdGhpcyBhZGRpdGlvbiBvZiBgd3JpdGVfbG9ja19iaCgmYW1wO2lwX3NldF9yZWZfbG9jayk7YCByaWdodCBiZWZvcmUgdGhlIGBzZXQtJmd0O3JlZi0tYCBvcGVyYXRpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcmFpc2luZyBhIGZsYWcuIEkgcmVjYWxsIHRoYXQgYF9faXBfc2V0X3B1dChzZXQpYCB3YXMgbGlrZWx5IGp1c3QgYSBkaXJlY3QgZGVjcmVtZW50IG9mIGBzZXQtJmd0O3JlZmAuIE5vdywgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgcHJvdGVjdGluZyB0aGF0IGRlY3JlbWVudCB3aXRoIGBpcF9zZXRfcmVmX2xvY2tgLiBUaGlzIG1lcml0cyBhIGRlZXBlciBsb29rLgoKSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxvY2suIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYF9faXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgdGhlIG9yaWdpbmFsIGBfX2lwX3NldF9wdXRgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg1MzpfX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODcyPWlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODc2Olx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkZpbmRpbmcgdGhlIENhbGxlcnMgb2YgYF9faXBfc2V0X3B1dF9ieWluZGV4YCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIE15IGZpcnN0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBuYW1lIHN1Z2dlc3RzIGl0IGlzIHB1dHRpbmcgYW4gSVAgYnkgYW4gaW5kZXgsIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHBhcmFtZXRlcnMgdGhhdCBtaWdodCBpbnZvbHZlLiBOb3cgbGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3NldF9wdXRfYnlpbmRleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODUyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBpcF9zZXRfcHV0X2J5aW5kZXhgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgaXBfc2V0X3B1dF9ieWluZGV4YC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIGNsdWUgLSBpdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGluc2VydGluZyBhbiBJUCBzZXQgZWxlbWVudCBhdCBhIHNwZWNpZmljIGluZGV4LiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aG8mIzM5O3MgY2FsbGluZyAqdGhpcyogZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBhbGwgaW52b2NhdGlvbnMgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gZ2V0IHRoZSBjb250ZXh0IOKAkyB0aGUgaG93IGFuZCB0aGUgd2h5IG9mIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgaW5zZXJ0aW9uIG9wZXJhdGlvbiwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgaGlnaGxpZ2h0IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKm5hbWUsIHN0cnVjdCBpcF9zZXQgKipzZXQpO1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODcyOmlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU4LVx0bGlzdF9kZWxfcmN1KFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVx0Y2FsbF9yY3UoXHUwMDI2ZS1cdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjgtXHRsaXN0X3JlcGxhY2VfcmN1KFx1MDAyNm9sZC1cdTAwM2VsaXN0LCBcdTAwMjZlLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNjk6XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgb2xkLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVx0Y2FsbF9yY3UoXHUwMDI2b2xkLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNj1saXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXHRcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcdFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDA4Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5yZWZpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDEwOlx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzAwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpcF9zZXRfbGlzdF9zZXQuYyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AsIHJpZ2h0PyBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVlcCB3aXRoaW4gdGhlIGBpcHNldGAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBgbGlzdDpzZXRgIHR5cGUuIE15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFjdHVhbGx5IGVuYWJsZSB0aGlzIGZpbGUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IHRvIGdyYXNwaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIHN5c3RlbSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBJIGNhbiBjb250cm9sIGl0cyBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWcgb3B0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9saXN0X3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZT0yOD1vYmotJChDT05GSUdfSVBfU0VUX0hBU0hfTkVUUE9SVE5FVCkgJiM0Mzs9IGlwX3NldF9oYXNoX25ldHBvcnRuZXQub1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzAtIyBsaXN0IHR5cGVzXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JUF9TRVRfTElTVF9TRVQpICYjNDM7PSBpcF9zZXRfbGlzdF9zZXQub1xubmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZS0zMi1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX0lQU0VUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIG9mIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBJUCBTZXQgTW9kdWxlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYC4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJJiMzOTttIG5vdGljaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgYWxzbyBleHBvcnRlZC4gVGhhdCBzdHJpa2VzIG1lIGFzIGEgYml0IG9kZC4gSSB3b25kZXIgaWYgb3RoZXIgbW9kdWxlcyBiZXlvbmQgdGhlIG9idmlvdXMgb25lcyBhY3R1YWxseSByZWx5IG9uIHRoaXMgZnVuY3Rpb24/IEl0IHdvdWxkIGJlIGdvb2QgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIHVzZS4gVG8gYmUgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9uZXRmaWx0ZXIveHRfc2V0LmNgIG9yIGEgc2ltaWxhciBmaWxlIHRoYXQgaGFuZGxlcyBJUCBzZXQgaW50ZXJhY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBiZSBrZXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X3B1dF9ieWluZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg1MzpfX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODcxPXZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzI6aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTgtXHRsaXN0X2RlbF9yY3UoXHUwMDI2ZS1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5Olx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGUtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjAtXHRjYWxsX3JjdShcdTAwMjZlLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OC1cdGxpc3RfcmVwbGFjZV9yY3UoXHUwMDI2b2xkLVx1MDAzZWxpc3QsIFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBvbGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXHRjYWxsX3JjdShcdTAwMjZvbGQtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjM2PWxpc3Rfc2V0X3VhZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3My1cdFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Mjc0Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZC1cdTAwM2VpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0zNTA9bGlzdF9zZXRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXHRpZiAoZS5yZWZpZCAhPSBJUFNFVF9JTlZBTElEX0lEKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MDg6XHRcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLnJlZmlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVx0aWYgKGFkdCAhPSBJUFNFVF9BREQgfHwgcmV0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MTA6XHRcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLmlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaWFnbm9zdGljIFRob3VnaHRzIG9uIGBpcF9zZXRfbGlzdF9zZXQuY2AqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgdGhhdCB0aGUgY29kZSYjMzk7cyBvbmx5IHVzZWQgd2l0aGluIGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyB0aGluZ3MgZG93biBzaWduaWZpY2FudGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0lQX1NFVGAgYW5kIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBhcmUgZW5hYmxlZC4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBgQ09ORklHX0lQX1NFVGAgd291bGQgbmVlZCB0byBiZSBlbmFibGVkIGZvciBpdCB0byB1c2UgdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHksIGJ1dCBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBpcyBhbHNvIGVuYWJsZWQgc2luY2UgaXQgd291bGQgbmVlZCB0aGF0IHNwZWNpZmljIHNldHRpbmcgdG8gdXNlIGl0LiBLbm93aW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIHNwZWNpZmljIGNvZGUgbW9kdWxlIG9wZXJhdGVzLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQgcmVsYXRlcyB0byBldmVyeXRoaW5nIGVsc2UgYW5kIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY3kgb3IgY29uZmxpY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0xJU1RfU0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgYElQX1NFVF9MSVNUX1NFVGAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIG1lbnRhbGx5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgSVBfU0VUX0xJU1RfU0VUYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nICpyZWxpZXMqIG9uLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIG5lY2Vzc2FyeSBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LCBhbmQgd2hhdCBpdCBtaWdodCBhZmZlY3QuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBzdHVmZiwgdGhlIGtlcm5lbCBtb2R1bGVzIG9yIGxpYnJhcmllcyBpdCBuZWVkcywgd2hhdCBjb25maWd1cmF0aW9uIGZpbGVzIG1pZ2h0IGJlIHJlbGV2YW50LCBhbmQgYW55IHN5c3RlbSBzZXJ2aWNlcyBpbnZvbHZlZC4KCkkmIzM5O20gY29uc2lkZXJpbmcgd2hhdCBvdGhlciBgaXBzZXRgIHR5cGVzIGl0IG1pZ2h0IGJ1aWxkIHVwb24sIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cy4gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIHN1cHBvcnRpbmcgc29mdHdhcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIG9uZSBvZiB0aGUgZGVwZW5kZW50IGNvbXBvbmVudHMgY2hhbmdlcyBvciBpcyB1cGRhdGVkPyBUaGlua2luZyBmcm9tIHRoZSBhcmNoaXRlY3R1cmFsIGxldmVsIC0gSSYjMzk7bSB0aGlua2luZyBvZiB0aGUga2VybmVsIG1vZHVsZXMsIHVzZXIgc3BhY2UgdG9vbHMgYW5kIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFxuIDE2NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgSVBfU0VUX0xJU1RfU0VUXG4gMTY5Olx0XHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xuIDE3MDpcdFx0ZGVwZW5kcyBvbiBJUF9TRVRcbiAxNzE6XHRcdGhlbHBcbiAxNzI6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbGlzdDpzZXQgc2V0IHR5cGUgc3VwcG9ydC4gSW4gdGhpc1xuIDE3MzpcdFx0ICBraW5kIG9mIHNldCBvbmUgY2FuIHN0b3JlIHRoZSBuYW1lIG9mIG90aGVyIHNldHMgYW5kIGl0IGZvcm1zXG4gMTc0Olx0XHQgIGFuIG9yZGVyZWQgdW5pb24gb2YgdGhlIG1lbWJlciBzZXRzLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNzc6XHRcbiAxNzg6XHRjb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXG4gMTc5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcJiMzNDtcbiAxODA6XHRcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbiAxODE6XHRcdGhlbHBcbiAxODI6XHRcdCAgRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldCB0byBjaGVjayB3aGljaCBmdW5jdGlvbnMvbGluZXNcbiAxODM6XHRcdCAgYXJlIGV4ZWN1dGVkLlxuIDE4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkRpZ2dpbmcgaW50byBJUCBTZXQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCBib3RoIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBlbmFibGVkLiBCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgSVBfU0VUYC4gSXQmIzM5O3MgY3J1Y2lhbCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBjb25maWd1cmF0aW9ucywgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGVzIGFyZSBpbiBwbGFjZS4gU2luY2UgYElQX1NFVGAgb2Z0ZW4gcmVsaWVzIG9uIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUsIEkgaW1tZWRpYXRlbHkgc3VzcGVjdCBgTkVURklMVEVSYCBhbmQgYElORVRgLiBJIHNob3VsZCBjb25maXJtIHRoaXMuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gdGhlIGtlcm5lbCYjMzk7cyBzb3VyY2UgYW5kIHBpbnBvaW50IHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbiBsb2NhdGlvbiBmb3IgYElQX1NFVGAuIFRoZSBsb2dpY2FsIHBsYWNlcyB0byBjaGVjayBhcmUgbGlrZWx5IGluIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBkaXJlY3RvcnksIG9yIHBlcmhhcHMgbW9yZSBzcGVjaWZpY2FsbHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLiBUaW1lIHRvIGdldCBpbnRvIHRob3NlIEtjb25maWcgZmlsZXMgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MDMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBpcHNldCoqCgpPa2F5LCB0aGUgdGFzayBpcyB0byBnZW5lcmF0ZSBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZW0uIFRoZSB1c2VyJiMzOTtzIGFuIGV4cGVydCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0YXJnZXRlZC4gVGhlIHByb21wdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LCAmIzM0O0xldCYjMzk7cyBjaGVjayBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4mIzM0OyBBbHJpZ2h0LCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbWVhbnMgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoYXQgSSB3b3VsZCBjb25zaWRlciB3aGVuIGV4YW1pbmluZyBhIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGlwc2V0YCBtb2R1bGUgd2l0aGluIHRoZSBgbmV0ZmlsdGVyYCBzdWJzeXN0ZW0uCgpJJiMzOTtkIGJlIHRoaW5raW5nIGFib3V0IHRoZSBmb2xsb3dpbmcsIGJhc2VkIG9uIG15IGZhbWlsaWFyaXR5IHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqICAgKipVbmRlcnN0YW5kaW5nIHRoZSBTY29wZSoqOiBGaXJzdCwgSSYjMzk7ZCB3YW50IHRvIGdyYXNwIHdoYXQgdGhlIEtjb25maWcgZmlsZSBjb3ZlcnMuIElzIGl0IGp1c3QgdGhlIGBpcHNldGAgY29yZSwgb3IgYXJlIHRoZXJlIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZGlmZmVyZW50IGlwc2V0IHR5cGVzIChoYXNoLCBiaXRtYXAsIGV0Yy4pIG9yIGhlbHBlciBtb2R1bGVzPyBJJiMzOTtkIGV4cGVjdCB0byBzZWUgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzKio6IEkmIzM5O2QgcXVpY2tseSBsb29rIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaXBzZXRgIHRvIGJlIGF2YWlsYWJsZT8gQXJlIHRoZXJlIGFueSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGtub3cgYWJvdXQ/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyAqY3J1Y2lhbCogZm9yIGRlYnVnZ2luZyBhbmQgZW5hYmxpbmcgZmVhdHVyZXMgY29ycmVjdGx5LgoqICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIGB0cmlzdGF0ZWAgb3B0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkmIzM5O2QgYmUgYXNzZXNzaW5nIHdoZXRoZXIgdGhlc2Ugb3B0aW9ucyBhcmUgbW9kdWxlcyBvciBidWlsdGluLiBXaGljaCBhcmUgaW1wb3J0YW50IHRvIGVuYWJsZSBhcyB0aGUgYmFzZSBjb25maWd1cmF0aW9uPwoqICAgKipDb21wbGV4aXR5Kio6IEhvdyBncmFudWxhciBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSXMgaXQgYSBzaW1wbGUgJiMzNDtlbmFibGUvZGlzYWJsZSYjMzQ7IG9yIGFyZSB0aGVyZSB2YXJpb3VzIGxldmVscyBvZiBjdXN0b21pemF0aW9uIGZvciBwZXJmb3JtYW5jZSwgbWVtb3J5IHVzYWdlLCBvciBzcGVjaWZpYyB1c2UgY2FzZXM/IFRoaXMgd291bGQgaGVscCBtZSBnYXVnZSB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29tcGxleGl0eSB0aGF0IHRoZSB1c2VyIG1pZ2h0IGZhY2UuCiogICAqKkRvY3VtZW50YXRpb24qKjogSSB3b3VsZCBwcm9iYWJseSBiZSB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AgdG8gY29uc2lkZXIgdGhlIGlwc2V0IGNvbW1hbmRzIHN1Y2ggYXMgYGlwc2V0IGNyZWF0ZWAsIGBpcHNldCBhZGRgLCBgaXBzZXQgZGVsYCwgZXRjLiBJJiMzOTtkIGJlIHRoaW5raW5nIGlmIHRoZSBkb2N1bWVudGF0aW9uIGlzIHdlbGwtd3JpdHRlbiBhbmQgaWYgaXQgcHJvdmlkZXMgc3VmZmljaWVudCBndWlkYW5jZSBmb3Igc29tZW9uZSB3YW50aW5nIHRvIGNvbmZpZ3VyZSBgaXBzZXRgLgoqICAgKipFeGFtcGxlIGNvbmZpZ3VyYXRpb25zKio6IEkmIzM5O2QgbG9vayBhdCB0aGUga2NvbmZpZyBvcHRpb25zIGZvciBvdGhlciBuZXRmaWx0ZXIgbW9kdWxlcyB0byBsb29rIGF0IGNvbW1vbiB1c2FnZSBwYXR0ZXJucyBhbmQgaG93IGl0IGlzIGltcGxlbWVudGVkLgoKU28sIGluIGVzc2VuY2UsIG15IGludGVybmFsIGNoZWNrbGlzdCB3b3VsZCBiZSBhbGwgYWJvdXQgZmlndXJpbmcgb3V0ICp3aGF0KiB0aGUgS2NvbmZpZyBmaWxlIGlzIGNvbmZpZ3VyaW5nLCAqaG93KiBpdCYjMzk7cyBjb25maWd1cmVkLCBhbmQgKndoYXQqIGtleSBkZWNpc2lvbnMgdGhlIGV4cGVydCB1c2VyIHdvdWxkIG5lZWQgdG8gbWFrZSB3aGVuIGNvbmZpZ3VyaW5nIGl0IGZvciB0aGVpciBzcGVjaWZpYyBlbnZpcm9ubWVudC4gTXkgb3ZlcmFsbCB0aG91Z2h0IHdvdWxkIGJlIHRvIGRldGVybWluZSB3aGF0IGluZm9ybWF0aW9uIGEgdXNlciB3b3VsZCBuZWVkIGZyb20gdGhpcyBrY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjptZW51Y29uZmlnIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xND1pZiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjpjb25maWcgSVBfU0VUX01BWFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIElQIHNldHNcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mjg6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zNi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Njpjb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBpbml0aWFsIGxpbmVzIG9mIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIG5ldHdvcmtpbmcgYW5kIExpbnV4IGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipBbmFseXppbmcgdGhlIENvcmUgb2YgSVBzZXQmIzM5O3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBJUHNldCBtb2R1bGUuIFRoZSBmaXJzdCBmaWZ0ZWVuIGxpbmVzIGFyZSwgYXMgZXhwZWN0ZWQsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAuIEl0IHNlZW1zIGxpa2UgdGhlIHVzdWFsIHBhdHRlcm4gZm9yIGEgS2NvbmZpZyBmaWxlIOKAkyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGBjb25maWdgIGtleXdvcmQgcmlnaHQgYXdheSwgd2hpY2ggc2lnbmFscyB0aGUgc3RhcnQgb2YgYSBuZXcgY29uZmlndXJhdGlvbiBzeW1ib2wsIGluIHRoaXMgY2FzZSwgbGlrZWx5IHRoZSBvdmVyYXJjaGluZyBJUHNldCBtb2R1bGUgaXRzZWxmLiBXZSYjMzk7cmUgb2J2aW91c2x5IGluIHRoZSBgbmV0ZmlsdGVyYCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGNvbnRleHQuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaG93IGl0IGhhbmRsZXMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSBwcmVyZXF1aXNpdGVzIGxpc3RlZD8gV2hhdCBpcyB0aGUgbWFpbiBwcm9tcHQsIGhvdyBkb2VzIGl0IGRlc2NyaWJlIHRoZSBtb2R1bGU/IFRoZSBwcm9tcHQgaXMgdGhlIHVzZXItZmFjaW5nIGRlc2NyaXB0aW9uLCBhbmQgdGhlcmVmb3JlIHRoZSBiYXNpcyBmb3IgbWFraW5nIGRlY2lzaW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRldGFpbHMg4oCTIHdobyBidWlsdCBpdCwgd2hlbiwgYW5kIHdobyBjYW4gc3VwcG9ydCBpdCBpZiB0aGVyZSBhcmUgcXVlc3Rpb25zLiBJIGFtIGFsc28gbG9va2luZyBhdCB0aGlzIGZvciB3aGF0IHRoZSB1c2VyIHdvdWxkIG5lZWQuCgpVbHRpbWF0ZWx5LCBJIHdpbGwgYmUgYXNzZXNzaW5nIGhvdyB0aGUgbW9kdWxlIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUga2VybmVsLCB3aGF0IHBhcnRzIGl0IGhhbmRsZXMsIGFuZCBpZiBpdCBpcyB3ZWxsLXdyaXR0ZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBJUF9TRVRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgNTpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgSVAgc2V0IHN1cHBvcnQgdG8gdGhlIGtlcm5lbC5cbiAgIDg6XHRcdCAgSW4gb3JkZXIgdG8gZGVmaW5lIGFuZCB1c2UgdGhlIHNldHMsIHlvdSBuZWVkIHRoZSB1c2Vyc3BhY2UgdXRpbGl0eVxuICAgOTpcdFx0ICBpcHNldCg4KS4gWW91IGNhbiB1c2UgdGhlIHNldHMgaW4gbmV0ZmlsdGVyIHZpYSB0aGUgXCYjMzQ7c2V0XCYjMzQ7IG1hdGNoXG4gIDEwOlx0XHQgIGFuZCBcJiMzNDtTRVRcJiMzNDsgdGFyZ2V0LlxuICAxMTpcdFxuICAxMjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRpZiBJUF9TRVRcbiAgMTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQIFNldCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBJUF9TRVRgIGZlYXR1cmUsIGFuZCBpdCYjMzk7cyBidWlsdCBvbiBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzOiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkmIzM5O3JlIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSBzZWUgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHR3ZWFraW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAsIHNwZWNpZmljYWxseSBpbiBgaXBfc2V0X2NvcmUuY2AuIFRoaXMgZnVuY3Rpb24sIGBfX2lwX3NldF9wdXRfYnlpbmRleGAsIGlzIHdoYXQmIzM5O3MgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgLCB3aGljaCBpcyBleHBvcnRlZCBhbmQgdGhlbiB1c2VkIGJ5IGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGBsaXN0X3NldGAgaXMgY2xlYW5pbmcgdXAgYWZ0ZXIgaXRzZWxmIGFuZCBjYWxsaW5nIHRoaXMgY29yZSBmdW5jdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIG90aGVyIG1vZHVsZXMgYXJlIHVzaW5nIHRoYXQgY29yZSBmdW5jdGlvbiBkaXJlY3RseSwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLiBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBjYWxsZWQgc29tZXdoZXJlIGl0IHNob3VsZG4mIzM5O3QgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXBfc2V0X3B1dF9ieWluZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3Mj1pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgaXBfc2V0X3B1dF9ieWluZGV4YCoqCgpNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgdXNhZ2Ugb2YgYGlwX3NldF9wdXRfYnlpbmRleGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXMsIGl0JiMzOTtzIHVzZWQgKm9ubHkqIHdpdGhpbiB0aGUgYGlwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXRzZWxmLiYjMzQ7IFRoZW4sIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBpdCBtaWdodCBiZSBlbmNhcHN1bGF0ZWQgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSBzdXJlKiB0aGF0IG5vIG90aGVyIHBhcnQgb2YgdGhlIGNvZGViYXNlIGlzIHJlbHlpbmcgb24gdGhpcyBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYW55IG90aGVyIGZpbGVzLiBMZXQgbWUgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgaXRzIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKm5hbWUsIHN0cnVjdCBpcF9zZXQgKipzZXQpO1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODcyOmlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU4LVx0bGlzdF9kZWxfcmN1KFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVx0Y2FsbF9yY3UoXHUwMDI2ZS1cdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjgtXHRsaXN0X3JlcGxhY2VfcmN1KFx1MDAyNm9sZC1cdTAwM2VsaXN0LCBcdTAwMjZlLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNjk6XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgb2xkLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVx0Y2FsbF9yY3UoXHUwMDI2b2xkLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNj1saXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXHRcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcdFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDA4Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5yZWZpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDEwOlx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNjcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSYWNlIENvbmRpdGlvbiBpbiBpcF9zZXRfbGlzdF9zZXQuYyoqCgpPa2F5LCBpdCBzZWVtcyB0aGlzIGZpeCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGlwX3NldF9saXN0X3NldC5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZCAtIGEgbG9jayBhbmQgYSBgQlVHX09OYCBhcmUgYWRkZWQuIEl0JiMzOTtzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBpc3N1ZSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50LCBgc2V0LSZndDtyZWZgLCBjb3VsZCBwb3RlbnRpYWxseSBkcm9wIGJlbG93IHplcm8gb3IgYmUgbW9kaWZpZWQgY29uY3VycmVudGx5LCB3aGljaCBpcyBvYnZpb3VzbHkgYSBwcm9ibGVtLgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZSBhcHBlYXIgdG8gYmUgYGlwX3NldF9wdXRfYnlpbmRleGAsIGBsaXN0X3NldF9kZWxgLCBgbGlzdF9zZXRfcmVwbGFjZWAsIGBsaXN0X3NldF91YWRkYCwgYW5kIGBsaXN0X3NldF91YWR0YC4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgeWVzLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgaXMgc3RhdGljLCBtZWFuaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgdGhlIGV4dGVybmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXaXRoIGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIHJlc2lkaW5nIGluIHRoZSBzYW1lIGZpbGUsIGBpcF9zZXRfbGlzdF9zZXQuY2AsIG1ha2VzIHRoZSBpbnZlc3RpZ2F0aW9uIG1vcmUgZWZmaWNpZW50LiBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3NldF9saXN0X3NldC5jYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgbGlzdF9zZXRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBgbGlzdF9zZXRfYCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlc2UgYGxpc3Rfc2V0X2AgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGUgcG9zc2libGUgaW1wbGljYXRpb25zLiBUaGlua2luZyB0aHJvdWdoIHRoZSBzeW50YXgsIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBzZXQgb2Ygb3BlcmF0aW9ucyBvbiBsaXN0cywgbWF5YmUgcmVsYXRlZCB0byBzZXQgdGhlb3J5IGNvbmNlcHRzPyBJbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLi4uIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGhlcmUuIEFyZSB0aGVzZSBsaWtlbHkgYnVpbHQtaW4gZnVuY3Rpb25zLCBvciBjdXN0b20gaW1wbGVtZW50YXRpb25zPyBJZiBjdXN0b20sIHRoZSBlZmZpY2llbmN5IGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIGFsZ29yaXRobXMgdXNlZCDigJMgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4KCk15IGludGVybmFsIGNoZWNrbGlzdCBpbW1lZGlhdGVseSBleHBhbmRzLiBEYXRhIHR5cGUgaGFuZGxpbmc6IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgdHlwZSBjb252ZXJzaW9ucyBvciBwb3RlbnRpYWwgZXJyb3JzIHRoZXJlLCBjb25zaWRlcmluZyBsaXN0cyBhbmQgc2V0cyB1c3VhbGx5IGhhdmUgc29tZSBzdHJpY3RuZXNzIHdoZW4gbWl4ZWQgaW4gb3BlcmF0aW9ucz8gRWRnZSBjYXNlczogRW1wdHkgbGlzdHMsIGVtcHR5IHNldHMsIGxpc3RzIG9yIHNldHMgd2l0aCBkdXBsaWNhdGVzLiBIb3cgZG8gdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSBpbiB0aGVzZSBzaXR1YXRpb25zPyBQb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzPyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24gb3IgY29kZSB0byBjb25maXJtLiBUaGlua2luZyBhaGVhZCwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGNvbmN1cnJlbmN5IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiBhIGxhcmdlciwgbXVsdGktdGhyZWFkZWQgc3lzdGVtLiBPdmVyYWxsLCB0aGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gZGV0ZXJtaW5lIGhvdyBlZmZpY2llbnQgYW5kIHJlbGlhYmxlIHRoZXNlIHBhcnRpY3VsYXIgZnVuY3Rpb25zIGFyZSBpbiBhIGdpdmVuIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpc3Rfc2V0XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ5Omxpc3Rfc2V0X2t0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTAtXHQgICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NzM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo3NDpsaXN0X3NldF9rYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNzUtXHQgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz05Mz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjk0Omxpc3Rfc2V0X2tkZWwoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy05NS1cdCAgICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTExMz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjExNDpsaXN0X3NldF9rYWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTE1LVx0ICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTIzLVx0Y2FzZSBJUFNFVF9URVNUOlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMjQ6XHRcdHJldCA9IGxpc3Rfc2V0X2t0ZXN0KHNldCwgc2tiLCBwYXIsIG9wdCwgXHUwMDI2ZXh0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTI1LVx0XHRicmVhaztcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTI2LVx0Y2FzZSBJUFNFVF9BREQ6XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjEyNzpcdFx0cmV0ID0gbGlzdF9zZXRfa2FkZChzZXQsIHNrYiwgcGFyLCBvcHQsIFx1MDAyNmV4dCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyOC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyOS1cdGNhc2UgSVBTRVRfREVMOlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMzA6XHRcdHJldCA9IGxpc3Rfc2V0X2tkZWwoc2V0LCBza2IsIHBhciwgb3B0LCBcdTAwMjZleHQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMzEtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTQyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE0MzpfX2xpc3Rfc2V0X2RlbF9yY3Uoc3RydWN0IHJjdV9oZWFkICogcmN1KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNDQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTUyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1MzpsaXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTktXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS1cdTAwM2VpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2MDpcdGNhbGxfcmN1KFx1MDAyNmUtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTYzPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2NDpsaXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OS1cdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBvbGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNzA6XHRjYWxsX3JjdShcdTAwMjZvbGQtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTc0PXNldF9jbGVhbnVwX2VudHJpZXMoc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgwLVx0XHRpZiAoaXBfc2V0X3RpbWVvdXRfZXhwaXJlZChleHRfdGltZW91dChlLCBzZXQpKSlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTgxOlx0XHRcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xODItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTg0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTg1Omxpc3Rfc2V0X3V0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE4Ni1cdCAgICAgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjIwPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIyMTpsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yMjItXHRcdFx0IHN0cnVjdCBzZXRfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIzNjpsaXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTIzNy1cdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzAtXHRcdGlwX3NldF9leHRfZGVzdHJveShzZXQsIG4pO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyNzE6XHRcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgbik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3Mi1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMwMi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjMwMzpcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMwNC1cdGlmIChuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMDU6XHRcdGxpc3Rfc2V0X3JlcGxhY2Uoc2V0LCBlLCBuKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzA2LVx0ZWxzZSBpZiAobmV4dClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTMxNz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjMxODpsaXN0X3NldF91ZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMxOS1cdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNDItXHRcdH1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MzQzOlx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzQ0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM0OT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjM1MDpsaXN0X3NldF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzUxLVx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDE3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMS1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDIyOlx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDIzLVx0c2V0LVx1MDAzZWVsZW1lbnRzID0gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQyNz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0Mjg6bGlzdF9zZXRfZGVzdHJveShzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyOS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00Mzk9c3RhdGljIHNpemVfdFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NDA6bGlzdF9zZXRfbWVtc2l6ZShjb25zdCBzdHJ1Y3QgbGlzdF9zZXQgKm1hcCwgc2l6ZV90IGRzaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDUzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDU0Omxpc3Rfc2V0X2hlYWQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDU3LVx0c3RydWN0IG5sYXR0ciAqbmVzdGVkO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NTg6XHRzaXplX3QgbWVtc2l6ZSA9IGxpc3Rfc2V0X21lbXNpemUobWFwLCBzZXQtXHUwMDNlZHNpemUpICYjNDM7IHNldC1cdTAwM2VleHRfc2l6ZTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDc3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDc4Omxpc3Rfc2V0X2xpc3QoY29uc3Qgc3RydWN0IGlwX3NldCAqc2V0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NzktXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01MzI9c3RhdGljIGJvb2xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTMzOmxpc3Rfc2V0X3NhbWVfc2V0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKmEsIGNvbnN0IHN0cnVjdCBpcF9zZXQgKmIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTUzNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTQ0Omxpc3Rfc2V0X2NhbmNlbF9nYyhzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU0NS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTEtXHQvKiBGbHVzaCBsaXN0IHRvIGRyb3AgcmVmZXJlbmNlcyB0byBvdGhlciBpcHNldHMgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUyOlx0bGlzdF9zZXRfZmx1c2goc2V0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUzLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgc2V0X3ZhcmlhbnQgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1NjpcdC5rYWR0XHQ9IGxpc3Rfc2V0X2thZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1NzpcdC51YWR0XHQ9IGxpc3Rfc2V0X3VhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1OC1cdC5hZHRcdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTk6XHRcdFtJUFNFVF9BRERdID0gbGlzdF9zZXRfdWFkZCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYwOlx0XHRbSVBTRVRfREVMXSA9IGxpc3Rfc2V0X3VkZWwsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU2MTpcdFx0W0lQU0VUX1RFU1RdID0gbGlzdF9zZXRfdXRlc3QsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cdH0sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU2MzpcdC5kZXN0cm95ID0gbGlzdF9zZXRfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY0Olx0LmZsdXNoXHQ9IGxpc3Rfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjU6XHQuaGVhZFx0PSBsaXN0X3NldF9oZWFkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjY6XHQubGlzdFx0PSBsaXN0X3NldF9saXN0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njc6XHQuc2FtZV9zZXQgPSBsaXN0X3NldF9zYW1lX3NldCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY4Olx0LmNhbmNlbF9nYyA9IGxpc3Rfc2V0X2NhbmNlbF9nYyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTY5LX07XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NzE9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTcyOmxpc3Rfc2V0X2djKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NzMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NTg1PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU4NjpsaXN0X3NldF9nY19pbml0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAoKmdjKShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU4Ny17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01OTc9aW5pdF9saXN0X3NldChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwgdTMyIHNpemUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYxNDpzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxpc3Rfc2V0X2xvY2tkZXBfa2V5O1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTYxNj1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYxNzpsaXN0X3NldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYxOC1cdFx0dTMyIGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjMxLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2MzI6XHRsb2NrZGVwX3NldF9jbGFzcyhcdTAwMjZzZXQtXHUwMDNlbG9jaywgXHUwMDI2bGlzdF9zZXRfbG9ja2RlcF9rZXkpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MzMtXHRzZXQtXHUwMDNldmFyaWFudCA9IFx1MDAyNnNldF92YXJpYW50O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjM5LVx0XHRzZXQtXHUwMDNldGltZW91dCA9IGlwX3NldF90aW1lb3V0X3VnZXQodGJbSVBTRVRfQVRUUl9USU1FT1VUXSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY0MDpcdFx0bGlzdF9zZXRfZ2NfaW5pdChzZXQsIGxpc3Rfc2V0X2djKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjQxLVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjQ0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2NDU6c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBsaXN0X3NldF90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0Ni1cdC5uYW1lXHRcdD0gXCYjMzQ7bGlzdDpzZXRcJiMzNDssXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02NTItXHQucmV2aXNpb25fbWF4XHQ9IElQU0VUX1RZUEVfUkVWX01BWCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjUzOlx0LmNyZWF0ZVx0XHQ9IGxpc3Rfc2V0X2NyZWF0ZSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjU0LVx0LmNyZWF0ZV9wb2xpY3lcdD0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njc4PXN0YXRpYyBpbnQgX19pbml0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY3OTpsaXN0X3NldF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4MC17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4MTpcdHJldHVybiBpcF9zZXRfdHlwZV9yZWdpc3RlcihcdTAwMjZsaXN0X3NldF90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgyLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTY4ND1zdGF0aWMgdm9pZCBfX2V4aXRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg1Omxpc3Rfc2V0X2Zpbmkodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg2LXtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg3LVx0cmN1X2JhcnJpZXIoKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg4Olx0aXBfc2V0X3R5cGVfdW5yZWdpc3RlcihcdTAwMjZsaXN0X3NldF90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg5LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjkwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTE6bW9kdWxlX2luaXQobGlzdF9zZXRfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY5Mjptb2R1bGVfZXhpdChsaXN0X3NldF9maW5pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4NjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXBfc2V0X2xpc3Rfc2V0LmNgIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIG9mIGBpcF9zZXRfbGlzdF9zZXQuY2AgcmV2ZWFscyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHM6IGBsaXN0X3NldF91YWR0YCwgYGxpc3Rfc2V0X3VhZGRgLCBgbGlzdF9zZXRfdWRlbGAsIGBsaXN0X3NldF91dGVzdGAsIGBsaXN0X3NldF9rYWR0YCwgYGxpc3Rfc2V0X2thZGRgLCBgbGlzdF9zZXRfa2RlbGAsIGFuZCBgbGlzdF9zZXRfa3Rlc3RgLiBCdXQgaG9sZCBvbiwgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgYWxzbyBleHBvcnRlZCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBieSBgbGlzdF9zZXRfZGVsYCwgYGxpc3Rfc2V0X3JlcGxhY2VgLCBgbGlzdF9zZXRfdWFkZGAsIGFuZCBgbGlzdF9zZXRfdWFkdGAuIFRoYXQgaW1tZWRpYXRlbHkgZWxldmF0ZXMgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gYSBwcmltZSBmb2N1cy4gVGhpcyBzZWVtcyB0byBiZSB3aGVyZSB0aGluZ3MgYXJlIHJlYWxseSBoYXBwZW5pbmcuCgpNeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGluIGBpcF9zZXRfY29yZS5jYC4gQWgsIGEgbWlub3IgaGljY3VwIOKAkyBJIHNlZSBgX19pcF9zZXRfcHV0X2J5aW5kZXhgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gYGlwX3NldF9wdXRfYnlpbmRleGAuIEkgd2FzIHJpZ2h0LCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFNvIHRoZSByaWdodCBmb2N1cyBpcyBpbmRlZWQgYGlwX3NldF9wdXRfYnlpbmRleGAuIEkmIzM5O2xsIGRlbHZlIGludG8gaXRzIGltcGxlbWVudGF0aW9uIGluIGBpcF9zZXRfY29yZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODY1Olx0XHRcdHNldC1cdTAwM2VyZWYtLTtcbiA4NjY6XHRcdH1cbiA4Njc6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZpcF9zZXRfcmVmX2xvY2spO1xuIDg2ODpcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODY5Olx0fVxuIDg3MDpcdFxuIDg3MTpcdHZvaWRcbiA4NzI6XHRpcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcbiA4NzM6XHR7XG4gODc0Olx0XHRzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCA9IGlwX3NldF9wZXJuZXQobmV0KTtcbiA4NzU6XHRcbiA4NzY6XHRcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbiA4Nzc6XHR9XG4gODc4Olx0RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbiA4Nzk6XHRcbiA4ODA6XHQvKiBHZXQgdGhlIG5hbWUgb2YgYSBzZXQgYmVoaW5kIGEgc2V0IGluZGV4LlxuIDg4MTpcdCAqIFNldCBpdHNlbGYgaXMgcHJvdGVjdGVkIGJ5IFJDVSwgYnV0IGl0cyBuYW1lIGlzbiYjMzk7dDogdG8gcHJvdGVjdCBhZ2FpbnN0XG4gODgyOlx0ICogcmVuYW1pbmcsIGdyYWIgaXBfc2V0X3JlZl9sb2NrIGFzIHJlYWRlciAoc2VlIGlwX3NldF9yZW5hbWUoKSkgYW5kIGNvcHkgdGhlXG4gODgzOlx0ICogbmFtZS5cbiA4ODQ6XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYXMgcG90ZW50aWFsIHRhcmdldHMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuIFRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBpcF9zZXRfcHV0X2J5aW5kZXhgLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3MgdGhlIHJpZ2h0IGNob2ljZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgYWxzbyB0byBsb29rIGF0IGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIGFzIEkga25vdyB0aGVzZSBhcmUgcmVsYXRlZCwgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZS4gSSBjb25maXJtZWQgYm90aCBgbGlzdF9zZXRfdWFkZGAgYW5kIGBsaXN0X3NldF91YWR0YCBhcmUgc3RhdGljLgoKQWgsIGJ1dCAqd2FpdCosIGBsaXN0X3NldF91YWRkYCwgYWx0aG91Z2ggc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHNldF92YXJpYW50YCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdvb2QgcG9pbnQgdG8gbm90ZSwgYWx0aG91Z2ggYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1ha2luZyBpdCBhIHN0cm9uZ2VyIGNvbnRlbmRlciBhcyBpdCYjMzk7cyBkaXJlY3RseSBleHBvc2VkLiBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGhlcmUuCgpMZXQmIzM5O3MgY2hlY2sgYGlwX3NldF9wdXRfYnlpbmRleGAgYWdhaW4uIElzIGl0IGEgKmhvdCBwYXRoKiBmdW5jdGlvbiwgbGlrZSBga2ZyZWVgLCB0aGF0JiMzOTtzIGNhbGxlZCBldmVyeXdoZXJlPyBObywgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gZGVsZXRpbmcgZWxlbWVudHMgZnJvbSBgbGlzdDpzZXRgLCB3aGljaCBpcyB1c2VmdWwuIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBgaXBfc2V0X3N3YXBgIG1lbnRpb25lZCwgYW5kIHRoZSBjb21tZW50IGFib3V0IHNlcmlhbGl6aW5nIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGl0LCBzd2FwcGluZyBib3RoIGBpcF9zZXRfbGlzdFtdYCBlbnRyaWVzIGFuZCBgc2V0LSZndDtyZWZgIHVuZGVyIGBpcF9zZXRfcmVmX2xvY2tgLiBXb3J0aCBhIGRlZXBlciBsb29rLCBzbyBJJiMzOTtsbCBhZGQgdGhhdCB0byBteSBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfc3dhcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjgyPV9faXBfc2V0X3B1dChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTY4OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2OTA6Lyogc2V0LVx1MDAzZXJlZiBjYW4gYmUgc3dhcHBlZCBvdXQgYnkgaXBfc2V0X3N3YXAsIG5ldGxpbmsgZXZlbnRzIChsaWtlIGR1bXApIG5lZWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02OTEtICogYSBzZXBhcmF0ZSByZWZlcmVuY2UgY291bnRlclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTM9X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTctXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODU4Olx0LyogU2VyaWFsaXplIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGlwX3NldF9zd2FwKCksIHdoaWNoIHN3YXBzIGJvdGhcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTktXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzUxPXN0YXRpYyBpbnQgaXBfc2V0X3JlbmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzk4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzOTk6c3RhdGljIGludCBpcF9zZXRfc3dhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE0MDAtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNzgtXHRbSVBTRVRfQ01EX1NXQVBdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTc5Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF9zd2FwLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxODAtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9ucyBpbiB0aGUgSVAgU2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHJlZmluZSBteSBhbmFseXNpcyBvZiB0aGlzIElQIHNldCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgcmFjZSBjb25kaXRpb25zLiBJJiMzOTt2ZSByZWFsaXplZCB0aGF0IGBpcF9zZXRfc3dhcGAgaXMgYSByZWFsbHkgaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0JiMzOTtzIG5vdCBpbmxpbmVkLCBldmVuIHRob3VnaCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCBrZXkgcG9pbnQgdG8gZXhhbWluZSBiZWNhdXNlIGl0IHJlcHJlc2VudHMgYSBkaXN0aW5jdCBwb2ludCBvZiBpbnRlcmFjdGlvbiwgYW5kIHRoZXJlZm9yZSwgY291bGQgZXhwb3NlIHRoZSBvdGhlciBzaWRlIG9mIGEgcG90ZW50aWFsIHJhY2UuIFNvLCBgaXBfc2V0X3N3YXBgIGlzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsgbGlzdC4KCkhtbSwgYnV0IHdhaXQuLi4gdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBgc3RhdGljYCBtYWtlcyBtZSBwYXVzZS4gVGhlIGd1aWRhbmNlIGlzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSG93ZXZlciwgc2luY2UgYGlwX3NldF9zd2FwYCBpcyBhICpjYWxsYmFjayosIGl0JiMzOTtzIGluaGVyZW50bHkgKm5vdCogaW5saW5lZC4gU28sIEkgdGhpbmsgaXQmIzM5O3Mgc3RpbGwgYSB2YWx1YWJsZSBzeW1ib2wgdG8gaW5jbHVkZS4gSSBzaG91bGQgYWxzbyBhZGQgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gdGhlIGxpc3QuIFRoYXQgb25lIGlzIG5vbi1zdGF0aWMsIHNvIGl0IGZpdHMgdGhlIHByZWZlcnJlZCBwYXR0ZXJuLiBMZXQmIzM5O3MgYWRkIHRoZW0gYm90aCEKCk5vdywgSSBzaG91bGQgcmUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyB3b3J0aCBlbnN1cmluZyBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBhc3BlY3RzLiBgSVBfU0VUYCBhbmQgYElQX1NFVF9MSVNUX1NFVGAgYXJlIHRoZSBtYWluIG9uZXMsIG9mIGNvdXJzZS4gUmlnaHQsIGFuZCB0aG9zZSBoYXZlIGRlcGVuZGVuY2llcy4gYElQX1NFVGAgZGVwZW5kcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAuIEVhc3kgZW5vdWdoLiBgSU5FVGAgaXMgYENPTkZJR19JTkVUYCwgTmV0d29ya2luZyBzdXBwb3J0LCBUQ1AvSVAgbmV0d29ya2luZywgYW5kIGBORVRGSUxURVJgIGlzIGBDT05GSUdfTkVURklMVEVSYCwgd2hpY2ggaXMgdGhlIE5ldGZpbHRlciBwYWNrZXQgZmlsdGVyaW5nIGZyYW1ld29yay4gU3RhbmRhcmQgY29uZmlncywgc28gdGhhdCYjMzk7cyBnb29kLiBCdXQgSSBuZWVkIHRvIGluY2x1ZGUgYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGluIG15IGFuYWx5c2lzLiBKdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGZvciBhbnkgb3RoZXIgc3VidGxlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtcyBoZXJlLiBMZXQgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGRlcGVuZGVuY2llcyBmb3IgYElQX1NFVF9MSVNUX1NFVGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwcyB0byBlbnN1cmUgcHJvcGVyIGltcGxlbWVudGF0aW9uIGFuZCBhdm9pZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIFdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBkb2VzIGl0IGhpbmdlIHVwb24/IERvZXMgaXQgbmVlZCBgSVBfU0VUYCB0byBiZSBlbmFibGVkIGZpcnN0LCBvciBkb2VzIGl0IGJyaW5nIGl0cyBvd24gc2V0IG9mIGRlcGVuZGVuY2llcz8gVW5kZXJzdGFuZGluZyB0aGlzIGRlcGVuZGVuY3kgZ3JhcGggaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIHRoaXMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTY1Olx0XG4gMTY2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4gMTcwOlx0XHRkZXBlbmRzIG9uIElQX1NFVFxuIDE3MTpcdFx0aGVscFxuIDE3MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBsaXN0OnNldCBzZXQgdHlwZSBzdXBwb3J0LiBJbiB0aGlzXG4gMTczOlx0XHQgIGtpbmQgb2Ygc2V0IG9uZSBjYW4gc3RvcmUgdGhlIG5hbWUgb2Ygb3RoZXIgc2V0cyBhbmQgaXQgZm9ybXNcbiAxNzQ6XHRcdCAgYW4gb3JkZXJlZCB1bmlvbiBvZiB0aGUgbWVtYmVyIHNldHMuXG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcbiAxNzk6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzNAoJCQkJCQkJb3V0cHV0OiAxNDEKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBoaW5nZXMgb24gYElQX1NFVGAuIElmIHRoYXQmIzM5O3MgZW5hYmxlZCwgdGhlbiB3ZSBhbHNvIG5lZWQgYElQX1NFVF9MSVNUX1NFVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50IChgc2V0LSZndDtyZWZgKSBpc24mIzM5O3QgcHJvcGVybHkgcHJvdGVjdGVkIHdoZW4gZGVjcmVtZW50ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aXRob3V0IGhvbGRpbmcgdGhlIGBpcF9zZXRfcmVmX2xvY2tgLCB3aGljaCBjcmVhdGVzIGEgY29uZmxpY3Qgd2l0aCBgaXBfc2V0X3N3YXBgLiBUaGUgZml4IGlzIHNpbXBsZTogYWRkIGB3cml0ZV9sb2NrX2JoKCZhbXA7aXBfc2V0X3JlZl9sb2NrKWAgYmVmb3JlIHRoZSBkZWNyZW1lbnQuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG5ldGZpbHRlciBpcHNldCBtb2R1bGUuIEl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIHRvIGBpcHNldGAsIHNvIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4KCk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcmFjZS4gSSBuZWVkIHRvIHplcm8gaW4gb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgZXhwb3J0ZWQgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGl0IGlzLCBzbyB0aGF0IGlzIGluY2x1ZGVkLiBgaXBfc2V0X3N3YXBgIGlzIHN0YXRpYywgYnV0IHNpbmNlIGl0JiMzOTtzIGEgbmV0bGluayBjYWxsYmFjaywgaXQmIzM5O3Mgbm90IGlubGluZWQsIHNvIGl0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuCgpMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxNC4wNDI1NTQwMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4Mjg0MjIyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgICBcImlwX3NldF9zd2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjE0LjA0MjU2MTQ5OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NzcxMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUxYzhlZThjMDNhY2M4OWI2OTNhMjM2MzdhN2E3YzMyYTNlMjA1ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1xcbmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXFxuQEAgLTg1NSw5ICs4NTUsMTYgQEAgX19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbiBcXHRzdHJ1Y3QgaXBfc2V0ICpzZXQ7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXFxuK1xcdCAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LVxcdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxcbitcXHQgKi9cXG4rXFx0d3JpdGVfbG9ja19iaChcXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcXG4gXFx0c2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtXFx1MDAzZWlwX3NldF9saXN0KVtpbmRleF07XFxuLVxcdGlmIChzZXQpXFxuLVxcdFxcdF9faXBfc2V0X3B1dChzZXQpO1xcbitcXHRpZiAoc2V0KSB7XFxuK1xcdFxcdEJVR19PTihzZXQtXFx1MDAzZXJlZiA9PSAwKTtcXG4rXFx0XFx0c2V0LVxcdTAwM2VyZWYtLTtcXG4rXFx0fVxcbitcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxNC4zMjk5OTMzNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM1NDA5NzQ2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgICBcImlwX3NldF9zd2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhlMWM4ZWU4YzAzYWNjODliNjkzYTIzNjM3YTdhN2MzMmEzZTIwNWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXG5pbmRleCA2Y2ZhZDE1MmQ3ZDFiLi4yZDNjODU4NmU2NDQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbkBAIC04NTUsOSArODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbiBcdHN0cnVjdCBpcF9zZXQgKnNldDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbitcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXG4rXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxuK1x0ICovXG4rXHR3cml0ZV9sb2NrX2JoKFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XG4gXHRzZXQgPSByY3VfZGVyZWZlcmVuY2UoaW5zdC1cdTAwM2VpcF9zZXRfbGlzdClbaW5kZXhdO1xuLVx0aWYgKHNldClcbi1cdFx0X19pcF9zZXRfcHV0KHNldCk7XG4rXHRpZiAoc2V0KSB7XG4rXHRcdEJVR19PTihzZXQtXHUwMDNlcmVmID09IDApO1xuK1x0XHRzZXQtXHUwMDNlcmVmLS07XG4rXHR9XG4rXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjE0LjMyOTk5NDc2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjEwMTI5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpcF9zZXRfY29yZS5jIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYCwgYW5kIGl0J3MgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoZSBjcnVjaWFsIGNoYW5nZSBpcyB0aGlzIGFkZGl0aW9uIG9mIGB3cml0ZV9sb2NrX2JoKFx1MDAyNmlwX3NldF9yZWZfbG9jayk7YCByaWdodCBiZWZvcmUgdGhlIGBzZXQtXHUwMDNlcmVmLS1gIG9wZXJhdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IHJhaXNpbmcgYSBmbGFnLiBJIHJlY2FsbCB0aGF0IGBfX2lwX3NldF9wdXQoc2V0KWAgd2FzIGxpa2VseSBqdXN0IGEgZGlyZWN0IGRlY3JlbWVudCBvZiBgc2V0LVx1MDAzZXJlZmAuIE5vdywgaXQgc2VlbXMgbGlrZSB3ZSdyZSBwcm90ZWN0aW5nIHRoYXQgZGVjcmVtZW50IHdpdGggYGlwX3NldF9yZWZfbG9ja2AuIFRoaXMgbWVyaXRzIGEgZGVlcGVyIGxvb2suXG5cbkkgbmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYF9faXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgdGhlIG9yaWdpbmFsIGBfX2lwX3NldF9wdXRgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxOC4xOTEwMDk4NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1OTg0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxOC4yMzI2MTIyODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQyNzE3Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipGaW5kaW5nIHRoZSBDYWxsZXJzIG9mIGBfX2lwX3NldF9wdXRfYnlpbmRleGAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIE15IGZpcnN0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBuYW1lIHN1Z2dlc3RzIGl0IGlzIHB1dHRpbmcgYW4gSVAgYnkgYW4gaW5kZXgsIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHBhcmFtZXRlcnMgdGhhdCBtaWdodCBpbnZvbHZlLiBOb3cgbGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MjAuOTc1MzMyNzExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDAzNDU4MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToyMi42NzU2ODgwNTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzODA2NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfc2V0X3B1dF9ieWluZGV4YCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBpcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaXRzZWxmIGlzIGEgY2x1ZSAtIGl0IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBpbnNlcnRpbmcgYW4gSVAgc2V0IGVsZW1lbnQgYXQgYSBzcGVjaWZpYyBpbmRleC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hvJ3MgY2FsbGluZyAqdGhpcyogZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBhbGwgaW52b2NhdGlvbnMgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gZ2V0IHRoZSBjb250ZXh0IOKAkyB0aGUgaG93IGFuZCB0aGUgd2h5IG9mIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgaW5zZXJ0aW9uIG9wZXJhdGlvbiwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgaGlnaGxpZ2h0IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIExldCdzIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MjUuOTI5NDk3MDM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTg2ODIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3B1dF9ieWluZGV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaD0zMTE9ZXh0ZXJuIGlwX3NldF9pZF90IGlwX3NldF9nZXRfYnluYW1lKHN0cnVjdCBuZXQgKm5ldCxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICpuYW1lLCBzdHJ1Y3QgaXBfc2V0ICoqc2V0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaDozMTM6ZXh0ZXJuIHZvaWQgaXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3MjppcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1OC1cXHRsaXN0X2RlbF9yY3UoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY4LVxcdGxpc3RfcmVwbGFjZV9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlbGlzdCwgXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTY5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgb2xkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXFx0Y2FsbF9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMzY9bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXFx0XFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGQtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXFx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQwODpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUucmVmaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVxcdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxMDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUuaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToyNy44ODgxODg0MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc1MjU4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXBfc2V0X2xpc3Rfc2V0LmMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jYCwgcmlnaHQ/IFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBkZWVwIHdpdGhpbiB0aGUgYGlwc2V0YCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBsaXN0OnNldGAgdHlwZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYWN0dWFsbHkgZW5hYmxlIHRoaXMgZmlsZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBpcyBrZXkgdG8gZ3Jhc3BpbmcgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgc3lzdGVtIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IEkgY2FuIGNvbnRyb2wgaXRzIGJlaGF2aW9yLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIG9wdGlvbnMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MzEuMTYzNDQ5ODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjk1ODQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfbGlzdF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19JUF9TRVRfSEFTSF9ORVRQT1JUTkVUKSArPSBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzAtIyBsaXN0IHR5cGVzXFxubmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfSVBfU0VUX0xJU1RfU0VUKSArPSBpcF9zZXRfbGlzdF9zZXQub1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzItaWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFNFVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTozMS4yMDY0MTQ1MTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NzU4ODQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3Mgb2YgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgSVAgU2V0IE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYC4gTWFrZXMgc2Vuc2UsIHRoYXQncyBleHBlY3RlZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLi4uIEknbSBub3RpY2luZyB0aGF0IGBpcF9zZXRfcHV0X2J5aW5kZXhgIGlzIGFsc28gZXhwb3J0ZWQuIFRoYXQgc3RyaWtlcyBtZSBhcyBhIGJpdCBvZGQuIEkgd29uZGVyIGlmIG90aGVyIG1vZHVsZXMgYmV5b25kIHRoZSBvYnZpb3VzIG9uZXMgYWN0dWFsbHkgcmVseSBvbiB0aGlzIGZ1bmN0aW9uPyBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGl0cyB1c2UuIFRvIGJlIGNlcnRhaW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UuIEknbGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9uZXRmaWx0ZXIveHRfc2V0LmNgIG9yIGEgc2ltaWxhciBmaWxlIHRoYXQgaGFuZGxlcyBJUCBzZXQgaW50ZXJhY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBiZSBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM0Ljk5NDAwNTIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE0OTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3MjppcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1OC1cXHRsaXN0X2RlbF9yY3UoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY4LVxcdGxpc3RfcmVwbGFjZV9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlbGlzdCwgXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTY5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgb2xkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXFx0Y2FsbF9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMzY9bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXFx0XFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGQtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXFx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQwODpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUucmVmaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVxcdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxMDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUuaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTozNS4wNDExNjE1NDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxOTUyMDIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaWFnbm9zdGljIFRob3VnaHRzIG9uIGBpcF9zZXRfbGlzdF9zZXQuY2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyB0aGF0IHRoZSBjb2RlJ3Mgb25seSB1c2VkIHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBUaGF0IGltbWVkaWF0ZWx5IG5hcnJvd3MgdGhpbmdzIGRvd24gc2lnbmlmaWNhbnRseS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0lQX1NFVGAgYW5kIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBhcmUgZW5hYmxlZC4gSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGBDT05GSUdfSVBfU0VUYCB3b3VsZCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIHVzZSB0aGUgYGlwX3NldGAgZnVuY3Rpb25hbGl0eSwgYnV0IEknbGwgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHRoZSBgQ09ORklHX0lQX1NFVF9MSVNUX1NFVGAgaXMgYWxzbyBlbmFibGVkIHNpbmNlIGl0IHdvdWxkIG5lZWQgdGhhdCBzcGVjaWZpYyBzZXR0aW5nIHRvIHVzZSBpdC4gS25vd2luZyB0aGVzZSBjb25maWd1cmF0aW9ucyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB3aXRoaW4gd2hpY2ggdGhpcyBzcGVjaWZpYyBjb2RlIG1vZHVsZSBvcGVyYXRlcy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IGl0IHJlbGF0ZXMgdG8gZXZlcnl0aGluZyBlbHNlIGFuZCB1bmRlcnN0YW5kIGFueSBkZXBlbmRlbmN5IG9yIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM4LjM2MDY4NDk4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwNzAzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVF9MSVNUX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM4LjQwNTc2MTE4NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk2Mjg1MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYElQX1NFVF9MSVNUX1NFVGAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIG1lbnRhbGx5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgSVBfU0VUX0xJU1RfU0VUYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nICpyZWxpZXMqIG9uLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIG5lY2Vzc2FyeSBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LCBhbmQgd2hhdCBpdCBtaWdodCBhZmZlY3QuIEknbSBnb2luZyB0byBzdGFydCBieSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHN0dWZmLCB0aGUga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIGl0IG5lZWRzLCB3aGF0IGNvbmZpZ3VyYXRpb24gZmlsZXMgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBhbnkgc3lzdGVtIHNlcnZpY2VzIGludm9sdmVkLlxuXG5JJ20gY29uc2lkZXJpbmcgd2hhdCBvdGhlciBgaXBzZXRgIHR5cGVzIGl0IG1pZ2h0IGJ1aWxkIHVwb24sIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cy4gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIHN1cHBvcnRpbmcgc29mdHdhcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIG9uZSBvZiB0aGUgZGVwZW5kZW50IGNvbXBvbmVudHMgY2hhbmdlcyBvciBpcyB1cGRhdGVkPyBUaGlua2luZyBmcm9tIHRoZSBhcmNoaXRlY3R1cmFsIGxldmVsIC0gSSdtIHRoaW5raW5nIG9mIHRoZSBrZXJuZWwgbW9kdWxlcywgdXNlciBzcGFjZSB0b29scyBhbmQgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzM2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6NDIuMjAyMDQ5MTc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFxuIDE2NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxuIDE2OTpcXHRcXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZXBlbmRzIG9uIElQX1NFVFxcbiAxNzE6XFx0XFx0aGVscFxcbiAxNzI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBsaXN0OnNldCBzZXQgdHlwZSBzdXBwb3J0LiBJbiB0aGlzXFxuIDE3MzpcXHRcXHQgIGtpbmQgb2Ygc2V0IG9uZSBjYW4gc3RvcmUgdGhlIG5hbWUgb2Ygb3RoZXIgc2V0cyBhbmQgaXQgZm9ybXNcXG4gMTc0OlxcdFxcdCAgYW4gb3JkZXJlZCB1bmlvbiBvZiB0aGUgbWVtYmVyIHNldHMuXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE3NzpcXHRcXG4gMTc4OlxcdGNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcXG4gMTc5OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcXFwiXFxuIDE4MDpcXHRcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxuIDE4MTpcXHRcXHRoZWxwXFxuIDE4MjpcXHRcXHQgIEVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXQgdG8gY2hlY2sgd2hpY2ggZnVuY3Rpb25zL2xpbmVzXFxuIDE4MzpcXHRcXHQgIGFyZSBleGVjdXRlZC5cXG4gMTg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo0Mi4yMDIxMjA5NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5Njg0NTI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkRpZ2dpbmcgaW50byBJUCBTZXQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIGJvdGggYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGVuYWJsZWQuIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYElQX1NFVGAuIEl0J3MgY3J1Y2lhbCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBjb25maWd1cmF0aW9ucywgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGVzIGFyZSBpbiBwbGFjZS4gU2luY2UgYElQX1NFVGAgb2Z0ZW4gcmVsaWVzIG9uIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUsIEkgaW1tZWRpYXRlbHkgc3VzcGVjdCBgTkVURklMVEVSYCBhbmQgYElORVRgLiBJIHNob3VsZCBjb25maXJtIHRoaXMuIExldCdzIGhlYWQgb3ZlciB0byB0aGUga2VybmVsJ3Mgc291cmNlIGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBvcHRpb24gbG9jYXRpb24gZm9yIGBJUF9TRVRgLiBUaGUgbG9naWNhbCBwbGFjZXMgdG8gY2hlY2sgYXJlIGxpa2VseSBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZGlyZWN0b3J5LCBvciBwZXJoYXBzIG1vcmUgc3BlY2lmaWNhbGx5IGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4gVGltZSB0byBnZXQgaW50byB0aG9zZSBLY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjQ1Ljc5ODk2ODk3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3MzAxOTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo0NS44NDI3MDg4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg1MTExODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZ2l2ZW4gcHJvbXB0OlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBpcHNldCoqXG5cbk9rYXksIHRoZSB0YXNrIGlzIHRvIGdlbmVyYXRlIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIEknbSB0aGUgb25lIGhhdmluZyB0aGVtLiBUaGUgdXNlcidzIGFuIGV4cGVydCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0YXJnZXRlZC4gVGhlIHByb21wdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LCBcIkxldCdzIGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLlwiIEFscmlnaHQsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEl0IG1lYW5zIEkgbmVlZCB0byB0aGluayBhYm91dCB3aGF0IEkgd291bGQgY29uc2lkZXIgd2hlbiBleGFtaW5pbmcgYSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSBmb3IgdGhlIGBpcHNldGAgbW9kdWxlIHdpdGhpbiB0aGUgYG5ldGZpbHRlcmAgc3Vic3lzdGVtLlxuXG5JJ2QgYmUgdGhpbmtpbmcgYWJvdXQgdGhlIGZvbGxvd2luZywgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgU2NvcGUqKjogRmlyc3QsIEknZCB3YW50IHRvIGdyYXNwIHdoYXQgdGhlIEtjb25maWcgZmlsZSBjb3ZlcnMuIElzIGl0IGp1c3QgdGhlIGBpcHNldGAgY29yZSwgb3IgYXJlIHRoZXJlIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZGlmZmVyZW50IGlwc2V0IHR5cGVzIChoYXNoLCBiaXRtYXAsIGV0Yy4pIG9yIGhlbHBlciBtb2R1bGVzPyBJJ2QgZXhwZWN0IHRvIHNlZSBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUuXG4qICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzKio6IEknZCBxdWlja2x5IGxvb2sgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGBpcHNldGAgdG8gYmUgYXZhaWxhYmxlPyBBcmUgdGhlcmUgYW55IGRlZmF1bHQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQga25vdyBhYm91dD8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzICpjcnVjaWFsKiBmb3IgZGVidWdnaW5nIGFuZCBlbmFibGluZyBmZWF0dXJlcyBjb3JyZWN0bHkuXG4qICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEknZCBiZSBsb29raW5nIGZvciB0aGUgYHRyaXN0YXRlYCBvcHRpb25zIGFuZCB0aGVpciBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gSSdkIGJlIGFzc2Vzc2luZyB3aGV0aGVyIHRoZXNlIG9wdGlvbnMgYXJlIG1vZHVsZXMgb3IgYnVpbHRpbi4gV2hpY2ggYXJlIGltcG9ydGFudCB0byBlbmFibGUgYXMgdGhlIGJhc2UgY29uZmlndXJhdGlvbj9cbiogICAqKkNvbXBsZXhpdHkqKjogSG93IGdyYW51bGFyIGFyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zPyBJcyBpdCBhIHNpbXBsZSBcImVuYWJsZS9kaXNhYmxlXCIgb3IgYXJlIHRoZXJlIHZhcmlvdXMgbGV2ZWxzIG9mIGN1c3RvbWl6YXRpb24gZm9yIHBlcmZvcm1hbmNlLCBtZW1vcnkgdXNhZ2UsIG9yIHNwZWNpZmljIHVzZSBjYXNlcz8gVGhpcyB3b3VsZCBoZWxwIG1lIGdhdWdlIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb21wbGV4aXR5IHRoYXQgdGhlIHVzZXIgbWlnaHQgZmFjZS5cbiogICAqKkRvY3VtZW50YXRpb24qKjogSSB3b3VsZCBwcm9iYWJseSBiZSB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AgdG8gY29uc2lkZXIgdGhlIGlwc2V0IGNvbW1hbmRzIHN1Y2ggYXMgYGlwc2V0IGNyZWF0ZWAsIGBpcHNldCBhZGRgLCBgaXBzZXQgZGVsYCwgZXRjLiBJJ2QgYmUgdGhpbmtpbmcgaWYgdGhlIGRvY3VtZW50YXRpb24gaXMgd2VsbC13cml0dGVuIGFuZCBpZiBpdCBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciBzb21lb25lIHdhbnRpbmcgdG8gY29uZmlndXJlIGBpcHNldGAuXG4qICAgKipFeGFtcGxlIGNvbmZpZ3VyYXRpb25zKio6IEknZCBsb29rIGF0IHRoZSBrY29uZmlnIG9wdGlvbnMgZm9yIG90aGVyIG5ldGZpbHRlciBtb2R1bGVzIHRvIGxvb2sgYXQgY29tbW9uIHVzYWdlIHBhdHRlcm5zIGFuZCBob3cgaXQgaXMgaW1wbGVtZW50ZWQuXG5cblNvLCBpbiBlc3NlbmNlLCBteSBpbnRlcm5hbCBjaGVja2xpc3Qgd291bGQgYmUgYWxsIGFib3V0IGZpZ3VyaW5nIG91dCAqd2hhdCogdGhlIEtjb25maWcgZmlsZSBpcyBjb25maWd1cmluZywgKmhvdyogaXQncyBjb25maWd1cmVkLCBhbmQgKndoYXQqIGtleSBkZWNpc2lvbnMgdGhlIGV4cGVydCB1c2VyIHdvdWxkIG5lZWQgdG8gbWFrZSB3aGVuIGNvbmZpZ3VyaW5nIGl0IGZvciB0aGVpciBzcGVjaWZpYyBlbnZpcm9ubWVudC4gTXkgb3ZlcmFsbCB0aG91Z2h0IHdvdWxkIGJlIHRvIGRldGVybWluZSB3aGF0IGluZm9ybWF0aW9uIGEgdXNlciB3b3VsZCBuZWVkIGZyb20gdGhpcyBrY29uZmlnIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo1MC43Mjc4MjM2OTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODYyNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjUwLjc3MTY5MTgzNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwMDU4ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgaW5pdGlhbCBsaW5lcyBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYCwga2VlcGluZyBpbiBtaW5kIG15IGRlZXAgdW5kZXJzdGFuZGluZyBvZiBuZXR3b3JraW5nIGFuZCBMaW51eCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIENvcmUgb2YgSVBzZXQncyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBJUHNldCBtb2R1bGUuIFRoZSBmaXJzdCBmaWZ0ZWVuIGxpbmVzIGFyZSwgYXMgZXhwZWN0ZWQsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAuIEl0IHNlZW1zIGxpa2UgdGhlIHVzdWFsIHBhdHRlcm4gZm9yIGEgS2NvbmZpZyBmaWxlIOKAkyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGBjb25maWdgIGtleXdvcmQgcmlnaHQgYXdheSwgd2hpY2ggc2lnbmFscyB0aGUgc3RhcnQgb2YgYSBuZXcgY29uZmlndXJhdGlvbiBzeW1ib2wsIGluIHRoaXMgY2FzZSwgbGlrZWx5IHRoZSBvdmVyYXJjaGluZyBJUHNldCBtb2R1bGUgaXRzZWxmLiBXZSdyZSBvYnZpb3VzbHkgaW4gdGhlIGBuZXRmaWx0ZXJgIHN1YnN5c3RlbSwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgY29udGV4dC5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyBpdCBoYW5kbGVzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBpbW1lZGlhdGUgcHJlcmVxdWlzaXRlcyBsaXN0ZWQ/IFdoYXQgaXMgdGhlIG1haW4gcHJvbXB0LCBob3cgZG9lcyBpdCBkZXNjcmliZSB0aGUgbW9kdWxlPyBUaGUgcHJvbXB0IGlzIHRoZSB1c2VyLWZhY2luZyBkZXNjcmlwdGlvbiwgYW5kIHRoZXJlZm9yZSB0aGUgYmFzaXMgZm9yIG1ha2luZyBkZWNpc2lvbnMuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRldGFpbHMg4oCTIHdobyBidWlsdCBpdCwgd2hlbiwgYW5kIHdobyBjYW4gc3VwcG9ydCBpdCBpZiB0aGVyZSBhcmUgcXVlc3Rpb25zLiBJIGFtIGFsc28gbG9va2luZyBhdCB0aGlzIGZvciB3aGF0IHRoZSB1c2VyIHdvdWxkIG5lZWQuXG5cblVsdGltYXRlbHksIEkgd2lsbCBiZSBhc3Nlc3NpbmcgaG93IHRoZSBtb2R1bGUgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBrZXJuZWwsIHdoYXQgcGFydHMgaXQgaGFuZGxlcywgYW5kIGlmIGl0IGlzIHdlbGwtd3JpdHRlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjU0LjU3MTc1MzQyNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgSVBfU0VUXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgc2V0IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBJUCBzZXQgc3VwcG9ydCB0byB0aGUga2VybmVsLlxcbiAgIDg6XFx0XFx0ICBJbiBvcmRlciB0byBkZWZpbmUgYW5kIHVzZSB0aGUgc2V0cywgeW91IG5lZWQgdGhlIHVzZXJzcGFjZSB1dGlsaXR5XFxuICAgOTpcXHRcXHQgIGlwc2V0KDgpLiBZb3UgY2FuIHVzZSB0aGUgc2V0cyBpbiBuZXRmaWx0ZXIgdmlhIHRoZSBcXFwic2V0XFxcIiBtYXRjaFxcbiAgMTA6XFx0XFx0ICBhbmQgXFxcIlNFVFxcXCIgdGFyZ2V0LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRpZiBJUF9TRVRcXG4gIDE1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo1NC41NzE4MjM1MDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2NzA5MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQIFNldCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSVBfU0VUYCBmZWF0dXJlLCBhbmQgaXQncyBidWlsdCBvbiBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzOiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkncmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQncyB0d2Vha2luZyBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3NldF9jb3JlLmNgLiBUaGlzIGZ1bmN0aW9uLCBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLCBpcyB3aGF0J3MgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgLCB3aGljaCBpcyBleHBvcnRlZCBhbmQgdGhlbiB1c2VkIGJ5IGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGBsaXN0X3NldGAgaXMgY2xlYW5pbmcgdXAgYWZ0ZXIgaXRzZWxmIGFuZCBjYWxsaW5nIHRoaXMgY29yZSBmdW5jdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIG90aGVyIG1vZHVsZXMgYXJlIHVzaW5nIHRoYXQgY29yZSBmdW5jdGlvbiBkaXJlY3RseSwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIFRoYXQncyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBpc24ndCBjYWxsZWQgc29tZXdoZXJlIGl0IHNob3VsZG4ndCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjAwLjgzODkyMTM1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzODAxMTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwX3NldF9wdXRfYnlpbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3Mj1pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjAyLjM3Njk0MTM4MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgyOTU0MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAqKlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgdXNhZ2Ugb2YgYGlwX3NldF9wdXRfYnlpbmRleGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXMsIGl0J3MgdXNlZCAqb25seSogd2l0aGluIHRoZSBgaXBfc2V0X3B1dF9ieWluZGV4YCBmdW5jdGlvbiBpdHNlbGYuXCIgVGhlbiwgSSByZWNhbGwgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIGBpcF9zZXRfbGlzdF9zZXQuY2AsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0IG1pZ2h0IGJlIGVuY2Fwc3VsYXRlZCB0aGVyZS4gQnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5IHN1cmUqIHRoYXQgbm8gb3RoZXIgcGFydCBvZiB0aGUgY29kZWJhc2UgaXMgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2guIFRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBhbnkgb3RoZXIgZmlsZXMuIExldCBtZSBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiBpdHMgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTg3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MDYuNTU5ODk4NDA2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI0NjAxMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtMzEyLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqbmFtZSwgc3RydWN0IGlwX3NldCAqKnNldCk7XFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTQtZXh0ZXJuIHZvaWQgaXBfc2V0X25hbWVfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4LCBjaGFyICpuYW1lKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzE9dm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzI6aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc5LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTgtXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZlLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2MC1cXHRjYWxsX3JjdShcXHUwMDI2ZS1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OC1cXHRsaXN0X3JlcGxhY2VfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZWxpc3QsIFxcdTAwMjZlLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2OTpcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIG9sZC1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVxcdGNhbGxfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjM2PWxpc3Rfc2V0X3VhZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjczLVxcdFxcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyNzQ6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM1MD1saXN0X3NldF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVxcdGlmIChlLnJlZmlkICE9IElQU0VUX0lOVkFMSURfSUQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MDg6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBlLnJlZmlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cXHRpZiAoYWR0ICE9IElQU0VUX0FERCB8fCByZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MTA6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBlLmlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MDguMDg0NTAzNjMzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjcyODIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSYWNlIENvbmRpdGlvbiBpbiBpcF9zZXRfbGlzdF9zZXQuYyoqXG5cbk9rYXksIGl0IHNlZW1zIHRoaXMgZml4IGlzIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBHb29kLCB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhlIHBhdGNoIGl0c2VsZiBpcyBzdHJhaWdodGZvcndhcmQgLSBhIGxvY2sgYW5kIGEgYEJVR19PTmAgYXJlIGFkZGVkLiBJdCdzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBpc3N1ZSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50LCBgc2V0LVx1MDAzZXJlZmAsIGNvdWxkIHBvdGVudGlhbGx5IGRyb3AgYmVsb3cgemVybyBvciBiZSBtb2RpZmllZCBjb25jdXJyZW50bHksIHdoaWNoIGlzIG9idmlvdXNseSBhIHByb2JsZW0uXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUgYXBwZWFyIHRvIGJlIGBpcF9zZXRfcHV0X2J5aW5kZXhgLCBgbGlzdF9zZXRfZGVsYCwgYGxpc3Rfc2V0X3JlcGxhY2VgLCBgbGlzdF9zZXRfdWFkZGAsIGFuZCBgbGlzdF9zZXRfdWFkdGAuIExldCdzIHNlZS4uLiBBaCwgeWVzLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgaXMgc3RhdGljLCBtZWFuaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgdGhlIGV4dGVybmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXaXRoIGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIHJlc2lkaW5nIGluIHRoZSBzYW1lIGZpbGUsIGBpcF9zZXRfbGlzdF9zZXQuY2AsIG1ha2VzIHRoZSBpbnZlc3RpZ2F0aW9uIG1vcmUgZWZmaWNpZW50LiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgZnVuY3Rpb25zIHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNjcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MTQuMDExNzg4NzM5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg3NjQ1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgbGlzdF9zZXRfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjE0LjA3NzY3MTUyOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTkxMDUxNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBsaXN0X3NldF9gIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gdGhlc2UgYGxpc3Rfc2V0X2AgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGUgcG9zc2libGUgaW1wbGljYXRpb25zLiBUaGlua2luZyB0aHJvdWdoIHRoZSBzeW50YXgsIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBzZXQgb2Ygb3BlcmF0aW9ucyBvbiBsaXN0cywgbWF5YmUgcmVsYXRlZCB0byBzZXQgdGhlb3J5IGNvbmNlcHRzPyBJbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLi4uIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGhlcmUuIEFyZSB0aGVzZSBsaWtlbHkgYnVpbHQtaW4gZnVuY3Rpb25zLCBvciBjdXN0b20gaW1wbGVtZW50YXRpb25zPyBJZiBjdXN0b20sIHRoZSBlZmZpY2llbmN5IGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIGFsZ29yaXRobXMgdXNlZCDigJMgdGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LlxuXG5NeSBpbnRlcm5hbCBjaGVja2xpc3QgaW1tZWRpYXRlbHkgZXhwYW5kcy4gRGF0YSB0eXBlIGhhbmRsaW5nOiBBcmUgdGhlcmUgYW55IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbnMgb3IgcG90ZW50aWFsIGVycm9ycyB0aGVyZSwgY29uc2lkZXJpbmcgbGlzdHMgYW5kIHNldHMgdXN1YWxseSBoYXZlIHNvbWUgc3RyaWN0bmVzcyB3aGVuIG1peGVkIGluIG9wZXJhdGlvbnM/IEVkZ2UgY2FzZXM6IEVtcHR5IGxpc3RzLCBlbXB0eSBzZXRzLCBsaXN0cyBvciBzZXRzIHdpdGggZHVwbGljYXRlcy4gSG93IGRvIHRoZXNlIGZ1bmN0aW9ucyBiZWhhdmUgaW4gdGhlc2Ugc2l0dWF0aW9ucz8gUG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cz8gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24gb3IgY29kZSB0byBjb25maXJtLiBUaGlua2luZyBhaGVhZCwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGNvbmN1cnJlbmN5IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiBhIGxhcmdlciwgbXVsdGktdGhyZWFkZWQgc3lzdGVtLiBPdmVyYWxsLCB0aGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gZGV0ZXJtaW5lIGhvdyBlZmZpY2llbnQgYW5kIHJlbGlhYmxlIHRoZXNlIHBhcnRpY3VsYXIgZnVuY3Rpb25zIGFyZSBpbiBhIGdpdmVuIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjY3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MTkuNjY4NzI1NDQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA2ODM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaXN0X3NldF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQ4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ5Omxpc3Rfc2V0X2t0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTUwLVxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTczPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjc0Omxpc3Rfc2V0X2thZGQoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNzUtXFx0ICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz05Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo5NDpsaXN0X3NldF9rZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTk1LVxcdCAgICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTEzPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjExNDpsaXN0X3NldF9rYWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTExNS1cXHQgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyMy1cXHRjYXNlIElQU0VUX1RFU1Q6XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMjQ6XFx0XFx0cmV0ID0gbGlzdF9zZXRfa3Rlc3Qoc2V0LCBza2IsIHBhciwgb3B0LCBcXHUwMDI2ZXh0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyNS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyNi1cXHRjYXNlIElQU0VUX0FERDpcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjEyNzpcXHRcXHRyZXQgPSBsaXN0X3NldF9rYWRkKHNldCwgc2tiLCBwYXIsIG9wdCwgXFx1MDAyNmV4dCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMjgtXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMjktXFx0Y2FzZSBJUFNFVF9ERUw6XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMzA6XFx0XFx0cmV0ID0gbGlzdF9zZXRfa2RlbChzZXQsIHNrYiwgcGFyLCBvcHQsIFxcdTAwMjZleHQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTMxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNDI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE0MzpfX2xpc3Rfc2V0X2RlbF9yY3Uoc3RydWN0IHJjdV9oZWFkICogcmN1KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTQ0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTUyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNTM6bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU5LVxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTYwOlxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjEtfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2NDpsaXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2NS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OS1cXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIG9sZC1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTcwOlxcdGNhbGxfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE3MS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE3ND1zZXRfY2xlYW51cF9lbnRyaWVzKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgwLVxcdFxcdGlmIChpcF9zZXRfdGltZW91dF9leHBpcmVkKGV4dF90aW1lb3V0KGUsIHNldCkpKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTgxOlxcdFxcdFxcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgyLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTg0PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE4NTpsaXN0X3NldF91dGVzdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTg2LVxcdCAgICAgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMjA9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIyMTpsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjIyLVxcdFxcdFxcdCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyMzY6bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjM3LVxcdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3MC1cXHRcXHRpcF9zZXRfZXh0X2Rlc3Ryb3koc2V0LCBuKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3MTpcXHRcXHRsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc2V0LCBleHQsIG4pO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjcyLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zMDItXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MzAzOlxcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zMDQtXFx0aWYgKG4pXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMDU6XFx0XFx0bGlzdF9zZXRfcmVwbGFjZShzZXQsIGUsIG4pO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzA2LVxcdGVsc2UgaWYgKG5leHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTMxNz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMTg6bGlzdF9zZXRfdWRlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzE5LVxcdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTM0Mi1cXHRcXHR9XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozNDM6XFx0XFx0bGlzdF9zZXRfZGVsKHNldCwgZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozNTA6bGlzdF9zZXRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNTEtXFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbiwgXFx1MDAyNm1hcC1cXHUwMDNlbWVtYmVycywgbGlzdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQyMjpcXHRcXHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMy1cXHRzZXQtXFx1MDAzZWVsZW1lbnRzID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDI3PXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0Mjg6bGlzdF9zZXRfZGVzdHJveShzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00Mjkte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00Mzk9c3RhdGljIHNpemVfdFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDQwOmxpc3Rfc2V0X21lbXNpemUoY29uc3Qgc3RydWN0IGxpc3Rfc2V0ICptYXAsIHNpemVfdCBkc2l6ZSlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ0MS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQ1Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NTQ6bGlzdF9zZXRfaGVhZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTctXFx0c3RydWN0IG5sYXR0ciAqbmVzdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDU4OlxcdHNpemVfdCBtZW1zaXplID0gbGlzdF9zZXRfbWVtc2l6ZShtYXAsIHNldC1cXHUwMDNlZHNpemUpICsgc2V0LVxcdTAwM2VleHRfc2l6ZTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ1OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDc3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ3ODpsaXN0X3NldF9saXN0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKnNldCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ3OS1cXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTUzMj1zdGF0aWMgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTMzOmxpc3Rfc2V0X3NhbWVfc2V0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKmEsIGNvbnN0IHN0cnVjdCBpcF9zZXQgKmIpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01MzQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU0NDpsaXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTQ1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUxLVxcdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUyOlxcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTMtfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTU2OlxcdC5rYWR0XFx0PSBsaXN0X3NldF9rYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTU3OlxcdC51YWR0XFx0PSBsaXN0X3NldF91YWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTU4LVxcdC5hZHRcXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1OTpcXHRcXHRbSVBTRVRfQUREXSA9IGxpc3Rfc2V0X3VhZGQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjA6XFx0XFx0W0lQU0VUX0RFTF0gPSBsaXN0X3NldF91ZGVsLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYxOlxcdFxcdFtJUFNFVF9URVNUXSA9IGxpc3Rfc2V0X3V0ZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTYyLVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XFx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY0OlxcdC5mbHVzaFxcdD0gbGlzdF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjU6XFx0LmhlYWRcXHQ9IGxpc3Rfc2V0X2hlYWQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjY6XFx0Lmxpc3RcXHQ9IGxpc3Rfc2V0X2xpc3QsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njc6XFx0LnNhbWVfc2V0ID0gbGlzdF9zZXRfc2FtZV9zZXQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njg6XFx0LmNhbmNlbF9nYyA9IGxpc3Rfc2V0X2NhbmNlbF9nYyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2OS19O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NzE9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU3MjpsaXN0X3NldF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU4NT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTg2Omxpc3Rfc2V0X2djX2luaXQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICgqZ2MpKHN0cnVjdCB0aW1lcl9saXN0ICp0KSlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU4Ny17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU5Nz1pbml0X2xpc3Rfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LCB1MzIgc2l6ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjEzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjE0OnN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbGlzdF9zZXRfbG9ja2RlcF9rZXk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz02MTY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjE3Omxpc3Rfc2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYxOC1cXHRcXHR1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYzMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYzMjpcXHRsb2NrZGVwX3NldF9jbGFzcyhcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrLCBcXHUwMDI2bGlzdF9zZXRfbG9ja2RlcF9rZXkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjMzLVxcdHNldC1cXHUwMDNldmFyaWFudCA9IFxcdTAwMjZzZXRfdmFyaWFudDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjM5LVxcdFxcdHNldC1cXHUwMDNldGltZW91dCA9IGlwX3NldF90aW1lb3V0X3VnZXQodGJbSVBTRVRfQVRUUl9USU1FT1VUXSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2NDA6XFx0XFx0bGlzdF9zZXRfZ2NfaW5pdChzZXQsIGxpc3Rfc2V0X2djKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0MS1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY0NTpzdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGxpc3Rfc2V0X3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0Ni1cXHQubmFtZVxcdFxcdD0gXFxcImxpc3Q6c2V0XFxcIixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjUyLVxcdC5yZXZpc2lvbl9tYXhcXHQ9IElQU0VUX1RZUEVfUkVWX01BWCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY1MzpcXHQuY3JlYXRlXFx0XFx0PSBsaXN0X3NldF9jcmVhdGUsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02NTQtXFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njc4PXN0YXRpYyBpbnQgX19pbml0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2Nzk6bGlzdF9zZXRfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgwLXtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4MTpcXHRyZXR1cm4gaXBfc2V0X3R5cGVfcmVnaXN0ZXIoXFx1MDAyNmxpc3Rfc2V0X3R5cGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgyLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njg0PXN0YXRpYyB2b2lkIF9fZXhpdFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg1Omxpc3Rfc2V0X2Zpbmkodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4Ni17XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02ODctXFx0cmN1X2JhcnJpZXIoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4ODpcXHRpcF9zZXRfdHlwZV91bnJlZ2lzdGVyKFxcdTAwMjZsaXN0X3NldF90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4OS19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02OTAtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTE6bW9kdWxlX2luaXQobGlzdF9zZXRfaW5pdCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTI6bW9kdWxlX2V4aXQobGlzdF9zZXRfZmluaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjE5LjcxMTc5ODM0MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU3NDIzNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGlwX3NldF9saXN0X3NldC5jYCBDb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gb2YgYGlwX3NldF9saXN0X3NldC5jYCByZXZlYWxzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50czogYGxpc3Rfc2V0X3VhZHRgLCBgbGlzdF9zZXRfdWFkZGAsIGBsaXN0X3NldF91ZGVsYCwgYGxpc3Rfc2V0X3V0ZXN0YCwgYGxpc3Rfc2V0X2thZHRgLCBgbGlzdF9zZXRfa2FkZGAsIGBsaXN0X3NldF9rZGVsYCwgYW5kIGBsaXN0X3NldF9rdGVzdGAuIEJ1dCBob2xkIG9uLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBhbHNvIGV4cG9ydGVkIGFuZCwgY3JpdGljYWxseSwgaXQncyBjYWxsZWQgYnkgYGxpc3Rfc2V0X2RlbGAsIGBsaXN0X3NldF9yZXBsYWNlYCwgYGxpc3Rfc2V0X3VhZGRgLCBhbmQgYGxpc3Rfc2V0X3VhZHRgLiBUaGF0IGltbWVkaWF0ZWx5IGVsZXZhdGVzIGBpcF9zZXRfcHV0X2J5aW5kZXhgIHRvIGEgcHJpbWUgZm9jdXMuIFRoaXMgc2VlbXMgdG8gYmUgd2hlcmUgdGhpbmdzIGFyZSByZWFsbHkgaGFwcGVuaW5nLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGluIGBpcF9zZXRfY29yZS5jYC4gQWgsIGEgbWlub3IgaGljY3VwIOKAkyBJIHNlZSBgX19pcF9zZXRfcHV0X2J5aW5kZXhgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gYGlwX3NldF9wdXRfYnlpbmRleGAuIEkgd2FzIHJpZ2h0LCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFNvIHRoZSByaWdodCBmb2N1cyBpcyBpbmRlZWQgYGlwX3NldF9wdXRfYnlpbmRleGAuIEknbGwgZGVsdmUgaW50byBpdHMgaW1wbGVtZW50YXRpb24gaW4gYGlwX3NldF9jb3JlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODYwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjI2Ljg2OTIyNDE0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY1OlxcdFxcdFxcdHNldC1cXHUwMDNlcmVmLS07XFxuIDg2NjpcXHRcXHR9XFxuIDg2NzpcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XFxuIDg2ODpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gODY5OlxcdH1cXG4gODcwOlxcdFxcbiA4NzE6XFx0dm9pZFxcbiA4NzI6XFx0aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuIDg3MzpcXHR7XFxuIDg3NDpcXHRcXHRzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCA9IGlwX3NldF9wZXJuZXQobmV0KTtcXG4gODc1OlxcdFxcbiA4NzY6XFx0XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbiA4Nzc6XFx0fVxcbiA4Nzg6XFx0RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcXG4gODc5OlxcdFxcbiA4ODA6XFx0LyogR2V0IHRoZSBuYW1lIG9mIGEgc2V0IGJlaGluZCBhIHNldCBpbmRleC5cXG4gODgxOlxcdCAqIFNldCBpdHNlbGYgaXMgcHJvdGVjdGVkIGJ5IFJDVSwgYnV0IGl0cyBuYW1lIGlzbid0OiB0byBwcm90ZWN0IGFnYWluc3RcXG4gODgyOlxcdCAqIHJlbmFtaW5nLCBncmFiIGlwX3NldF9yZWZfbG9jayBhcyByZWFkZXIgKHNlZSBpcF9zZXRfcmVuYW1lKCkpIGFuZCBjb3B5IHRoZVxcbiA4ODM6XFx0ICogbmFtZS5cXG4gODg0OlxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjoyNi44NjkzNjQ3M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk1MzMyNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWwgdGFyZ2V0cyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhlIG9idmlvdXMgZW50cnkgcG9pbnQgc2VlbXMgdG8gYmUgYGlwX3NldF9wdXRfYnlpbmRleGAsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBpdCdzIHRoZSByaWdodCBjaG9pY2UuIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIGFsc28gdG8gbG9vayBhdCBgbGlzdF9zZXRfdWFkZGAgYW5kIGBsaXN0X3NldF91YWR0YCBhcyBJIGtub3cgdGhlc2UgYXJlIHJlbGF0ZWQsIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgaWYgcG9zc2libGUuIEkgY29uZmlybWVkIGJvdGggYGxpc3Rfc2V0X3VhZGRgIGFuZCBgbGlzdF9zZXRfdWFkdGAgYXJlIHN0YXRpYy5cblxuQWgsIGJ1dCAqd2FpdCosIGBsaXN0X3NldF91YWRkYCwgYWx0aG91Z2ggc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHNldF92YXJpYW50YCBzbyBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gR29vZCBwb2ludCB0byBub3RlLCBhbHRob3VnaCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgbWFraW5nIGl0IGEgc3Ryb25nZXIgY29udGVuZGVyIGFzIGl0J3MgZGlyZWN0bHkgZXhwb3NlZC4gSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYyBoZXJlLlxuXG5MZXQncyBjaGVjayBgaXBfc2V0X3B1dF9ieWluZGV4YCBhZ2Fpbi4gSXMgaXQgYSAqaG90IHBhdGgqIGZ1bmN0aW9uLCBsaWtlIGBrZnJlZWAsIHRoYXQncyBjYWxsZWQgZXZlcnl3aGVyZT8gTm8sIGl0J3Mgc3BlY2lmaWMgdG8gZGVsZXRpbmcgZWxlbWVudHMgZnJvbSBgbGlzdDpzZXRgLCB3aGljaCBpcyB1c2VmdWwuIEkgdGhpbmsgaXQncyBhIGdvb2QgY2FuZGlkYXRlIHRvIHN0YXJ0IHdpdGguXG5cbkknbSBhbHNvIHNlZWluZyBgaXBfc2V0X3N3YXBgIG1lbnRpb25lZCwgYW5kIHRoZSBjb21tZW50IGFib3V0IHNlcmlhbGl6aW5nIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGl0LCBzd2FwcGluZyBib3RoIGBpcF9zZXRfbGlzdFtdYCBlbnRyaWVzIGFuZCBgc2V0LVx1MDAzZXJlZmAgdW5kZXIgYGlwX3NldF9yZWZfbG9ja2AuIFdvcnRoIGEgZGVlcGVyIGxvb2ssIHNvIEknbGwgYWRkIHRoYXQgdG8gbXkgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjozMy4xNjQ3MDA5NTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzY5MTM3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfc3dhcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTY4Mj1fX2lwX3NldF9wdXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTY4OS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjkwOi8qIHNldC1cXHUwMDNlcmVmIGNhbiBiZSBzd2FwcGVkIG91dCBieSBpcF9zZXRfc3dhcCwgbmV0bGluayBldmVudHMgKGxpa2UgZHVtcCkgbmVlZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02OTEtICogYSBzZXBhcmF0ZSByZWZlcmVuY2UgY291bnRlclxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mz1fX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU3LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODU4OlxcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1OS1cXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cXHUwMDNlcmVmIHVuZGVyIGlwX3NldF9yZWZfbG9jay5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzUxPXN0YXRpYyBpbnQgaXBfc2V0X3JlbmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzOTgtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzOTk6c3RhdGljIGludCBpcF9zZXRfc3dhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNDAwLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTc4LVxcdFtJUFNFVF9DTURfU1dBUF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE3OTpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3N3YXAsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxODAtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjMzLjQxODQwMDYyOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjkyNjA5NjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbnMgaW4gdGhlIElQIFNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcmVmaW5lIG15IGFuYWx5c2lzIG9mIHRoaXMgSVAgc2V0IGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciByYWNlIGNvbmRpdGlvbnMuIEkndmUgcmVhbGl6ZWQgdGhhdCBgaXBfc2V0X3N3YXBgIGlzIGEgcmVhbGx5IGludGVyZXN0aW5nIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoaXMgbWFrZXMgaXQgYSBwb3RlbnRpYWwga2V5IHBvaW50IHRvIGV4YW1pbmUgYmVjYXVzZSBpdCByZXByZXNlbnRzIGEgZGlzdGluY3QgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGNvdWxkIGV4cG9zZSB0aGUgb3RoZXIgc2lkZSBvZiBhIHBvdGVudGlhbCByYWNlLiBTbywgYGlwX3NldF9zd2FwYCBpcyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBcIkZvY3VzU3ltYm9sc1wiIGxpc3QuXG5cbkhtbSwgYnV0IHdhaXQuLi4gdGhlIGZhY3QgdGhhdCBpdCdzIGBzdGF0aWNgIG1ha2VzIG1lIHBhdXNlLiBUaGUgZ3VpZGFuY2UgaXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBIb3dldmVyLCBzaW5jZSBgaXBfc2V0X3N3YXBgIGlzIGEgKmNhbGxiYWNrKiwgaXQncyBpbmhlcmVudGx5ICpub3QqIGlubGluZWQuIFNvLCBJIHRoaW5rIGl0J3Mgc3RpbGwgYSB2YWx1YWJsZSBzeW1ib2wgdG8gaW5jbHVkZS4gSSBzaG91bGQgYWxzbyBhZGQgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gdGhlIGxpc3QuIFRoYXQgb25lIGlzIG5vbi1zdGF0aWMsIHNvIGl0IGZpdHMgdGhlIHByZWZlcnJlZCBwYXR0ZXJuLiBMZXQncyBhZGQgdGhlbSBib3RoIVxuXG5Ob3csIEkgc2hvdWxkIHJlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gSXQncyB3b3J0aCBlbnN1cmluZyBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGFzcGVjdHMuIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBhcmUgdGhlIG1haW4gb25lcywgb2YgY291cnNlLiBSaWdodCwgYW5kIHRob3NlIGhhdmUgZGVwZW5kZW5jaWVzLiBgSVBfU0VUYCBkZXBlbmRzIG9uIGJvdGggYElORVRgIGFuZCBgTkVURklMVEVSYC4gRWFzeSBlbm91Z2guIGBJTkVUYCBpcyBgQ09ORklHX0lORVRgLCBOZXR3b3JraW5nIHN1cHBvcnQsIFRDUC9JUCBuZXR3b3JraW5nLCBhbmQgYE5FVEZJTFRFUmAgaXMgYENPTkZJR19ORVRGSUxURVJgLCB3aGljaCBpcyB0aGUgTmV0ZmlsdGVyIHBhY2tldCBmaWx0ZXJpbmcgZnJhbWV3b3JrLiBTdGFuZGFyZCBjb25maWdzLCBzbyB0aGF0J3MgZ29vZC4gQnV0IEkgbmVlZCB0byBpbmNsdWRlIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBpbiBteSBhbmFseXNpcy4gSnVzdCB0byBiZSBzYWZlLCBJIHNob3VsZCBhbHNvIGRvdWJsZSBjaGVjayBmb3IgYW55IG90aGVyIHN1YnRsZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTY3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjQwLjcxMTAxMjc2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDM5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI6bWVudWNvbmZpZyBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSVAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ9aWYgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjpjb25maWcgSVBfU0VUX01BWFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIElQIHNldHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI4OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzYtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Njpjb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTU6Y29uZmlnIElQX1NFVF9IQVNIX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTI6Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcImhhc2g6bWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTM5OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY4OmNvbmZpZyBJUF9TRVRfTElTVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJsaXN0OnNldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6NDAuNzU1ODY0MTU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTQwNDUxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBgSVBfU0VUYCBhbmQgYElQX1NFVF9MSVNUX1NFVGAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW1zIGhlcmUuIExldCBtZSBxdWlja2x5IGFzc2VzcyB0aGUgZGVwZW5kZW5jaWVzIGZvciBgSVBfU0VUX0xJU1RfU0VUYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcHMgdG8gZW5zdXJlIHByb3BlciBpbXBsZW1lbnRhdGlvbiBhbmQgYXZvaWQgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLiBXaGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgZG9lcyBpdCBoaW5nZSB1cG9uPyBEb2VzIGl0IG5lZWQgYElQX1NFVGAgdG8gYmUgZW5hYmxlZCBmaXJzdCwgb3IgZG9lcyBpdCBicmluZyBpdHMgb3duIHNldCBvZiBkZXBlbmRlbmNpZXM/IFVuZGVyc3RhbmRpbmcgdGhpcyBkZXBlbmRlbmN5IGdyYXBoIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIHRoaXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjQ1LjI2OTkxMjk1NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdFxcbiAxNjY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY3OlxcdFxcbiAxNjg6XFx0Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcImxpc3Q6c2V0IHNldCBzdXBwb3J0XFxcIlxcbiAxNzA6XFx0XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG4gMTcxOlxcdFxcdGhlbHBcXG4gMTcyOlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbGlzdDpzZXQgc2V0IHR5cGUgc3VwcG9ydC4gSW4gdGhpc1xcbiAxNzM6XFx0XFx0ICBraW5kIG9mIHNldCBvbmUgY2FuIHN0b3JlIHRoZSBuYW1lIG9mIG90aGVyIHNldHMgYW5kIGl0IGZvcm1zXFxuIDE3NDpcXHRcXHQgIGFuIG9yZGVyZWQgdW5pb24gb2YgdGhlIG1lbWJlciBzZXRzLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNzc6XFx0XFxuIDE3ODpcXHRjb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxuIDE3OTpcXHRcXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjo0NS4yNjk5ODkzMTRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1MjcwODEwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0IGhpbmdlcyBvbiBgSVBfU0VUYC4gSWYgdGhhdCdzIGVuYWJsZWQsIHRoZW4gd2UgYWxzbyBuZWVkIGBJUF9TRVRfTElTVF9TRVRgLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgd2hlcmUgdGhlIHJlZmVyZW5jZSBjb3VudCAoYHNldC1cdTAwM2VyZWZgKSBpc24ndCBwcm9wZXJseSBwcm90ZWN0ZWQgd2hlbiBkZWNyZW1lbnRlZC4gVGhpcyBjYW4gaGFwcGVuIHdpdGhvdXQgaG9sZGluZyB0aGUgYGlwX3NldF9yZWZfbG9ja2AsIHdoaWNoIGNyZWF0ZXMgYSBjb25mbGljdCB3aXRoIGBpcF9zZXRfc3dhcGAuIFRoZSBmaXggaXMgc2ltcGxlOiBhZGQgYHdyaXRlX2xvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKWAgYmVmb3JlIHRoZSBkZWNyZW1lbnQuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IG1vZHVsZS4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyB0byBgaXBzZXRgLCBzbyBpdCdzIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyByYWNlLiBJIG5lZWQgdG8gemVybyBpbiBvbiBgaXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgYGlwX3NldF9zd2FwYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgd2hpY2ggaXQgaXMsIHNvIHRoYXQgaXMgaW5jbHVkZWQuIGBpcF9zZXRfc3dhcGAgaXMgc3RhdGljLCBidXQgc2luY2UgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIGl0J3Mgbm90IGlubGluZWQsIHNvIGl0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuXG5cbkxldCdzIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjM0LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjU3Ljc5NzA3MzE5OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODkyMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9MSVNUX1NFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICAgIFwiaXBfc2V0X3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9MSVNUX1NFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICAgIFwiaXBfc2V0X3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz5w7h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 12:19:58 +0000 UTC FinishedAt: 2026-08-02 12:36:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_LIST_SET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SET", "IP_SET_LIST_SET" ], "series_id": "f642acbf-11e4-4aeb-b1f3-109b3999d9f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_put_byindex", "ip_set_swap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZTFjOGVlOGMwM2FjYzg5YjY5M2EyMzYzN2E3YTdjMzJhM2UyMDVlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjozNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1xuQEAgLTg1NSw5ICYjNDM7ODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbiBcdHN0cnVjdCBpcF9zZXQgKnNldDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHQvKiBTZXJpYWxpemUgdGhlIGxpc3QgbG9va3VwIHdpdGggaXBfc2V0X3N3YXAoKSwgd2hpY2ggc3dhcHMgYm90aFxuJiM0MztcdCAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LVx1MDAzZXJlZiB1bmRlciBpcF9zZXRfcmVmX2xvY2suXG4mIzQzO1x0ICovXG4mIzQzO1x0d3JpdGVfbG9ja19iaChcdTAwMjZpcF9zZXRfcmVmX2xvY2spO1xuIFx0c2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtXHUwMDNlaXBfc2V0X2xpc3QpW2luZGV4XTtcbi1cdGlmIChzZXQpXG4tXHRcdF9faXBfc2V0X3B1dChzZXQpO1xuJiM0MztcdGlmIChzZXQpIHtcbiYjNDM7XHRcdEJVR19PTihzZXQtXHUwMDNlcmVmID09IDApO1xuJiM0MztcdFx0c2V0LVx1MDAzZXJlZi0tO1xuJiM0MztcdH1cbiYjNDM7XHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9MSVNUX1NFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF9wdXRfYnlpbmRleCYjMzQ7LAogICAgJiMzNDtpcF9zZXRfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhlMWM4ZWU4YzAzYWNjODliNjkzYTIzNjM3YTdhN2MzMmEzZTIwNWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jCmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMKQEAgLTg1NSw5ICYjNDM7ODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleCkKIAlzdHJ1Y3QgaXBfc2V0ICpzZXQ7CiAKIAlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CS8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoCiYjNDM7CSAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LSZndDtyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLgomIzQzOwkgKi8KJiM0MzsJd3JpdGVfbG9ja19iaCgmYW1wO2lwX3NldF9yZWZfbG9jayk7CiAJc2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtJmd0O2lwX3NldF9saXN0KVtpbmRleF07Ci0JaWYgKHNldCkKLQkJX19pcF9zZXRfcHV0KHNldCk7CiYjNDM7CWlmIChzZXQpIHsKJiM0MzsJCUJVR19PTihzZXQtJmd0O3JlZiA9PSAwKTsKJiM0MzsJCXNldC0mZ3Q7cmVmLS07CiYjNDM7CX0KJiM0MzsJd3JpdGVfdW5sb2NrX2JoKCZhbXA7aXBfc2V0X3JlZl9sb2NrKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXBfc2V0X2NvcmUuYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYCwgYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGUgY3J1Y2lhbCBjaGFuZ2UgaXMgdGhpcyBhZGRpdGlvbiBvZiBgd3JpdGVfbG9ja19iaCgmYW1wO2lwX3NldF9yZWZfbG9jayk7YCByaWdodCBiZWZvcmUgdGhlIGBzZXQtJmd0O3JlZi0tYCBvcGVyYXRpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcmFpc2luZyBhIGZsYWcuIEkgcmVjYWxsIHRoYXQgYF9faXBfc2V0X3B1dChzZXQpYCB3YXMgbGlrZWx5IGp1c3QgYSBkaXJlY3QgZGVjcmVtZW50IG9mIGBzZXQtJmd0O3JlZmAuIE5vdywgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgcHJvdGVjdGluZyB0aGF0IGRlY3JlbWVudCB3aXRoIGBpcF9zZXRfcmVmX2xvY2tgLiBUaGlzIG1lcml0cyBhIGRlZXBlciBsb29rLgoKSSBuZWVkIHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGxvY2suIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYF9faXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgdGhlIG9yaWdpbmFsIGBfX2lwX3NldF9wdXRgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg1MzpfX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODcyPWlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODc2Olx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkZpbmRpbmcgdGhlIENhbGxlcnMgb2YgYF9faXBfc2V0X3B1dF9ieWluZGV4YCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIE15IGZpcnN0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBuYW1lIHN1Z2dlc3RzIGl0IGlzIHB1dHRpbmcgYW4gSVAgYnkgYW4gaW5kZXgsIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHBhcmFtZXRlcnMgdGhhdCBtaWdodCBpbnZvbHZlLiBOb3cgbGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lwX3NldF9wdXRfYnlpbmRleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODUyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBpcF9zZXRfcHV0X2J5aW5kZXhgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgaXBfc2V0X3B1dF9ieWluZGV4YC4gVGhhdCBmdW5jdGlvbiBuYW1lIGl0c2VsZiBpcyBhIGNsdWUgLSBpdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGluc2VydGluZyBhbiBJUCBzZXQgZWxlbWVudCBhdCBhIHNwZWNpZmljIGluZGV4LiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aG8mIzM5O3MgY2FsbGluZyAqdGhpcyogZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBhbGwgaW52b2NhdGlvbnMgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gZ2V0IHRoZSBjb250ZXh0IOKAkyB0aGUgaG93IGFuZCB0aGUgd2h5IG9mIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgaW5zZXJ0aW9uIG9wZXJhdGlvbiwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgaGlnaGxpZ2h0IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIExldCYjMzk7cyBkaWcgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKm5hbWUsIHN0cnVjdCBpcF9zZXQgKipzZXQpO1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODcyOmlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU4LVx0bGlzdF9kZWxfcmN1KFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVx0Y2FsbF9yY3UoXHUwMDI2ZS1cdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjgtXHRsaXN0X3JlcGxhY2VfcmN1KFx1MDAyNm9sZC1cdTAwM2VsaXN0LCBcdTAwMjZlLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNjk6XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgb2xkLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVx0Y2FsbF9yY3UoXHUwMDI2b2xkLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNj1saXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXHRcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcdFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDA4Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5yZWZpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDEwOlx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzAwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpcF9zZXRfbGlzdF9zZXQuYyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AsIHJpZ2h0PyBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZGVlcCB3aXRoaW4gdGhlIGBpcHNldGAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBgbGlzdDpzZXRgIHR5cGUuIE15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFjdHVhbGx5IGVuYWJsZSB0aGlzIGZpbGUuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gaXMga2V5IHRvIGdyYXNwaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIHN5c3RlbSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBJIGNhbiBjb250cm9sIGl0cyBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWcgb3B0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9saXN0X3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZT0yOD1vYmotJChDT05GSUdfSVBfU0VUX0hBU0hfTkVUUE9SVE5FVCkgJiM0Mzs9IGlwX3NldF9oYXNoX25ldHBvcnRuZXQub1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzAtIyBsaXN0IHR5cGVzXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JUF9TRVRfTElTVF9TRVQpICYjNDM7PSBpcF9zZXRfbGlzdF9zZXQub1xubmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZS0zMi1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX0lQU0VUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIG9mIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBJUCBTZXQgTW9kdWxlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYC4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJJiMzOTttIG5vdGljaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgYWxzbyBleHBvcnRlZC4gVGhhdCBzdHJpa2VzIG1lIGFzIGEgYml0IG9kZC4gSSB3b25kZXIgaWYgb3RoZXIgbW9kdWxlcyBiZXlvbmQgdGhlIG9idmlvdXMgb25lcyBhY3R1YWxseSByZWx5IG9uIHRoaXMgZnVuY3Rpb24/IEl0IHdvdWxkIGJlIGdvb2QgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaXRzIHVzZS4gVG8gYmUgY2VydGFpbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9uZXRmaWx0ZXIveHRfc2V0LmNgIG9yIGEgc2ltaWxhciBmaWxlIHRoYXQgaGFuZGxlcyBJUCBzZXQgaW50ZXJhY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBiZSBrZXkgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X3B1dF9ieWluZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg1MzpfX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9ODcxPXZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzI6aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTgtXHRsaXN0X2RlbF9yY3UoXHUwMDI2ZS1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5Olx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGUtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjAtXHRjYWxsX3JjdShcdTAwMjZlLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OC1cdGxpc3RfcmVwbGFjZV9yY3UoXHUwMDI2b2xkLVx1MDAzZWxpc3QsIFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBvbGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXHRjYWxsX3JjdShcdTAwMjZvbGQtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjM2PWxpc3Rfc2V0X3VhZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3My1cdFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Mjc0Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZC1cdTAwM2VpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0zNTA9bGlzdF9zZXRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXHRpZiAoZS5yZWZpZCAhPSBJUFNFVF9JTlZBTElEX0lEKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MDg6XHRcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLnJlZmlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVx0aWYgKGFkdCAhPSBJUFNFVF9BREQgfHwgcmV0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MTA6XHRcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLmlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaWFnbm9zdGljIFRob3VnaHRzIG9uIGBpcF9zZXRfbGlzdF9zZXQuY2AqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgdGhhdCB0aGUgY29kZSYjMzk7cyBvbmx5IHVzZWQgd2l0aGluIGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgaW1tZWRpYXRlbHkgbmFycm93cyB0aGluZ3MgZG93biBzaWduaWZpY2FudGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBxdWlja2x5IGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0lQX1NFVGAgYW5kIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBhcmUgZW5hYmxlZC4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBgQ09ORklHX0lQX1NFVGAgd291bGQgbmVlZCB0byBiZSBlbmFibGVkIGZvciBpdCB0byB1c2UgdGhlIGBpcF9zZXRgIGZ1bmN0aW9uYWxpdHksIGJ1dCBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoYXQgdGhlIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBpcyBhbHNvIGVuYWJsZWQgc2luY2UgaXQgd291bGQgbmVlZCB0aGF0IHNwZWNpZmljIHNldHRpbmcgdG8gdXNlIGl0LiBLbm93aW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCB0aGlzIHNwZWNpZmljIGNvZGUgbW9kdWxlIG9wZXJhdGVzLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQgcmVsYXRlcyB0byBldmVyeXRoaW5nIGVsc2UgYW5kIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY3kgb3IgY29uZmxpY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUX0xJU1RfU0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgYElQX1NFVF9MSVNUX1NFVGAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIG1lbnRhbGx5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgSVBfU0VUX0xJU1RfU0VUYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nICpyZWxpZXMqIG9uLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIG5lY2Vzc2FyeSBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LCBhbmQgd2hhdCBpdCBtaWdodCBhZmZlY3QuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBzdHVmZiwgdGhlIGtlcm5lbCBtb2R1bGVzIG9yIGxpYnJhcmllcyBpdCBuZWVkcywgd2hhdCBjb25maWd1cmF0aW9uIGZpbGVzIG1pZ2h0IGJlIHJlbGV2YW50LCBhbmQgYW55IHN5c3RlbSBzZXJ2aWNlcyBpbnZvbHZlZC4KCkkmIzM5O20gY29uc2lkZXJpbmcgd2hhdCBvdGhlciBgaXBzZXRgIHR5cGVzIGl0IG1pZ2h0IGJ1aWxkIHVwb24sIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cy4gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIHN1cHBvcnRpbmcgc29mdHdhcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIG9uZSBvZiB0aGUgZGVwZW5kZW50IGNvbXBvbmVudHMgY2hhbmdlcyBvciBpcyB1cGRhdGVkPyBUaGlua2luZyBmcm9tIHRoZSBhcmNoaXRlY3R1cmFsIGxldmVsIC0gSSYjMzk7bSB0aGlua2luZyBvZiB0aGUga2VybmVsIG1vZHVsZXMsIHVzZXIgc3BhY2UgdG9vbHMgYW5kIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFxuIDE2NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgSVBfU0VUX0xJU1RfU0VUXG4gMTY5Olx0XHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xuIDE3MDpcdFx0ZGVwZW5kcyBvbiBJUF9TRVRcbiAxNzE6XHRcdGhlbHBcbiAxNzI6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbGlzdDpzZXQgc2V0IHR5cGUgc3VwcG9ydC4gSW4gdGhpc1xuIDE3MzpcdFx0ICBraW5kIG9mIHNldCBvbmUgY2FuIHN0b3JlIHRoZSBuYW1lIG9mIG90aGVyIHNldHMgYW5kIGl0IGZvcm1zXG4gMTc0Olx0XHQgIGFuIG9yZGVyZWQgdW5pb24gb2YgdGhlIG1lbWJlciBzZXRzLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNzc6XHRcbiAxNzg6XHRjb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXG4gMTc5Olx0XHRib29sIFwmIzM0O0VuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcJiMzNDtcbiAxODA6XHRcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbiAxODE6XHRcdGhlbHBcbiAxODI6XHRcdCAgRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldCB0byBjaGVjayB3aGljaCBmdW5jdGlvbnMvbGluZXNcbiAxODM6XHRcdCAgYXJlIGV4ZWN1dGVkLlxuIDE4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkRpZ2dpbmcgaW50byBJUCBTZXQgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCBib3RoIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBlbmFibGVkLiBCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgSVBfU0VUYC4gSXQmIzM5O3MgY3J1Y2lhbCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBjb25maWd1cmF0aW9ucywgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGVzIGFyZSBpbiBwbGFjZS4gU2luY2UgYElQX1NFVGAgb2Z0ZW4gcmVsaWVzIG9uIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUsIEkgaW1tZWRpYXRlbHkgc3VzcGVjdCBgTkVURklMVEVSYCBhbmQgYElORVRgLiBJIHNob3VsZCBjb25maXJtIHRoaXMuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gdGhlIGtlcm5lbCYjMzk7cyBzb3VyY2UgYW5kIHBpbnBvaW50IHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbiBsb2NhdGlvbiBmb3IgYElQX1NFVGAuIFRoZSBsb2dpY2FsIHBsYWNlcyB0byBjaGVjayBhcmUgbGlrZWx5IGluIHRoZSBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBkaXJlY3RvcnksIG9yIHBlcmhhcHMgbW9yZSBzcGVjaWZpY2FsbHkgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLiBUaW1lIHRvIGdldCBpbnRvIHRob3NlIEtjb25maWcgZmlsZXMgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MDMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBnaXZlbiBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBpcHNldCoqCgpPa2F5LCB0aGUgdGFzayBpcyB0byBnZW5lcmF0ZSBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZW0uIFRoZSB1c2VyJiMzOTtzIGFuIGV4cGVydCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0YXJnZXRlZC4gVGhlIHByb21wdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LCAmIzM0O0xldCYjMzk7cyBjaGVjayBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4mIzM0OyBBbHJpZ2h0LCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbWVhbnMgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoYXQgSSB3b3VsZCBjb25zaWRlciB3aGVuIGV4YW1pbmluZyBhIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGlwc2V0YCBtb2R1bGUgd2l0aGluIHRoZSBgbmV0ZmlsdGVyYCBzdWJzeXN0ZW0uCgpJJiMzOTtkIGJlIHRoaW5raW5nIGFib3V0IHRoZSBmb2xsb3dpbmcsIGJhc2VkIG9uIG15IGZhbWlsaWFyaXR5IHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqICAgKipVbmRlcnN0YW5kaW5nIHRoZSBTY29wZSoqOiBGaXJzdCwgSSYjMzk7ZCB3YW50IHRvIGdyYXNwIHdoYXQgdGhlIEtjb25maWcgZmlsZSBjb3ZlcnMuIElzIGl0IGp1c3QgdGhlIGBpcHNldGAgY29yZSwgb3IgYXJlIHRoZXJlIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZGlmZmVyZW50IGlwc2V0IHR5cGVzIChoYXNoLCBiaXRtYXAsIGV0Yy4pIG9yIGhlbHBlciBtb2R1bGVzPyBJJiMzOTtkIGV4cGVjdCB0byBzZWUgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzKio6IEkmIzM5O2QgcXVpY2tseSBsb29rIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaXBzZXRgIHRvIGJlIGF2YWlsYWJsZT8gQXJlIHRoZXJlIGFueSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGtub3cgYWJvdXQ/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyAqY3J1Y2lhbCogZm9yIGRlYnVnZ2luZyBhbmQgZW5hYmxpbmcgZmVhdHVyZXMgY29ycmVjdGx5LgoqICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIGB0cmlzdGF0ZWAgb3B0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBoZWxwIHRleHQuIEkmIzM5O2QgYmUgYXNzZXNzaW5nIHdoZXRoZXIgdGhlc2Ugb3B0aW9ucyBhcmUgbW9kdWxlcyBvciBidWlsdGluLiBXaGljaCBhcmUgaW1wb3J0YW50IHRvIGVuYWJsZSBhcyB0aGUgYmFzZSBjb25maWd1cmF0aW9uPwoqICAgKipDb21wbGV4aXR5Kio6IEhvdyBncmFudWxhciBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSXMgaXQgYSBzaW1wbGUgJiMzNDtlbmFibGUvZGlzYWJsZSYjMzQ7IG9yIGFyZSB0aGVyZSB2YXJpb3VzIGxldmVscyBvZiBjdXN0b21pemF0aW9uIGZvciBwZXJmb3JtYW5jZSwgbWVtb3J5IHVzYWdlLCBvciBzcGVjaWZpYyB1c2UgY2FzZXM/IFRoaXMgd291bGQgaGVscCBtZSBnYXVnZSB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29tcGxleGl0eSB0aGF0IHRoZSB1c2VyIG1pZ2h0IGZhY2UuCiogICAqKkRvY3VtZW50YXRpb24qKjogSSB3b3VsZCBwcm9iYWJseSBiZSB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AgdG8gY29uc2lkZXIgdGhlIGlwc2V0IGNvbW1hbmRzIHN1Y2ggYXMgYGlwc2V0IGNyZWF0ZWAsIGBpcHNldCBhZGRgLCBgaXBzZXQgZGVsYCwgZXRjLiBJJiMzOTtkIGJlIHRoaW5raW5nIGlmIHRoZSBkb2N1bWVudGF0aW9uIGlzIHdlbGwtd3JpdHRlbiBhbmQgaWYgaXQgcHJvdmlkZXMgc3VmZmljaWVudCBndWlkYW5jZSBmb3Igc29tZW9uZSB3YW50aW5nIHRvIGNvbmZpZ3VyZSBgaXBzZXRgLgoqICAgKipFeGFtcGxlIGNvbmZpZ3VyYXRpb25zKio6IEkmIzM5O2QgbG9vayBhdCB0aGUga2NvbmZpZyBvcHRpb25zIGZvciBvdGhlciBuZXRmaWx0ZXIgbW9kdWxlcyB0byBsb29rIGF0IGNvbW1vbiB1c2FnZSBwYXR0ZXJucyBhbmQgaG93IGl0IGlzIGltcGxlbWVudGVkLgoKU28sIGluIGVzc2VuY2UsIG15IGludGVybmFsIGNoZWNrbGlzdCB3b3VsZCBiZSBhbGwgYWJvdXQgZmlndXJpbmcgb3V0ICp3aGF0KiB0aGUgS2NvbmZpZyBmaWxlIGlzIGNvbmZpZ3VyaW5nLCAqaG93KiBpdCYjMzk7cyBjb25maWd1cmVkLCBhbmQgKndoYXQqIGtleSBkZWNpc2lvbnMgdGhlIGV4cGVydCB1c2VyIHdvdWxkIG5lZWQgdG8gbWFrZSB3aGVuIGNvbmZpZ3VyaW5nIGl0IGZvciB0aGVpciBzcGVjaWZpYyBlbnZpcm9ubWVudC4gTXkgb3ZlcmFsbCB0aG91Z2h0IHdvdWxkIGJlIHRvIGRldGVybWluZSB3aGF0IGluZm9ybWF0aW9uIGEgdXNlciB3b3VsZCBuZWVkIGZyb20gdGhpcyBrY29uZmlnIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjptZW51Y29uZmlnIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xND1pZiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjpjb25maWcgSVBfU0VUX01BWFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3LVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIElQIHNldHNcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mjg6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zNi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Njpjb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDptYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBpbml0aWFsIGxpbmVzIG9mIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLCBrZWVwaW5nIGluIG1pbmQgbXkgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIG5ldHdvcmtpbmcgYW5kIExpbnV4IGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipBbmFseXppbmcgdGhlIENvcmUgb2YgSVBzZXQmIzM5O3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBJUHNldCBtb2R1bGUuIFRoZSBmaXJzdCBmaWZ0ZWVuIGxpbmVzIGFyZSwgYXMgZXhwZWN0ZWQsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAuIEl0IHNlZW1zIGxpa2UgdGhlIHVzdWFsIHBhdHRlcm4gZm9yIGEgS2NvbmZpZyBmaWxlIOKAkyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGBjb25maWdgIGtleXdvcmQgcmlnaHQgYXdheSwgd2hpY2ggc2lnbmFscyB0aGUgc3RhcnQgb2YgYSBuZXcgY29uZmlndXJhdGlvbiBzeW1ib2wsIGluIHRoaXMgY2FzZSwgbGlrZWx5IHRoZSBvdmVyYXJjaGluZyBJUHNldCBtb2R1bGUgaXRzZWxmLiBXZSYjMzk7cmUgb2J2aW91c2x5IGluIHRoZSBgbmV0ZmlsdGVyYCBzdWJzeXN0ZW0sIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGNvbnRleHQuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaG93IGl0IGhhbmRsZXMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSBwcmVyZXF1aXNpdGVzIGxpc3RlZD8gV2hhdCBpcyB0aGUgbWFpbiBwcm9tcHQsIGhvdyBkb2VzIGl0IGRlc2NyaWJlIHRoZSBtb2R1bGU/IFRoZSBwcm9tcHQgaXMgdGhlIHVzZXItZmFjaW5nIGRlc2NyaXB0aW9uLCBhbmQgdGhlcmVmb3JlIHRoZSBiYXNpcyBmb3IgbWFraW5nIGRlY2lzaW9ucy4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRldGFpbHMg4oCTIHdobyBidWlsdCBpdCwgd2hlbiwgYW5kIHdobyBjYW4gc3VwcG9ydCBpdCBpZiB0aGVyZSBhcmUgcXVlc3Rpb25zLiBJIGFtIGFsc28gbG9va2luZyBhdCB0aGlzIGZvciB3aGF0IHRoZSB1c2VyIHdvdWxkIG5lZWQuCgpVbHRpbWF0ZWx5LCBJIHdpbGwgYmUgYXNzZXNzaW5nIGhvdyB0aGUgbW9kdWxlIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUga2VybmVsLCB3aGF0IHBhcnRzIGl0IGhhbmRsZXMsIGFuZCBpZiBpdCBpcyB3ZWxsLXdyaXR0ZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBJUF9TRVRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgNTpcdFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgSVAgc2V0IHN1cHBvcnQgdG8gdGhlIGtlcm5lbC5cbiAgIDg6XHRcdCAgSW4gb3JkZXIgdG8gZGVmaW5lIGFuZCB1c2UgdGhlIHNldHMsIHlvdSBuZWVkIHRoZSB1c2Vyc3BhY2UgdXRpbGl0eVxuICAgOTpcdFx0ICBpcHNldCg4KS4gWW91IGNhbiB1c2UgdGhlIHNldHMgaW4gbmV0ZmlsdGVyIHZpYSB0aGUgXCYjMzQ7c2V0XCYjMzQ7IG1hdGNoXG4gIDEwOlx0XHQgIGFuZCBcJiMzNDtTRVRcJiMzNDsgdGFyZ2V0LlxuICAxMTpcdFxuICAxMjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRpZiBJUF9TRVRcbiAgMTU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQIFNldCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBJUF9TRVRgIGZlYXR1cmUsIGFuZCBpdCYjMzk7cyBidWlsdCBvbiBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzOiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkmIzM5O3JlIHRoZSB1c3VhbCBzdXNwZWN0cy4gSSBzZWUgdGhpcyBwYXRjaCwgYW5kIGl0JiMzOTtzIHR3ZWFraW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAsIHNwZWNpZmljYWxseSBpbiBgaXBfc2V0X2NvcmUuY2AuIFRoaXMgZnVuY3Rpb24sIGBfX2lwX3NldF9wdXRfYnlpbmRleGAsIGlzIHdoYXQmIzM5O3MgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgLCB3aGljaCBpcyBleHBvcnRlZCBhbmQgdGhlbiB1c2VkIGJ5IGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGBsaXN0X3NldGAgaXMgY2xlYW5pbmcgdXAgYWZ0ZXIgaXRzZWxmIGFuZCBjYWxsaW5nIHRoaXMgY29yZSBmdW5jdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIG90aGVyIG1vZHVsZXMgYXJlIHVzaW5nIHRoYXQgY29yZSBmdW5jdGlvbiBkaXJlY3RseSwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLiBUaGF0JiMzOTtzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGlzbiYjMzk7dCBjYWxsZWQgc29tZXdoZXJlIGl0IHNob3VsZG4mIzM5O3QgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXBfc2V0X3B1dF9ieWluZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3Mj1pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgaXBfc2V0X3B1dF9ieWluZGV4YCoqCgpNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgdXNhZ2Ugb2YgYGlwX3NldF9wdXRfYnlpbmRleGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXMsIGl0JiMzOTtzIHVzZWQgKm9ubHkqIHdpdGhpbiB0aGUgYGlwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXRzZWxmLiYjMzQ7IFRoZW4sIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBpdCBtaWdodCBiZSBlbmNhcHN1bGF0ZWQgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSBzdXJlKiB0aGF0IG5vIG90aGVyIHBhcnQgb2YgdGhlIGNvZGViYXNlIGlzIHJlbHlpbmcgb24gdGhpcyBmdW5jdGlvbi4gU28sIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBUaGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gYW55IG90aGVyIGZpbGVzLiBMZXQgbWUgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgaXRzIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBubGF0dHIgKm5hbWUsIHN0cnVjdCBpcF9zZXQgKipzZXQpO1xuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODcyOmlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc3LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU4LVx0bGlzdF9kZWxfcmN1KFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBlLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVx0Y2FsbF9yY3UoXHUwMDI2ZS1cdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjgtXHRsaXN0X3JlcGxhY2VfcmN1KFx1MDAyNm9sZC1cdTAwM2VsaXN0LCBcdTAwMjZlLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNjk6XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgb2xkLVx1MDAzZWlkKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVx0Y2FsbF9yY3UoXHUwMDI2b2xkLVx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNj1saXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXHRcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcdFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cdTAwM2VuZXQsIGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDA4Olx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5yZWZpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDEwOlx0XHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS5pZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNjcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSYWNlIENvbmRpdGlvbiBpbiBpcF9zZXRfbGlzdF9zZXQuYyoqCgpPa2F5LCBpdCBzZWVtcyB0aGlzIGZpeCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGlwX3NldF9saXN0X3NldC5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZCAtIGEgbG9jayBhbmQgYSBgQlVHX09OYCBhcmUgYWRkZWQuIEl0JiMzOTtzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBpc3N1ZSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50LCBgc2V0LSZndDtyZWZgLCBjb3VsZCBwb3RlbnRpYWxseSBkcm9wIGJlbG93IHplcm8gb3IgYmUgbW9kaWZpZWQgY29uY3VycmVudGx5LCB3aGljaCBpcyBvYnZpb3VzbHkgYSBwcm9ibGVtLgoKVGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZSBhcHBlYXIgdG8gYmUgYGlwX3NldF9wdXRfYnlpbmRleGAsIGBsaXN0X3NldF9kZWxgLCBgbGlzdF9zZXRfcmVwbGFjZWAsIGBsaXN0X3NldF91YWRkYCwgYW5kIGBsaXN0X3NldF91YWR0YC4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgeWVzLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgaXMgc3RhdGljLCBtZWFuaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgdGhlIGV4dGVybmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXaXRoIGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIHJlc2lkaW5nIGluIHRoZSBzYW1lIGZpbGUsIGBpcF9zZXRfbGlzdF9zZXQuY2AsIG1ha2VzIHRoZSBpbnZlc3RpZ2F0aW9uIG1vcmUgZWZmaWNpZW50LiBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3NldF9saXN0X3NldC5jYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBpbnQgbGlzdF9zZXRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjY3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBgbGlzdF9zZXRfYCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlc2UgYGxpc3Rfc2V0X2AgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGUgcG9zc2libGUgaW1wbGljYXRpb25zLiBUaGlua2luZyB0aHJvdWdoIHRoZSBzeW50YXgsIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBzZXQgb2Ygb3BlcmF0aW9ucyBvbiBsaXN0cywgbWF5YmUgcmVsYXRlZCB0byBzZXQgdGhlb3J5IGNvbmNlcHRzPyBJbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLi4uIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGhlcmUuIEFyZSB0aGVzZSBsaWtlbHkgYnVpbHQtaW4gZnVuY3Rpb25zLCBvciBjdXN0b20gaW1wbGVtZW50YXRpb25zPyBJZiBjdXN0b20sIHRoZSBlZmZpY2llbmN5IGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIGFsZ29yaXRobXMgdXNlZCDigJMgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4KCk15IGludGVybmFsIGNoZWNrbGlzdCBpbW1lZGlhdGVseSBleHBhbmRzLiBEYXRhIHR5cGUgaGFuZGxpbmc6IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgdHlwZSBjb252ZXJzaW9ucyBvciBwb3RlbnRpYWwgZXJyb3JzIHRoZXJlLCBjb25zaWRlcmluZyBsaXN0cyBhbmQgc2V0cyB1c3VhbGx5IGhhdmUgc29tZSBzdHJpY3RuZXNzIHdoZW4gbWl4ZWQgaW4gb3BlcmF0aW9ucz8gRWRnZSBjYXNlczogRW1wdHkgbGlzdHMsIGVtcHR5IHNldHMsIGxpc3RzIG9yIHNldHMgd2l0aCBkdXBsaWNhdGVzLiBIb3cgZG8gdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSBpbiB0aGVzZSBzaXR1YXRpb25zPyBQb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzPyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24gb3IgY29kZSB0byBjb25maXJtLiBUaGlua2luZyBhaGVhZCwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGNvbmN1cnJlbmN5IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiBhIGxhcmdlciwgbXVsdGktdGhyZWFkZWQgc3lzdGVtLiBPdmVyYWxsLCB0aGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gZGV0ZXJtaW5lIGhvdyBlZmZpY2llbnQgYW5kIHJlbGlhYmxlIHRoZXNlIHBhcnRpY3VsYXIgZnVuY3Rpb25zIGFyZSBpbiBhIGdpdmVuIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpc3Rfc2V0XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00OD1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ5Omxpc3Rfc2V0X2t0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTAtXHQgICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NzM9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo3NDpsaXN0X3NldF9rYWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNzUtXHQgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz05Mz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjk0Omxpc3Rfc2V0X2tkZWwoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy05NS1cdCAgICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTExMz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjExNDpsaXN0X3NldF9rYWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTE1LVx0ICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTIzLVx0Y2FzZSBJUFNFVF9URVNUOlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMjQ6XHRcdHJldCA9IGxpc3Rfc2V0X2t0ZXN0KHNldCwgc2tiLCBwYXIsIG9wdCwgXHUwMDI2ZXh0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTI1LVx0XHRicmVhaztcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTI2LVx0Y2FzZSBJUFNFVF9BREQ6XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjEyNzpcdFx0cmV0ID0gbGlzdF9zZXRfa2FkZChzZXQsIHNrYiwgcGFyLCBvcHQsIFx1MDAyNmV4dCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyOC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyOS1cdGNhc2UgSVBTRVRfREVMOlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMzA6XHRcdHJldCA9IGxpc3Rfc2V0X2tkZWwoc2V0LCBza2IsIHBhciwgb3B0LCBcdTAwMjZleHQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMzEtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTQyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE0MzpfX2xpc3Rfc2V0X2RlbF9yY3Uoc3RydWN0IHJjdV9oZWFkICogcmN1KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNDQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTUyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1MzpsaXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1NC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTktXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVx1MDAzZW5ldCwgZS1cdTAwM2VpZCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2MDpcdGNhbGxfcmN1KFx1MDAyNmUtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTYzPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2NDpsaXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OS1cdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXHUwMDNlbmV0LCBvbGQtXHUwMDNlaWQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNzA6XHRjYWxsX3JjdShcdTAwMjZvbGQtXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTc0PXNldF9jbGVhbnVwX2VudHJpZXMoc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgwLVx0XHRpZiAoaXBfc2V0X3RpbWVvdXRfZXhwaXJlZChleHRfdGltZW91dChlLCBzZXQpKSlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTgxOlx0XHRcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xODItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTg0PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTg1Omxpc3Rfc2V0X3V0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE4Ni1cdCAgICAgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjIwPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIyMTpsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yMjItXHRcdFx0IHN0cnVjdCBzZXRfZWxlbSAqZSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIzNjpsaXN0X3NldF91YWRkKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTIzNy1cdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzAtXHRcdGlwX3NldF9leHRfZGVzdHJveShzZXQsIG4pO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyNzE6XHRcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgbik7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3Mi1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMwMi1cdElOSVRfTElTVF9IRUFEKFx1MDAyNmUtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjMwMzpcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgZSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMwNC1cdGlmIChuKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMDU6XHRcdGxpc3Rfc2V0X3JlcGxhY2Uoc2V0LCBlLCBuKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzA2LVx0ZWxzZSBpZiAobmV4dClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTMxNz1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjMxODpsaXN0X3NldF91ZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAqdmFsdWUsIGNvbnN0IHN0cnVjdCBpcF9zZXRfZXh0ICpleHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTMxOS1cdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNDItXHRcdH1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MzQzOlx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzQ0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM0OT1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjM1MDpsaXN0X3NldF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzUxLVx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDE3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMS1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDIyOlx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDIzLVx0c2V0LVx1MDAzZWVsZW1lbnRzID0gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQyNz1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0Mjg6bGlzdF9zZXRfZGVzdHJveShzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyOS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00Mzk9c3RhdGljIHNpemVfdFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NDA6bGlzdF9zZXRfbWVtc2l6ZShjb25zdCBzdHJ1Y3QgbGlzdF9zZXQgKm1hcCwgc2l6ZV90IGRzaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NDEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDUzPXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDU0Omxpc3Rfc2V0X2hlYWQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTUte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDU3LVx0c3RydWN0IG5sYXR0ciAqbmVzdGVkO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NTg6XHRzaXplX3QgbWVtc2l6ZSA9IGxpc3Rfc2V0X21lbXNpemUobWFwLCBzZXQtXHUwMDNlZHNpemUpICYjNDM7IHNldC1cdTAwM2VleHRfc2l6ZTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDc3PXN0YXRpYyBpbnRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDc4Omxpc3Rfc2V0X2xpc3QoY29uc3Qgc3RydWN0IGlwX3NldCAqc2V0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NzktXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01MzI9c3RhdGljIGJvb2xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTMzOmxpc3Rfc2V0X3NhbWVfc2V0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKmEsIGNvbnN0IHN0cnVjdCBpcF9zZXQgKmIpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTUzNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTQ0Omxpc3Rfc2V0X2NhbmNlbF9nYyhzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU0NS17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTEtXHQvKiBGbHVzaCBsaXN0IHRvIGRyb3AgcmVmZXJlbmNlcyB0byBvdGhlciBpcHNldHMgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUyOlx0bGlzdF9zZXRfZmx1c2goc2V0KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUzLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgc2V0X3ZhcmlhbnQgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1NjpcdC5rYWR0XHQ9IGxpc3Rfc2V0X2thZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1NzpcdC51YWR0XHQ9IGxpc3Rfc2V0X3VhZHQsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1OC1cdC5hZHRcdD0ge1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTk6XHRcdFtJUFNFVF9BRERdID0gbGlzdF9zZXRfdWFkZCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYwOlx0XHRbSVBTRVRfREVMXSA9IGxpc3Rfc2V0X3VkZWwsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU2MTpcdFx0W0lQU0VUX1RFU1RdID0gbGlzdF9zZXRfdXRlc3QsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cdH0sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU2MzpcdC5kZXN0cm95ID0gbGlzdF9zZXRfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY0Olx0LmZsdXNoXHQ9IGxpc3Rfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjU6XHQuaGVhZFx0PSBsaXN0X3NldF9oZWFkLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjY6XHQubGlzdFx0PSBsaXN0X3NldF9saXN0LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njc6XHQuc2FtZV9zZXQgPSBsaXN0X3NldF9zYW1lX3NldCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY4Olx0LmNhbmNlbF9nYyA9IGxpc3Rfc2V0X2NhbmNlbF9nYyxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTY5LX07XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NzE9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTcyOmxpc3Rfc2V0X2djKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NzMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NTg1PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU4NjpsaXN0X3NldF9nY19pbml0KHN0cnVjdCBpcF9zZXQgKnNldCwgdm9pZCAoKmdjKShzdHJ1Y3QgdGltZXJfbGlzdCAqdCkpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU4Ny17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01OTc9aW5pdF9saXN0X3NldChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwgdTMyIHNpemUpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYxNDpzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxpc3Rfc2V0X2xvY2tkZXBfa2V5O1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTYxNj1zdGF0aWMgaW50XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYxNzpsaXN0X3NldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYxOC1cdFx0dTMyIGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjMxLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2MzI6XHRsb2NrZGVwX3NldF9jbGFzcyhcdTAwMjZzZXQtXHUwMDNlbG9jaywgXHUwMDI2bGlzdF9zZXRfbG9ja2RlcF9rZXkpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MzMtXHRzZXQtXHUwMDNldmFyaWFudCA9IFx1MDAyNnNldF92YXJpYW50O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjM5LVx0XHRzZXQtXHUwMDNldGltZW91dCA9IGlwX3NldF90aW1lb3V0X3VnZXQodGJbSVBTRVRfQVRUUl9USU1FT1VUXSk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY0MDpcdFx0bGlzdF9zZXRfZ2NfaW5pdChzZXQsIGxpc3Rfc2V0X2djKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjQxLVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjQ0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2NDU6c3RhdGljIHN0cnVjdCBpcF9zZXRfdHlwZSBsaXN0X3NldF90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0Ni1cdC5uYW1lXHRcdD0gXCYjMzQ7bGlzdDpzZXRcJiMzNDssXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02NTItXHQucmV2aXNpb25fbWF4XHQ9IElQU0VUX1RZUEVfUkVWX01BWCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjUzOlx0LmNyZWF0ZVx0XHQ9IGxpc3Rfc2V0X2NyZWF0ZSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjU0LVx0LmNyZWF0ZV9wb2xpY3lcdD0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njc4PXN0YXRpYyBpbnQgX19pbml0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY3OTpsaXN0X3NldF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4MC17XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4MTpcdHJldHVybiBpcF9zZXRfdHlwZV9yZWdpc3RlcihcdTAwMjZsaXN0X3NldF90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgyLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTY4ND1zdGF0aWMgdm9pZCBfX2V4aXRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg1Omxpc3Rfc2V0X2Zpbmkodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg2LXtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg3LVx0cmN1X2JhcnJpZXIoKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg4Olx0aXBfc2V0X3R5cGVfdW5yZWdpc3RlcihcdTAwMjZsaXN0X3NldF90eXBlKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjg5LX1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjkwLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTE6bW9kdWxlX2luaXQobGlzdF9zZXRfaW5pdCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY5Mjptb2R1bGVfZXhpdChsaXN0X3NldF9maW5pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4NjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXBfc2V0X2xpc3Rfc2V0LmNgIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIG9mIGBpcF9zZXRfbGlzdF9zZXQuY2AgcmV2ZWFscyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHM6IGBsaXN0X3NldF91YWR0YCwgYGxpc3Rfc2V0X3VhZGRgLCBgbGlzdF9zZXRfdWRlbGAsIGBsaXN0X3NldF91dGVzdGAsIGBsaXN0X3NldF9rYWR0YCwgYGxpc3Rfc2V0X2thZGRgLCBgbGlzdF9zZXRfa2RlbGAsIGFuZCBgbGlzdF9zZXRfa3Rlc3RgLiBCdXQgaG9sZCBvbiwgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgYWxzbyBleHBvcnRlZCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBieSBgbGlzdF9zZXRfZGVsYCwgYGxpc3Rfc2V0X3JlcGxhY2VgLCBgbGlzdF9zZXRfdWFkZGAsIGFuZCBgbGlzdF9zZXRfdWFkdGAuIFRoYXQgaW1tZWRpYXRlbHkgZWxldmF0ZXMgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gYSBwcmltZSBmb2N1cy4gVGhpcyBzZWVtcyB0byBiZSB3aGVyZSB0aGluZ3MgYXJlIHJlYWxseSBoYXBwZW5pbmcuCgpNeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGluIGBpcF9zZXRfY29yZS5jYC4gQWgsIGEgbWlub3IgaGljY3VwIOKAkyBJIHNlZSBgX19pcF9zZXRfcHV0X2J5aW5kZXhgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gYGlwX3NldF9wdXRfYnlpbmRleGAuIEkgd2FzIHJpZ2h0LCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFNvIHRoZSByaWdodCBmb2N1cyBpcyBpbmRlZWQgYGlwX3NldF9wdXRfYnlpbmRleGAuIEkmIzM5O2xsIGRlbHZlIGludG8gaXRzIGltcGxlbWVudGF0aW9uIGluIGBpcF9zZXRfY29yZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODY1Olx0XHRcdHNldC1cdTAwM2VyZWYtLTtcbiA4NjY6XHRcdH1cbiA4Njc6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZpcF9zZXRfcmVmX2xvY2spO1xuIDg2ODpcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODY5Olx0fVxuIDg3MDpcdFxuIDg3MTpcdHZvaWRcbiA4NzI6XHRpcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcbiA4NzM6XHR7XG4gODc0Olx0XHRzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCA9IGlwX3NldF9wZXJuZXQobmV0KTtcbiA4NzU6XHRcbiA4NzY6XHRcdF9faXBfc2V0X3B1dF9ieWluZGV4KGluc3QsIGluZGV4KTtcbiA4Nzc6XHR9XG4gODc4Olx0RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcbiA4Nzk6XHRcbiA4ODA6XHQvKiBHZXQgdGhlIG5hbWUgb2YgYSBzZXQgYmVoaW5kIGEgc2V0IGluZGV4LlxuIDg4MTpcdCAqIFNldCBpdHNlbGYgaXMgcHJvdGVjdGVkIGJ5IFJDVSwgYnV0IGl0cyBuYW1lIGlzbiYjMzk7dDogdG8gcHJvdGVjdCBhZ2FpbnN0XG4gODgyOlx0ICogcmVuYW1pbmcsIGdyYWIgaXBfc2V0X3JlZl9sb2NrIGFzIHJlYWRlciAoc2VlIGlwX3NldF9yZW5hbWUoKSkgYW5kIGNvcHkgdGhlXG4gODgzOlx0ICogbmFtZS5cbiA4ODQ6XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4NTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgYXMgcG90ZW50aWFsIHRhcmdldHMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuIFRoZSBvYnZpb3VzIGVudHJ5IHBvaW50IHNlZW1zIHRvIGJlIGBpcF9zZXRfcHV0X2J5aW5kZXhgLCBidXQgSSBuZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3MgdGhlIHJpZ2h0IGNob2ljZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgYWxzbyB0byBsb29rIGF0IGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIGFzIEkga25vdyB0aGVzZSBhcmUgcmVsYXRlZCwgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpZiBwb3NzaWJsZS4gSSBjb25maXJtZWQgYm90aCBgbGlzdF9zZXRfdWFkZGAgYW5kIGBsaXN0X3NldF91YWR0YCBhcmUgc3RhdGljLgoKQWgsIGJ1dCAqd2FpdCosIGBsaXN0X3NldF91YWRkYCwgYWx0aG91Z2ggc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHNldF92YXJpYW50YCBzbyBpdCYjMzk7cyBwcm9iYWJseSBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdvb2QgcG9pbnQgdG8gbm90ZSwgYWx0aG91Z2ggYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1ha2luZyBpdCBhIHN0cm9uZ2VyIGNvbnRlbmRlciBhcyBpdCYjMzk7cyBkaXJlY3RseSBleHBvc2VkLiBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGhlcmUuCgpMZXQmIzM5O3MgY2hlY2sgYGlwX3NldF9wdXRfYnlpbmRleGAgYWdhaW4uIElzIGl0IGEgKmhvdCBwYXRoKiBmdW5jdGlvbiwgbGlrZSBga2ZyZWVgLCB0aGF0JiMzOTtzIGNhbGxlZCBldmVyeXdoZXJlPyBObywgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gZGVsZXRpbmcgZWxlbWVudHMgZnJvbSBgbGlzdDpzZXRgLCB3aGljaCBpcyB1c2VmdWwuIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSB0byBzdGFydCB3aXRoLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBgaXBfc2V0X3N3YXBgIG1lbnRpb25lZCwgYW5kIHRoZSBjb21tZW50IGFib3V0IHNlcmlhbGl6aW5nIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGl0LCBzd2FwcGluZyBib3RoIGBpcF9zZXRfbGlzdFtdYCBlbnRyaWVzIGFuZCBgc2V0LSZndDtyZWZgIHVuZGVyIGBpcF9zZXRfcmVmX2xvY2tgLiBXb3J0aCBhIGRlZXBlciBsb29rLCBzbyBJJiMzOTtsbCBhZGQgdGhhdCB0byBteSBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9zZXRfc3dhcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9NjgyPV9faXBfc2V0X3B1dChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTY4OS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo2OTA6Lyogc2V0LVx1MDAzZXJlZiBjYW4gYmUgc3dhcHBlZCBvdXQgYnkgaXBfc2V0X3N3YXAsIG5ldGxpbmsgZXZlbnRzIChsaWtlIGR1bXApIG5lZWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02OTEtICogYSBzZXBhcmF0ZSByZWZlcmVuY2UgY291bnRlclxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTM9X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTctXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODU4Olx0LyogU2VyaWFsaXplIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGlwX3NldF9zd2FwKCksIHdoaWNoIHN3YXBzIGJvdGhcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTktXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzUxPXN0YXRpYyBpbnQgaXBfc2V0X3JlbmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzk4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzOTk6c3RhdGljIGludCBpcF9zZXRfc3dhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTE0MDAtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNzgtXHRbSVBTRVRfQ01EX1NXQVBdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTc5Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF9zd2FwLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxODAtXHRcdC50eXBlXHRcdD0gTkZOTF9DQl9NVVRFWCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9ucyBpbiB0aGUgSVAgU2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHJlZmluZSBteSBhbmFseXNpcyBvZiB0aGlzIElQIHNldCBjb2RlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgcmFjZSBjb25kaXRpb25zLiBJJiMzOTt2ZSByZWFsaXplZCB0aGF0IGBpcF9zZXRfc3dhcGAgaXMgYSByZWFsbHkgaW50ZXJlc3Rpbmcgc3ltYm9sIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0JiMzOTtzIG5vdCBpbmxpbmVkLCBldmVuIHRob3VnaCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBtYWtlcyBpdCBhIHBvdGVudGlhbCBrZXkgcG9pbnQgdG8gZXhhbWluZSBiZWNhdXNlIGl0IHJlcHJlc2VudHMgYSBkaXN0aW5jdCBwb2ludCBvZiBpbnRlcmFjdGlvbiwgYW5kIHRoZXJlZm9yZSwgY291bGQgZXhwb3NlIHRoZSBvdGhlciBzaWRlIG9mIGEgcG90ZW50aWFsIHJhY2UuIFNvLCBgaXBfc2V0X3N3YXBgIGlzIGRlZmluaXRlbHkgZ29pbmcgb24gdGhlICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDsgbGlzdC4KCkhtbSwgYnV0IHdhaXQuLi4gdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBgc3RhdGljYCBtYWtlcyBtZSBwYXVzZS4gVGhlIGd1aWRhbmNlIGlzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSG93ZXZlciwgc2luY2UgYGlwX3NldF9zd2FwYCBpcyBhICpjYWxsYmFjayosIGl0JiMzOTtzIGluaGVyZW50bHkgKm5vdCogaW5saW5lZC4gU28sIEkgdGhpbmsgaXQmIzM5O3Mgc3RpbGwgYSB2YWx1YWJsZSBzeW1ib2wgdG8gaW5jbHVkZS4gSSBzaG91bGQgYWxzbyBhZGQgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gdGhlIGxpc3QuIFRoYXQgb25lIGlzIG5vbi1zdGF0aWMsIHNvIGl0IGZpdHMgdGhlIHByZWZlcnJlZCBwYXR0ZXJuLiBMZXQmIzM5O3MgYWRkIHRoZW0gYm90aCEKCk5vdywgSSBzaG91bGQgcmUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyB3b3J0aCBlbnN1cmluZyBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBhc3BlY3RzLiBgSVBfU0VUYCBhbmQgYElQX1NFVF9MSVNUX1NFVGAgYXJlIHRoZSBtYWluIG9uZXMsIG9mIGNvdXJzZS4gUmlnaHQsIGFuZCB0aG9zZSBoYXZlIGRlcGVuZGVuY2llcy4gYElQX1NFVGAgZGVwZW5kcyBvbiBib3RoIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAuIEVhc3kgZW5vdWdoLiBgSU5FVGAgaXMgYENPTkZJR19JTkVUYCwgTmV0d29ya2luZyBzdXBwb3J0LCBUQ1AvSVAgbmV0d29ya2luZywgYW5kIGBORVRGSUxURVJgIGlzIGBDT05GSUdfTkVURklMVEVSYCwgd2hpY2ggaXMgdGhlIE5ldGZpbHRlciBwYWNrZXQgZmlsdGVyaW5nIGZyYW1ld29yay4gU3RhbmRhcmQgY29uZmlncywgc28gdGhhdCYjMzk7cyBnb29kLiBCdXQgSSBuZWVkIHRvIGluY2x1ZGUgYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGluIG15IGFuYWx5c2lzLiBKdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGZvciBhbnkgb3RoZXIgc3VidGxlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lQIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDpwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtcyBoZXJlLiBMZXQgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGRlcGVuZGVuY2llcyBmb3IgYElQX1NFVF9MSVNUX1NFVGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwcyB0byBlbnN1cmUgcHJvcGVyIGltcGxlbWVudGF0aW9uIGFuZCBhdm9pZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIFdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBkb2VzIGl0IGhpbmdlIHVwb24/IERvZXMgaXQgbmVlZCBgSVBfU0VUYCB0byBiZSBlbmFibGVkIGZpcnN0LCBvciBkb2VzIGl0IGJyaW5nIGl0cyBvd24gc2V0IG9mIGRlcGVuZGVuY2llcz8gVW5kZXJzdGFuZGluZyB0aGlzIGRlcGVuZGVuY3kgZ3JhcGggaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIHRoaXMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTY1Olx0XG4gMTY2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O2xpc3Q6c2V0IHNldCBzdXBwb3J0XCYjMzQ7XG4gMTcwOlx0XHRkZXBlbmRzIG9uIElQX1NFVFxuIDE3MTpcdFx0aGVscFxuIDE3MjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBsaXN0OnNldCBzZXQgdHlwZSBzdXBwb3J0LiBJbiB0aGlzXG4gMTczOlx0XHQgIGtpbmQgb2Ygc2V0IG9uZSBjYW4gc3RvcmUgdGhlIG5hbWUgb2Ygb3RoZXIgc2V0cyBhbmQgaXQgZm9ybXNcbiAxNzQ6XHRcdCAgYW4gb3JkZXJlZCB1bmlvbiBvZiB0aGUgbWVtYmVyIHNldHMuXG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcbiAxNzk6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBpcHNldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzNAoJCQkJCQkJb3V0cHV0OiAxNDEKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBoaW5nZXMgb24gYElQX1NFVGAuIElmIHRoYXQmIzM5O3MgZW5hYmxlZCwgdGhlbiB3ZSBhbHNvIG5lZWQgYElQX1NFVF9MSVNUX1NFVGAuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50IChgc2V0LSZndDtyZWZgKSBpc24mIzM5O3QgcHJvcGVybHkgcHJvdGVjdGVkIHdoZW4gZGVjcmVtZW50ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aXRob3V0IGhvbGRpbmcgdGhlIGBpcF9zZXRfcmVmX2xvY2tgLCB3aGljaCBjcmVhdGVzIGEgY29uZmxpY3Qgd2l0aCBgaXBfc2V0X3N3YXBgLiBUaGUgZml4IGlzIHNpbXBsZTogYWRkIGB3cml0ZV9sb2NrX2JoKCZhbXA7aXBfc2V0X3JlZl9sb2NrKWAgYmVmb3JlIHRoZSBkZWNyZW1lbnQuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIG5ldGZpbHRlciBpcHNldCBtb2R1bGUuIEl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNvbW1hbmRzIHRvIGBpcHNldGAsIHNvIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4KCk15IGZvY3VzIGhhcyB0byBiZSBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcmFjZS4gSSBuZWVkIHRvIHplcm8gaW4gb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgZXhwb3J0ZWQgYW5kIG5vbi1zdGF0aWMsIHdoaWNoIGl0IGlzLCBzbyB0aGF0IGlzIGluY2x1ZGVkLiBgaXBfc2V0X3N3YXBgIGlzIHN0YXRpYywgYnV0IHNpbmNlIGl0JiMzOTtzIGEgbmV0bGluayBjYWxsYmFjaywgaXQmIzM5O3Mgbm90IGlubGluZWQsIHNvIGl0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuCgpMZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfcHV0X2J5aW5kZXgmIzM0OywKICAgICYjMzQ7aXBfc2V0X3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxNC4wNDI1NTQwMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4Mjg0MjIyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgICBcImlwX3NldF9zd2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjE0LjA0MjU2MTQ5OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2NzcxMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOGUxYzhlZThjMDNhY2M4OWI2OTNhMjM2MzdhN2E3YzMyYTNlMjA1ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY1xcbmluZGV4IDZjZmFkMTUyZDdkMWIuLjJkM2M4NTg2ZTY0NDUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXFxuQEAgLTg1NSw5ICs4NTUsMTYgQEAgX19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbiBcXHRzdHJ1Y3QgaXBfc2V0ICpzZXQ7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXFxuK1xcdCAqIGlwX3NldF9saXN0W10gZW50cmllcyBhbmQgc2V0LVxcdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxcbitcXHQgKi9cXG4rXFx0d3JpdGVfbG9ja19iaChcXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcXG4gXFx0c2V0ID0gcmN1X2RlcmVmZXJlbmNlKGluc3QtXFx1MDAzZWlwX3NldF9saXN0KVtpbmRleF07XFxuLVxcdGlmIChzZXQpXFxuLVxcdFxcdF9faXBfc2V0X3B1dChzZXQpO1xcbitcXHRpZiAoc2V0KSB7XFxuK1xcdFxcdEJVR19PTihzZXQtXFx1MDAzZXJlZiA9PSAwKTtcXG4rXFx0XFx0c2V0LVxcdTAwM2VyZWYtLTtcXG4rXFx0fVxcbitcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxNC4zMjk5OTMzNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDM1NDA5NzQ2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0VUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgICBcImlwX3NldF9zd2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBsb2NrIGFyb3VuZCB0aGUgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpbiBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGNvZGUuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGFuZCBgaXBfc2V0X3N3YXBgIHdoaWNoIGFyZSBpbnZvbHZlZCBpbiB0aGUgcmFjZSBjb25kaXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhlMWM4ZWU4YzAzYWNjODliNjkzYTIzNjM3YTdhN2MzMmEzZTIwNWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjM1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXG5pbmRleCA2Y2ZhZDE1MmQ3ZDFiLi4yZDNjODU4NmU2NDQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcbkBAIC04NTUsOSArODU1LDE2IEBAIF9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcbiBcdHN0cnVjdCBpcF9zZXQgKnNldDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbitcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXG4rXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cdTAwM2VyZWYgdW5kZXIgaXBfc2V0X3JlZl9sb2NrLlxuK1x0ICovXG4rXHR3cml0ZV9sb2NrX2JoKFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XG4gXHRzZXQgPSByY3VfZGVyZWZlcmVuY2UoaW5zdC1cdTAwM2VpcF9zZXRfbGlzdClbaW5kZXhdO1xuLVx0aWYgKHNldClcbi1cdFx0X19pcF9zZXRfcHV0KHNldCk7XG4rXHRpZiAoc2V0KSB7XG4rXHRcdEJVR19PTihzZXQtXHUwMDNlcmVmID09IDApO1xuK1x0XHRzZXQtXHUwMDNlcmVmLS07XG4rXHR9XG4rXHR3cml0ZV91bmxvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjE0LjMyOTk5NDc2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjEwMTI5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpcF9zZXRfY29yZS5jIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYCwgYW5kIGl0J3MgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoZSBjcnVjaWFsIGNoYW5nZSBpcyB0aGlzIGFkZGl0aW9uIG9mIGB3cml0ZV9sb2NrX2JoKFx1MDAyNmlwX3NldF9yZWZfbG9jayk7YCByaWdodCBiZWZvcmUgdGhlIGBzZXQtXHUwMDNlcmVmLS1gIG9wZXJhdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IHJhaXNpbmcgYSBmbGFnLiBJIHJlY2FsbCB0aGF0IGBfX2lwX3NldF9wdXQoc2V0KWAgd2FzIGxpa2VseSBqdXN0IGEgZGlyZWN0IGRlY3JlbWVudCBvZiBgc2V0LVx1MDAzZXJlZmAuIE5vdywgaXQgc2VlbXMgbGlrZSB3ZSdyZSBwcm90ZWN0aW5nIHRoYXQgZGVjcmVtZW50IHdpdGggYGlwX3NldF9yZWZfbG9ja2AuIFRoaXMgbWVyaXRzIGEgZGVlcGVyIGxvb2suXG5cbkkgbmVlZCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBsb2NrLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIGJvdGggYF9faXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgdGhlIG9yaWdpbmFsIGBfX2lwX3NldF9wdXRgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIHNjb3BlIGFuZCBjb250ZXh0IGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxOC4xOTEwMDk4NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1OTg0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToxOC4yMzI2MTIyODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQyNzE3Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipGaW5kaW5nIHRoZSBDYWxsZXJzIG9mIGBfX2lwX3NldF9wdXRfYnlpbmRleGAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIE15IGZpcnN0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBuYW1lIHN1Z2dlc3RzIGl0IGlzIHB1dHRpbmcgYW4gSVAgYnkgYW4gaW5kZXgsIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHBhcmFtZXRlcnMgdGhhdCBtaWdodCBpbnZvbHZlLiBOb3cgbGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MjAuOTc1MzMyNzExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDAzNDU4MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzI9aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToyMi42NzU2ODgwNTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzODA2NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfc2V0X3B1dF9ieWluZGV4YCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBpcF9zZXRfcHV0X2J5aW5kZXhgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgaXRzZWxmIGlzIGEgY2x1ZSAtIGl0IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBpbnNlcnRpbmcgYW4gSVAgc2V0IGVsZW1lbnQgYXQgYSBzcGVjaWZpYyBpbmRleC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hvJ3MgY2FsbGluZyAqdGhpcyogZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBhbGwgaW52b2NhdGlvbnMgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gZ2V0IHRoZSBjb250ZXh0IOKAkyB0aGUgaG93IGFuZCB0aGUgd2h5IG9mIGl0cyBleGVjdXRpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgcmV2ZWFsIHRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgaW5zZXJ0aW9uIG9wZXJhdGlvbiwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgaGlnaGxpZ2h0IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24uIExldCdzIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MjUuOTI5NDk3MDM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTg2ODIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X3B1dF9ieWluZGV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaD0zMTE9ZXh0ZXJuIGlwX3NldF9pZF90IGlwX3NldF9nZXRfYnluYW1lKHN0cnVjdCBuZXQgKm5ldCxcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTItXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICpuYW1lLCBzdHJ1Y3QgaXBfc2V0ICoqc2V0KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaDozMTM6ZXh0ZXJuIHZvaWQgaXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oLTMxNC1leHRlcm4gdm9pZCBpcF9zZXRfbmFtZV9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgsIGNoYXIgKm5hbWUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3MjppcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1OC1cXHRsaXN0X2RlbF9yY3UoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY4LVxcdGxpc3RfcmVwbGFjZV9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlbGlzdCwgXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTY5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgb2xkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXFx0Y2FsbF9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMzY9bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXFx0XFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGQtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXFx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQwODpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUucmVmaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVxcdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxMDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUuaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNToyNy44ODgxODg0MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc1MjU4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXBfc2V0X2xpc3Rfc2V0LmMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jYCwgcmlnaHQ/IFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBkZWVwIHdpdGhpbiB0aGUgYGlwc2V0YCBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBsaXN0OnNldGAgdHlwZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYWN0dWFsbHkgZW5hYmxlIHRoaXMgZmlsZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBpcyBrZXkgdG8gZ3Jhc3BpbmcgaG93IHRoaXMgZnVuY3Rpb25hbGl0eSBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgc3lzdGVtIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IEkgY2FuIGNvbnRyb2wgaXRzIGJlaGF2aW9yLiBMZXQncyBzZWUgd2hhdCB0aGUgY29uZmlnIG9wdGlvbnMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzAwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6MzEuMTYzNDQ5ODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjk1ODQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfbGlzdF9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19JUF9TRVRfSEFTSF9ORVRQT1JUTkVUKSArPSBpcF9zZXRfaGFzaF9uZXRwb3J0bmV0Lm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzAtIyBsaXN0IHR5cGVzXFxubmV0L25ldGZpbHRlci9pcHNldC9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfSVBfU0VUX0xJU1RfU0VUKSArPSBpcF9zZXRfbGlzdF9zZXQub1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvTWFrZWZpbGUtMzItaWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFNFVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTozMS4yMDY0MTQ1MTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4NzU4ODQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3Mgb2YgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgSVAgU2V0IE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSBuZWVkIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYC4gTWFrZXMgc2Vuc2UsIHRoYXQncyBleHBlY3RlZC4gSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLi4uIEknbSBub3RpY2luZyB0aGF0IGBpcF9zZXRfcHV0X2J5aW5kZXhgIGlzIGFsc28gZXhwb3J0ZWQuIFRoYXQgc3RyaWtlcyBtZSBhcyBhIGJpdCBvZGQuIEkgd29uZGVyIGlmIG90aGVyIG1vZHVsZXMgYmV5b25kIHRoZSBvYnZpb3VzIG9uZXMgYWN0dWFsbHkgcmVseSBvbiB0aGlzIGZ1bmN0aW9uPyBJdCB3b3VsZCBiZSBnb29kIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGl0cyB1c2UuIFRvIGJlIGNlcnRhaW4sIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UuIEknbGwgdGFrZSBhIGxvb2sgYXQgYG5ldC9uZXRmaWx0ZXIveHRfc2V0LmNgIG9yIGEgc2ltaWxhciBmaWxlIHRoYXQgaGFuZGxlcyBJUCBzZXQgaW50ZXJhY3Rpb25zLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgd2lsbCBiZSBrZXkgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM0Ljk5NDAwNTIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE0OTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfcHV0X2J5aW5kZXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3MT12b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3MjppcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODczLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3ODpFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfcHV0X2J5aW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE1Mz1saXN0X3NldF9kZWwoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE1OC1cXHRsaXN0X2RlbF9yY3UoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTU5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTYwLVxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE2ND1saXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTY4LVxcdGxpc3RfcmVwbGFjZV9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlbGlzdCwgXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTY5OlxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgb2xkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNzAtXFx0Y2FsbF9yY3UoXFx1MDAyNm9sZC1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMzY9bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzMtXFx0XFx0LyogU2V0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGxpc3QgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3NDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGQtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3NS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MzUwPWxpc3Rfc2V0X3VhZHQoc3RydWN0IGlwX3NldCAqc2V0LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MDctXFx0aWYgKGUucmVmaWQgIT0gSVBTRVRfSU5WQUxJRF9JRClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQwODpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUucmVmaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA5LVxcdGlmIChhZHQgIT0gSVBTRVRfQUREIHx8IHJldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxMDpcXHRcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUuaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTozNS4wNDExNjE1NDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxOTUyMDIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaWFnbm9zdGljIFRob3VnaHRzIG9uIGBpcF9zZXRfbGlzdF9zZXQuY2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBpcyB0aGF0IHRoZSBjb2RlJ3Mgb25seSB1c2VkIHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBUaGF0IGltbWVkaWF0ZWx5IG5hcnJvd3MgdGhpbmdzIGRvd24gc2lnbmlmaWNhbnRseS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0lQX1NFVGAgYW5kIGBDT05GSUdfSVBfU0VUX0xJU1RfU0VUYCBhcmUgZW5hYmxlZC4gSXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IGBDT05GSUdfSVBfU0VUYCB3b3VsZCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIHVzZSB0aGUgYGlwX3NldGAgZnVuY3Rpb25hbGl0eSwgYnV0IEknbGwgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHRoZSBgQ09ORklHX0lQX1NFVF9MSVNUX1NFVGAgaXMgYWxzbyBlbmFibGVkIHNpbmNlIGl0IHdvdWxkIG5lZWQgdGhhdCBzcGVjaWZpYyBzZXR0aW5nIHRvIHVzZSBpdC4gS25vd2luZyB0aGVzZSBjb25maWd1cmF0aW9ucyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgY29udGV4dCB3aXRoaW4gd2hpY2ggdGhpcyBzcGVjaWZpYyBjb2RlIG1vZHVsZSBvcGVyYXRlcy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IGl0IHJlbGF0ZXMgdG8gZXZlcnl0aGluZyBlbHNlIGFuZCB1bmRlcnN0YW5kIGFueSBkZXBlbmRlbmN5IG9yIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM4LjM2MDY4NDk4N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwNzAzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVF9MSVNUX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE1OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjM4LjQwNTc2MTE4NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk2Mjg1MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYElQX1NFVF9MSVNUX1NFVGAgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIG1lbnRhbGx5IHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgSVBfU0VUX0xJU1RfU0VUYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRoaW5nICpyZWxpZXMqIG9uLCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIG5lY2Vzc2FyeSBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LCBhbmQgd2hhdCBpdCBtaWdodCBhZmZlY3QuIEknbSBnb2luZyB0byBzdGFydCBieSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIHN0dWZmLCB0aGUga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIGl0IG5lZWRzLCB3aGF0IGNvbmZpZ3VyYXRpb24gZmlsZXMgbWlnaHQgYmUgcmVsZXZhbnQsIGFuZCBhbnkgc3lzdGVtIHNlcnZpY2VzIGludm9sdmVkLlxuXG5JJ20gY29uc2lkZXJpbmcgd2hhdCBvdGhlciBgaXBzZXRgIHR5cGVzIGl0IG1pZ2h0IGJ1aWxkIHVwb24sIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cy4gRG9lcyBpdCByZWx5IG9uIHNwZWNpZmljIHZlcnNpb25zIG9mIHN1cHBvcnRpbmcgc29mdHdhcmU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGlmIG9uZSBvZiB0aGUgZGVwZW5kZW50IGNvbXBvbmVudHMgY2hhbmdlcyBvciBpcyB1cGRhdGVkPyBUaGlua2luZyBmcm9tIHRoZSBhcmNoaXRlY3R1cmFsIGxldmVsIC0gSSdtIHRoaW5raW5nIG9mIHRoZSBrZXJuZWwgbW9kdWxlcywgdXNlciBzcGFjZSB0b29scyBhbmQgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzM2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzU6NDIuMjAyMDQ5MTc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFxuIDE2NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNjc6XFx0XFxuIDE2ODpcXHRjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxuIDE2OTpcXHRcXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZXBlbmRzIG9uIElQX1NFVFxcbiAxNzE6XFx0XFx0aGVscFxcbiAxNzI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBsaXN0OnNldCBzZXQgdHlwZSBzdXBwb3J0LiBJbiB0aGlzXFxuIDE3MzpcXHRcXHQgIGtpbmQgb2Ygc2V0IG9uZSBjYW4gc3RvcmUgdGhlIG5hbWUgb2Ygb3RoZXIgc2V0cyBhbmQgaXQgZm9ybXNcXG4gMTc0OlxcdFxcdCAgYW4gb3JkZXJlZCB1bmlvbiBvZiB0aGUgbWVtYmVyIHNldHMuXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE3NzpcXHRcXG4gMTc4OlxcdGNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcXG4gMTc5OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcXFwiXFxuIDE4MDpcXHRcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxuIDE4MTpcXHRcXHRoZWxwXFxuIDE4MjpcXHRcXHQgIEVuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXQgdG8gY2hlY2sgd2hpY2ggZnVuY3Rpb25zL2xpbmVzXFxuIDE4MzpcXHRcXHQgIGFyZSBleGVjdXRlZC5cXG4gMTg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo0Mi4yMDIxMjA5NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5Njg0NTI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKkRpZ2dpbmcgaW50byBJUCBTZXQgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIGJvdGggYElQX1NFVGAgYW5kIGBJUF9TRVRfTElTVF9TRVRgIGVuYWJsZWQuIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYElQX1NFVGAuIEl0J3MgY3J1Y2lhbCwgZXNwZWNpYWxseSBjb25zaWRlcmluZyBteSB1bmRlcnN0YW5kaW5nIG9mIGtlcm5lbCBjb25maWd1cmF0aW9ucywgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBwcmVyZXF1aXNpdGVzIGFyZSBpbiBwbGFjZS4gU2luY2UgYElQX1NFVGAgb2Z0ZW4gcmVsaWVzIG9uIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUsIEkgaW1tZWRpYXRlbHkgc3VzcGVjdCBgTkVURklMVEVSYCBhbmQgYElORVRgLiBJIHNob3VsZCBjb25maXJtIHRoaXMuIExldCdzIGhlYWQgb3ZlciB0byB0aGUga2VybmVsJ3Mgc291cmNlIGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBvcHRpb24gbG9jYXRpb24gZm9yIGBJUF9TRVRgLiBUaGUgbG9naWNhbCBwbGFjZXMgdG8gY2hlY2sgYXJlIGxpa2VseSBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgZGlyZWN0b3J5LCBvciBwZXJoYXBzIG1vcmUgc3BlY2lmaWNhbGx5IGluIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4gVGltZSB0byBnZXQgaW50byB0aG9zZSBLY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyOTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjQ1Ljc5ODk2ODk3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3MzAxOTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo0NS44NDI3MDg4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODg1MTExODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZ2l2ZW4gcHJvbXB0OlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBpcHNldCoqXG5cbk9rYXksIHRoZSB0YXNrIGlzIHRvIGdlbmVyYXRlIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0cywgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIEknbSB0aGUgb25lIGhhdmluZyB0aGVtLiBUaGUgdXNlcidzIGFuIGV4cGVydCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0YXJnZXRlZC4gVGhlIHByb21wdCBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50LCBcIkxldCdzIGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdgLlwiIEFscmlnaHQsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEl0IG1lYW5zIEkgbmVlZCB0byB0aGluayBhYm91dCB3aGF0IEkgd291bGQgY29uc2lkZXIgd2hlbiBleGFtaW5pbmcgYSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSBmb3IgdGhlIGBpcHNldGAgbW9kdWxlIHdpdGhpbiB0aGUgYG5ldGZpbHRlcmAgc3Vic3lzdGVtLlxuXG5JJ2QgYmUgdGhpbmtpbmcgYWJvdXQgdGhlIGZvbGxvd2luZywgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKiAgICoqVW5kZXJzdGFuZGluZyB0aGUgU2NvcGUqKjogRmlyc3QsIEknZCB3YW50IHRvIGdyYXNwIHdoYXQgdGhlIEtjb25maWcgZmlsZSBjb3ZlcnMuIElzIGl0IGp1c3QgdGhlIGBpcHNldGAgY29yZSwgb3IgYXJlIHRoZXJlIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZGlmZmVyZW50IGlwc2V0IHR5cGVzIChoYXNoLCBiaXRtYXAsIGV0Yy4pIG9yIGhlbHBlciBtb2R1bGVzPyBJJ2QgZXhwZWN0IHRvIHNlZSBhIGhpZXJhcmNoaWNhbCBzdHJ1Y3R1cmUuXG4qICAgKipEZXBlbmRlbmNpZXMgYW5kIERlZmF1bHRzKio6IEknZCBxdWlja2x5IGxvb2sgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGBpcHNldGAgdG8gYmUgYXZhaWxhYmxlPyBBcmUgdGhlcmUgYW55IGRlZmF1bHQgY29uZmlndXJhdGlvbnMgSSBzaG91bGQga25vdyBhYm91dD8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzICpjcnVjaWFsKiBmb3IgZGVidWdnaW5nIGFuZCBlbmFibGluZyBmZWF0dXJlcyBjb3JyZWN0bHkuXG4qICAgKipUcmlzdGF0ZSBPcHRpb25zKio6IEknZCBiZSBsb29raW5nIGZvciB0aGUgYHRyaXN0YXRlYCBvcHRpb25zIGFuZCB0aGVpciBhc3NvY2lhdGVkIGhlbHAgdGV4dC4gSSdkIGJlIGFzc2Vzc2luZyB3aGV0aGVyIHRoZXNlIG9wdGlvbnMgYXJlIG1vZHVsZXMgb3IgYnVpbHRpbi4gV2hpY2ggYXJlIGltcG9ydGFudCB0byBlbmFibGUgYXMgdGhlIGJhc2UgY29uZmlndXJhdGlvbj9cbiogICAqKkNvbXBsZXhpdHkqKjogSG93IGdyYW51bGFyIGFyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zPyBJcyBpdCBhIHNpbXBsZSBcImVuYWJsZS9kaXNhYmxlXCIgb3IgYXJlIHRoZXJlIHZhcmlvdXMgbGV2ZWxzIG9mIGN1c3RvbWl6YXRpb24gZm9yIHBlcmZvcm1hbmNlLCBtZW1vcnkgdXNhZ2UsIG9yIHNwZWNpZmljIHVzZSBjYXNlcz8gVGhpcyB3b3VsZCBoZWxwIG1lIGdhdWdlIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb21wbGV4aXR5IHRoYXQgdGhlIHVzZXIgbWlnaHQgZmFjZS5cbiogICAqKkRvY3VtZW50YXRpb24qKjogSSB3b3VsZCBwcm9iYWJseSBiZSB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AgdG8gY29uc2lkZXIgdGhlIGlwc2V0IGNvbW1hbmRzIHN1Y2ggYXMgYGlwc2V0IGNyZWF0ZWAsIGBpcHNldCBhZGRgLCBgaXBzZXQgZGVsYCwgZXRjLiBJJ2QgYmUgdGhpbmtpbmcgaWYgdGhlIGRvY3VtZW50YXRpb24gaXMgd2VsbC13cml0dGVuIGFuZCBpZiBpdCBwcm92aWRlcyBzdWZmaWNpZW50IGd1aWRhbmNlIGZvciBzb21lb25lIHdhbnRpbmcgdG8gY29uZmlndXJlIGBpcHNldGAuXG4qICAgKipFeGFtcGxlIGNvbmZpZ3VyYXRpb25zKio6IEknZCBsb29rIGF0IHRoZSBrY29uZmlnIG9wdGlvbnMgZm9yIG90aGVyIG5ldGZpbHRlciBtb2R1bGVzIHRvIGxvb2sgYXQgY29tbW9uIHVzYWdlIHBhdHRlcm5zIGFuZCBob3cgaXQgaXMgaW1wbGVtZW50ZWQuXG5cblNvLCBpbiBlc3NlbmNlLCBteSBpbnRlcm5hbCBjaGVja2xpc3Qgd291bGQgYmUgYWxsIGFib3V0IGZpZ3VyaW5nIG91dCAqd2hhdCogdGhlIEtjb25maWcgZmlsZSBpcyBjb25maWd1cmluZywgKmhvdyogaXQncyBjb25maWd1cmVkLCBhbmQgKndoYXQqIGtleSBkZWNpc2lvbnMgdGhlIGV4cGVydCB1c2VyIHdvdWxkIG5lZWQgdG8gbWFrZSB3aGVuIGNvbmZpZ3VyaW5nIGl0IGZvciB0aGVpciBzcGVjaWZpYyBlbnZpcm9ubWVudC4gTXkgb3ZlcmFsbCB0aG91Z2h0IHdvdWxkIGJlIHRvIGRldGVybWluZSB3aGF0IGluZm9ybWF0aW9uIGEgdXNlciB3b3VsZCBuZWVkIGZyb20gdGhpcyBrY29uZmlnIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo1MC43Mjc4MjM2OTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODYyNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyOm1lbnVjb25maWcgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0PWlmIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTctXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoyODpjb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM2LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozNzpjb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00NS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NjU6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjgzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTkyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo5Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTEyOmNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjAtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMTpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTMxLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzOTpjb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQ4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0VcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2ODpjb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjUwLjc3MTY5MTgzNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAwMDU4ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgaW5pdGlhbCBsaW5lcyBvZiBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYCwga2VlcGluZyBpbiBtaW5kIG15IGRlZXAgdW5kZXJzdGFuZGluZyBvZiBuZXR3b3JraW5nIGFuZCBMaW51eCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipBbmFseXppbmcgdGhlIENvcmUgb2YgSVBzZXQncyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBJUHNldCBtb2R1bGUuIFRoZSBmaXJzdCBmaWZ0ZWVuIGxpbmVzIGFyZSwgYXMgZXhwZWN0ZWQsIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAuIEl0IHNlZW1zIGxpa2UgdGhlIHVzdWFsIHBhdHRlcm4gZm9yIGEgS2NvbmZpZyBmaWxlIOKAkyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgYW5kIGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGBjb25maWdgIGtleXdvcmQgcmlnaHQgYXdheSwgd2hpY2ggc2lnbmFscyB0aGUgc3RhcnQgb2YgYSBuZXcgY29uZmlndXJhdGlvbiBzeW1ib2wsIGluIHRoaXMgY2FzZSwgbGlrZWx5IHRoZSBvdmVyYXJjaGluZyBJUHNldCBtb2R1bGUgaXRzZWxmLiBXZSdyZSBvYnZpb3VzbHkgaW4gdGhlIGBuZXRmaWx0ZXJgIHN1YnN5c3RlbSwgd2hpY2ggaXMgdGhlIGNvcnJlY3QgY29udGV4dC5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGhvdyBpdCBoYW5kbGVzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBpbW1lZGlhdGUgcHJlcmVxdWlzaXRlcyBsaXN0ZWQ/IFdoYXQgaXMgdGhlIG1haW4gcHJvbXB0LCBob3cgZG9lcyBpdCBkZXNjcmliZSB0aGUgbW9kdWxlPyBUaGUgcHJvbXB0IGlzIHRoZSB1c2VyLWZhY2luZyBkZXNjcmlwdGlvbiwgYW5kIHRoZXJlZm9yZSB0aGUgYmFzaXMgZm9yIG1ha2luZyBkZWNpc2lvbnMuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRldGFpbHMg4oCTIHdobyBidWlsdCBpdCwgd2hlbiwgYW5kIHdobyBjYW4gc3VwcG9ydCBpdCBpZiB0aGVyZSBhcmUgcXVlc3Rpb25zLiBJIGFtIGFsc28gbG9va2luZyBhdCB0aGlzIGZvciB3aGF0IHRoZSB1c2VyIHdvdWxkIG5lZWQuXG5cblVsdGltYXRlbHksIEkgd2lsbCBiZSBhc3Nlc3NpbmcgaG93IHRoZSBtb2R1bGUgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBrZXJuZWwsIHdoYXQgcGFydHMgaXQgaGFuZGxlcywgYW5kIGlmIGl0IGlzIHdlbGwtd3JpdHRlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ1MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM1OjU0LjU3MTc1MzQyNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgSVBfU0VUXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgc2V0IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBJUCBzZXQgc3VwcG9ydCB0byB0aGUga2VybmVsLlxcbiAgIDg6XFx0XFx0ICBJbiBvcmRlciB0byBkZWZpbmUgYW5kIHVzZSB0aGUgc2V0cywgeW91IG5lZWQgdGhlIHVzZXJzcGFjZSB1dGlsaXR5XFxuICAgOTpcXHRcXHQgIGlwc2V0KDgpLiBZb3UgY2FuIHVzZSB0aGUgc2V0cyBpbiBuZXRmaWx0ZXIgdmlhIHRoZSBcXFwic2V0XFxcIiBtYXRjaFxcbiAgMTA6XFx0XFx0ICBhbmQgXFxcIlNFVFxcXCIgdGFyZ2V0LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRpZiBJUF9TRVRcXG4gIDE1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNTo1NC41NzE4MjM1MDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2NzA5MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQIFNldCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSVBfU0VUYCBmZWF0dXJlLCBhbmQgaXQncyBidWlsdCBvbiBwcmV0dHkgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzOiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkncmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBJIHNlZSB0aGlzIHBhdGNoLCBhbmQgaXQncyB0d2Vha2luZyBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3NldF9jb3JlLmNgLiBUaGlzIGZ1bmN0aW9uLCBgX19pcF9zZXRfcHV0X2J5aW5kZXhgLCBpcyB3aGF0J3MgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgLCB3aGljaCBpcyBleHBvcnRlZCBhbmQgdGhlbiB1c2VkIGJ5IGBpcF9zZXRfbGlzdF9zZXQuY2AuIFRoYXQgbWFrZXMgc2Vuc2U7IGBsaXN0X3NldGAgaXMgY2xlYW5pbmcgdXAgYWZ0ZXIgaXRzZWxmIGFuZCBjYWxsaW5nIHRoaXMgY29yZSBmdW5jdGlvbi4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgYF9faXBfc2V0X3B1dF9ieWluZGV4YCBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBpcF9zZXRfcHV0X2J5aW5kZXhgPyBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIG90aGVyIG1vZHVsZXMgYXJlIHVzaW5nIHRoYXQgY29yZSBmdW5jdGlvbiBkaXJlY3RseSwganVzdCB0byBiZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIFRoYXQncyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBpc24ndCBjYWxsZWQgc29tZXdoZXJlIGl0IHNob3VsZG4ndCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjAwLjgzODkyMTM1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzODAxMTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwX3NldF9wdXRfYnlpbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NTM6X19pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IGlwX3NldF9uZXQgKmluc3QsIGlwX3NldF9pZF90IGluZGV4KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NTQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg3Mj1pcF9zZXRfcHV0X2J5aW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpcF9zZXRfaWRfdCBpbmRleClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjg3NjpcXHRfX2lwX3NldF9wdXRfYnlpbmRleChpbnN0LCBpbmRleCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3Ny19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjAyLjM3Njk0MTM4MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTgyOTU0MTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYGlwX3NldF9wdXRfYnlpbmRleGAqKlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUgdXNhZ2Ugb2YgYGlwX3NldF9wdXRfYnlpbmRleGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXMsIGl0J3MgdXNlZCAqb25seSogd2l0aGluIHRoZSBgaXBfc2V0X3B1dF9ieWluZGV4YCBmdW5jdGlvbiBpdHNlbGYuXCIgVGhlbiwgSSByZWNhbGwgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIGBpcF9zZXRfbGlzdF9zZXQuY2AsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0IG1pZ2h0IGJlIGVuY2Fwc3VsYXRlZCB0aGVyZS4gQnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5IHN1cmUqIHRoYXQgbm8gb3RoZXIgcGFydCBvZiB0aGUgY29kZWJhc2UgaXMgcmVseWluZyBvbiB0aGlzIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2guIFRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBhbnkgb3RoZXIgZmlsZXMuIExldCBtZSBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiBpdHMgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTg3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MDYuNTU5ODk4NDA2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI0NjAxMDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg9MzExPWV4dGVybiBpcF9zZXRfaWRfdCBpcF9zZXRfZ2V0X2J5bmFtZShzdHJ1Y3QgbmV0ICpuZXQsXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtMzEyLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqbmFtZSwgc3RydWN0IGlwX3NldCAqKnNldCk7XFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6MzEzOmV4dGVybiB2b2lkIGlwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4KTtcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC0zMTQtZXh0ZXJuIHZvaWQgaXBfc2V0X25hbWVfYnlpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGlwX3NldF9pZF90IGluZGV4LCBjaGFyICpuYW1lKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NTI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODUzOl9faXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBpcF9zZXRfbmV0ICppbnN0LCBpcF9zZXRfaWRfdCBpbmRleClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz04NzE9dm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzI6aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4NzY6XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy04NzctfVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzo4Nzg6RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODc5LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNTM9bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNTgtXFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZlLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE1OTpcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIGUtXFx1MDAzZWlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2MC1cXHRjYWxsX3JjdShcXHUwMDI2ZS1cXHUwMDNlcmN1LCBfX2xpc3Rfc2V0X2RlbF9yY3UpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjQ9bGlzdF9zZXRfcmVwbGFjZShzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBzZXRfZWxlbSAqZSwgc3RydWN0IHNldF9lbGVtICpvbGQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OC1cXHRsaXN0X3JlcGxhY2VfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZWxpc3QsIFxcdTAwMjZlLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2OTpcXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIG9sZC1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTcwLVxcdGNhbGxfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MjM2PWxpc3Rfc2V0X3VhZGQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICp2YWx1ZSwgY29uc3Qgc3RydWN0IGlwX3NldF9leHQgKmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjczLVxcdFxcdC8qIFNldCBpcyBhbHJlYWR5IGFkZGVkIHRvIHRoZSBsaXN0ICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyNzQ6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBkLVxcdTAwM2VpZCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0yNzUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM1MD1saXN0X3NldF91YWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDA3LVxcdGlmIChlLnJlZmlkICE9IElQU0VUX0lOVkFMSURfSUQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MDg6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBlLnJlZmlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQwOS1cXHRpZiAoYWR0ICE9IElQU0VUX0FERCB8fCByZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0MTA6XFx0XFx0aXBfc2V0X3B1dF9ieWluZGV4KG1hcC1cXHUwMDNlbmV0LCBlLmlkKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MDguMDg0NTAzNjMzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjcyODIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSYWNlIENvbmRpdGlvbiBpbiBpcF9zZXRfbGlzdF9zZXQuYyoqXG5cbk9rYXksIGl0IHNlZW1zIHRoaXMgZml4IGlzIGV4Y2x1c2l2ZWx5IHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBHb29kLCB0aGF0IG5hcnJvd3MgdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgdGhlIHBhdGNoIGl0c2VsZiBpcyBzdHJhaWdodGZvcndhcmQgLSBhIGxvY2sgYW5kIGEgYEJVR19PTmAgYXJlIGFkZGVkLiBJdCdzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBpc3N1ZSB3aGVyZSB0aGUgcmVmZXJlbmNlIGNvdW50LCBgc2V0LVx1MDAzZXJlZmAsIGNvdWxkIHBvdGVudGlhbGx5IGRyb3AgYmVsb3cgemVybyBvciBiZSBtb2RpZmllZCBjb25jdXJyZW50bHksIHdoaWNoIGlzIG9idmlvdXNseSBhIHByb2JsZW0uXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUgYXBwZWFyIHRvIGJlIGBpcF9zZXRfcHV0X2J5aW5kZXhgLCBgbGlzdF9zZXRfZGVsYCwgYGxpc3Rfc2V0X3JlcGxhY2VgLCBgbGlzdF9zZXRfdWFkZGAsIGFuZCBgbGlzdF9zZXRfdWFkdGAuIExldCdzIHNlZS4uLiBBaCwgeWVzLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIGBfX2lwX3NldF9wdXRfYnlpbmRleGAgaXMgc3RhdGljLCBtZWFuaW5nIHRoYXQgYGlwX3NldF9wdXRfYnlpbmRleGAgaXMgdGhlIGV4dGVybmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXaXRoIGBsaXN0X3NldF91YWRkYCBhbmQgYGxpc3Rfc2V0X3VhZHRgIHJlc2lkaW5nIGluIHRoZSBzYW1lIGZpbGUsIGBpcF9zZXRfbGlzdF9zZXQuY2AsIG1ha2VzIHRoZSBpbnZlc3RpZ2F0aW9uIG1vcmUgZWZmaWNpZW50LiBJJ2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgZnVuY3Rpb25zIHdpdGhpbiBgaXBfc2V0X2xpc3Rfc2V0LmNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNjcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MTQuMDExNzg4NzM5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg3NjQ1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgbGlzdF9zZXRfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjE0LjA3NzY3MTUyOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTkxMDUxNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBsaXN0X3NldF9gIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gdGhlc2UgYGxpc3Rfc2V0X2AgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGUgcG9zc2libGUgaW1wbGljYXRpb25zLiBUaGlua2luZyB0aHJvdWdoIHRoZSBzeW50YXgsIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBzZXQgb2Ygb3BlcmF0aW9ucyBvbiBsaXN0cywgbWF5YmUgcmVsYXRlZCB0byBzZXQgdGhlb3J5IGNvbmNlcHRzPyBJbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLi4uIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGhlcmUuIEFyZSB0aGVzZSBsaWtlbHkgYnVpbHQtaW4gZnVuY3Rpb25zLCBvciBjdXN0b20gaW1wbGVtZW50YXRpb25zPyBJZiBjdXN0b20sIHRoZSBlZmZpY2llbmN5IGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIGFsZ29yaXRobXMgdXNlZCDigJMgdGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LlxuXG5NeSBpbnRlcm5hbCBjaGVja2xpc3QgaW1tZWRpYXRlbHkgZXhwYW5kcy4gRGF0YSB0eXBlIGhhbmRsaW5nOiBBcmUgdGhlcmUgYW55IGltcGxpY2l0IHR5cGUgY29udmVyc2lvbnMgb3IgcG90ZW50aWFsIGVycm9ycyB0aGVyZSwgY29uc2lkZXJpbmcgbGlzdHMgYW5kIHNldHMgdXN1YWxseSBoYXZlIHNvbWUgc3RyaWN0bmVzcyB3aGVuIG1peGVkIGluIG9wZXJhdGlvbnM/IEVkZ2UgY2FzZXM6IEVtcHR5IGxpc3RzLCBlbXB0eSBzZXRzLCBsaXN0cyBvciBzZXRzIHdpdGggZHVwbGljYXRlcy4gSG93IGRvIHRoZXNlIGZ1bmN0aW9ucyBiZWhhdmUgaW4gdGhlc2Ugc2l0dWF0aW9ucz8gUG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cz8gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24gb3IgY29kZSB0byBjb25maXJtLiBUaGlua2luZyBhaGVhZCwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGNvbmN1cnJlbmN5IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiBhIGxhcmdlciwgbXVsdGktdGhyZWFkZWQgc3lzdGVtLiBPdmVyYWxsLCB0aGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gZGV0ZXJtaW5lIGhvdyBlZmZpY2llbnQgYW5kIHJlbGlhYmxlIHRoZXNlIHBhcnRpY3VsYXIgZnVuY3Rpb25zIGFyZSBpbiBhIGdpdmVuIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNjY3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6MTkuNjY4NzI1NDQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA2ODM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaXN0X3NldF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQ4PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ5Omxpc3Rfc2V0X2t0ZXN0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTUwLVxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTczPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjc0Omxpc3Rfc2V0X2thZGQoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNzUtXFx0ICAgICAgY29uc3Qgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz05Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo5NDpsaXN0X3NldF9rZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTk1LVxcdCAgICAgIGNvbnN0IHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTEzPXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjExNDpsaXN0X3NldF9rYWR0KHN0cnVjdCBpcF9zZXQgKnNldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTExNS1cXHQgICAgICBjb25zdCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyMy1cXHRjYXNlIElQU0VUX1RFU1Q6XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMjQ6XFx0XFx0cmV0ID0gbGlzdF9zZXRfa3Rlc3Qoc2V0LCBza2IsIHBhciwgb3B0LCBcXHUwMDI2ZXh0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyNS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTEyNi1cXHRjYXNlIElQU0VUX0FERDpcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjEyNzpcXHRcXHRyZXQgPSBsaXN0X3NldF9rYWRkKHNldCwgc2tiLCBwYXIsIG9wdCwgXFx1MDAyNmV4dCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMjgtXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xMjktXFx0Y2FzZSBJUFNFVF9ERUw6XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxMzA6XFx0XFx0cmV0ID0gbGlzdF9zZXRfa2RlbChzZXQsIHNrYiwgcGFyLCBvcHQsIFxcdTAwMjZleHQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTMxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNDI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE0MzpfX2xpc3Rfc2V0X2RlbF9yY3Uoc3RydWN0IHJjdV9oZWFkICogcmN1KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTQ0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTUyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoxNTM6bGlzdF9zZXRfZGVsKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTU5LVxcdGlwX3NldF9wdXRfYnlpbmRleChtYXAtXFx1MDAzZW5ldCwgZS1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTYwOlxcdGNhbGxfcmN1KFxcdTAwMjZlLVxcdTAwM2VyY3UsIF9fbGlzdF9zZXRfZGVsX3JjdSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0xNjEtfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0xNjM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE2NDpsaXN0X3NldF9yZXBsYWNlKHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IHNldF9lbGVtICplLCBzdHJ1Y3Qgc2V0X2VsZW0gKm9sZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2NS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE2OS1cXHRpcF9zZXRfcHV0X2J5aW5kZXgobWFwLVxcdTAwM2VuZXQsIG9sZC1cXHUwMDNlaWQpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTcwOlxcdGNhbGxfcmN1KFxcdTAwMjZvbGQtXFx1MDAzZXJjdSwgX19saXN0X3NldF9kZWxfcmN1KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTE3MS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTE3ND1zZXRfY2xlYW51cF9lbnRyaWVzKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgwLVxcdFxcdGlmIChpcF9zZXRfdGltZW91dF9leHBpcmVkKGV4dF90aW1lb3V0KGUsIHNldCkpKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MTgxOlxcdFxcdFxcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTgyLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9MTg0PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjE4NTpsaXN0X3NldF91dGVzdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMTg2LVxcdCAgICAgICBzdHJ1Y3QgaXBfc2V0X2V4dCAqbWV4dCwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz0yMjA9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjIyMTpsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc3RydWN0IGlwX3NldCAqc2V0LCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjIyLVxcdFxcdFxcdCBzdHJ1Y3Qgc2V0X2VsZW0gKmUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTIzNT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzoyMzY6bGlzdF9zZXRfdWFkZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjM3LVxcdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTI3MC1cXHRcXHRpcF9zZXRfZXh0X2Rlc3Ryb3koc2V0LCBuKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjI3MTpcXHRcXHRsaXN0X3NldF9pbml0X2V4dGVuc2lvbnMoc2V0LCBleHQsIG4pO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMjcyLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zMDItXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmUtXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6MzAzOlxcdGxpc3Rfc2V0X2luaXRfZXh0ZW5zaW9ucyhzZXQsIGV4dCwgZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zMDQtXFx0aWYgKG4pXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMDU6XFx0XFx0bGlzdF9zZXRfcmVwbGFjZShzZXQsIGUsIG4pO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzA2LVxcdGVsc2UgaWYgKG5leHQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTMxNz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozMTg6bGlzdF9zZXRfdWRlbChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHZvaWQgKnZhbHVlLCBjb25zdCBzdHJ1Y3QgaXBfc2V0X2V4dCAqZXh0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtMzE5LVxcdCAgICAgIHN0cnVjdCBpcF9zZXRfZXh0ICptZXh0LCB1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTM0Mi1cXHRcXHR9XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozNDM6XFx0XFx0bGlzdF9zZXRfZGVsKHNldCwgZSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNDQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTM0OT1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzozNTA6bGlzdF9zZXRfdWFkdChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy0zNTEtXFx0ICAgICAgZW51bSBpcHNldF9hZHQgYWR0LCB1MzIgKmxpbmVubywgdTMyIGZsYWdzLCBib29sIHJldHJpZWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMS1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbiwgXFx1MDAyNm1hcC1cXHUwMDNlbWVtYmVycywgbGlzdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQyMjpcXHRcXHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQyMy1cXHRzZXQtXFx1MDAzZWVsZW1lbnRzID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDI3PXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0Mjg6bGlzdF9zZXRfZGVzdHJveShzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00Mjkte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00Mzk9c3RhdGljIHNpemVfdFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDQwOmxpc3Rfc2V0X21lbXNpemUoY29uc3Qgc3RydWN0IGxpc3Rfc2V0ICptYXAsIHNpemVfdCBkc2l6ZSlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ0MS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQ1Mz1zdGF0aWMgaW50XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo0NTQ6bGlzdF9zZXRfaGVhZChzdHJ1Y3QgaXBfc2V0ICpzZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTUte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00NTctXFx0c3RydWN0IG5sYXR0ciAqbmVzdGVkO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDU4OlxcdHNpemVfdCBtZW1zaXplID0gbGlzdF9zZXRfbWVtc2l6ZShtYXAsIHNldC1cXHUwMDNlZHNpemUpICsgc2V0LVxcdTAwM2VleHRfc2l6ZTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ1OS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDc3PXN0YXRpYyBpbnRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQ3ODpsaXN0X3NldF9saXN0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKnNldCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQ3OS1cXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTUzMj1zdGF0aWMgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTMzOmxpc3Rfc2V0X3NhbWVfc2V0KGNvbnN0IHN0cnVjdCBpcF9zZXQgKmEsIGNvbnN0IHN0cnVjdCBpcF9zZXQgKmIpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01MzQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU0NDpsaXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTQ1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUxLVxcdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUyOlxcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTMtfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTU2OlxcdC5rYWR0XFx0PSBsaXN0X3NldF9rYWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTU3OlxcdC51YWR0XFx0PSBsaXN0X3NldF91YWR0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTU4LVxcdC5hZHRcXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1OTpcXHRcXHRbSVBTRVRfQUREXSA9IGxpc3Rfc2V0X3VhZGQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjA6XFx0XFx0W0lQU0VUX0RFTF0gPSBsaXN0X3NldF91ZGVsLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYxOlxcdFxcdFtJUFNFVF9URVNUXSA9IGxpc3Rfc2V0X3V0ZXN0LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTYyLVxcdH0sXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XFx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTY0OlxcdC5mbHVzaFxcdD0gbGlzdF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjU6XFx0LmhlYWRcXHQ9IGxpc3Rfc2V0X2hlYWQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjY6XFx0Lmxpc3RcXHQ9IGxpc3Rfc2V0X2xpc3QsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njc6XFx0LnNhbWVfc2V0ID0gbGlzdF9zZXRfc2FtZV9zZXQsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1Njg6XFx0LmNhbmNlbF9nYyA9IGxpc3Rfc2V0X2NhbmNlbF9nYyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2OS19O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NzE9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU3MjpsaXN0X3NldF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU4NT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTg2Omxpc3Rfc2V0X2djX2luaXQoc3RydWN0IGlwX3NldCAqc2V0LCB2b2lkICgqZ2MpKHN0cnVjdCB0aW1lcl9saXN0ICp0KSlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU4Ny17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU5Nz1pbml0X2xpc3Rfc2V0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwX3NldCAqc2V0LCB1MzIgc2l6ZSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjEzLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjE0OnN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbGlzdF9zZXRfbG9ja2RlcF9rZXk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02MTUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz02MTY9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NjE3Omxpc3Rfc2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpcF9zZXQgKnNldCwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYxOC1cXHRcXHR1MzIgZmxhZ3MpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTYzMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjYzMjpcXHRsb2NrZGVwX3NldF9jbGFzcyhcXHUwMDI2c2V0LVxcdTAwM2Vsb2NrLCBcXHUwMDI2bGlzdF9zZXRfbG9ja2RlcF9rZXkpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjMzLVxcdHNldC1cXHUwMDNldmFyaWFudCA9IFxcdTAwMjZzZXRfdmFyaWFudDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjM5LVxcdFxcdHNldC1cXHUwMDNldGltZW91dCA9IGlwX3NldF90aW1lb3V0X3VnZXQodGJbSVBTRVRfQVRUUl9USU1FT1VUXSk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2NDA6XFx0XFx0bGlzdF9zZXRfZ2NfaW5pdChzZXQsIGxpc3Rfc2V0X2djKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0MS1cXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY0NTpzdGF0aWMgc3RydWN0IGlwX3NldF90eXBlIGxpc3Rfc2V0X3R5cGUgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY0Ni1cXHQubmFtZVxcdFxcdD0gXFxcImxpc3Q6c2V0XFxcIixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjUyLVxcdC5yZXZpc2lvbl9tYXhcXHQ9IElQU0VUX1RZUEVfUkVWX01BWCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY1MzpcXHQuY3JlYXRlXFx0XFx0PSBsaXN0X3NldF9jcmVhdGUsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02NTQtXFx0LmNyZWF0ZV9wb2xpY3lcXHQ9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njc4PXN0YXRpYyBpbnQgX19pbml0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2Nzk6bGlzdF9zZXRfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgwLXtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4MTpcXHRyZXR1cm4gaXBfc2V0X3R5cGVfcmVnaXN0ZXIoXFx1MDAyNmxpc3Rfc2V0X3R5cGUpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNjgyLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9Njg0PXN0YXRpYyB2b2lkIF9fZXhpdFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6Njg1Omxpc3Rfc2V0X2Zpbmkodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4Ni17XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02ODctXFx0cmN1X2JhcnJpZXIoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjY4ODpcXHRpcF9zZXRfdHlwZV91bnJlZ2lzdGVyKFxcdTAwMjZsaXN0X3NldF90eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTY4OS19XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy02OTAtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTE6bW9kdWxlX2luaXQobGlzdF9zZXRfaW5pdCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo2OTI6bW9kdWxlX2V4aXQobGlzdF9zZXRfZmluaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjE5LjcxMTc5ODM0MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU3NDIzNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGlwX3NldF9saXN0X3NldC5jYCBDb2RlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gb2YgYGlwX3NldF9saXN0X3NldC5jYCByZXZlYWxzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50czogYGxpc3Rfc2V0X3VhZHRgLCBgbGlzdF9zZXRfdWFkZGAsIGBsaXN0X3NldF91ZGVsYCwgYGxpc3Rfc2V0X3V0ZXN0YCwgYGxpc3Rfc2V0X2thZHRgLCBgbGlzdF9zZXRfa2FkZGAsIGBsaXN0X3NldF9rZGVsYCwgYW5kIGBsaXN0X3NldF9rdGVzdGAuIEJ1dCBob2xkIG9uLCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBhbHNvIGV4cG9ydGVkIGFuZCwgY3JpdGljYWxseSwgaXQncyBjYWxsZWQgYnkgYGxpc3Rfc2V0X2RlbGAsIGBsaXN0X3NldF9yZXBsYWNlYCwgYGxpc3Rfc2V0X3VhZGRgLCBhbmQgYGxpc3Rfc2V0X3VhZHRgLiBUaGF0IGltbWVkaWF0ZWx5IGVsZXZhdGVzIGBpcF9zZXRfcHV0X2J5aW5kZXhgIHRvIGEgcHJpbWUgZm9jdXMuIFRoaXMgc2VlbXMgdG8gYmUgd2hlcmUgdGhpbmdzIGFyZSByZWFsbHkgaGFwcGVuaW5nLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpcF9zZXRfcHV0X2J5aW5kZXhgIGluIGBpcF9zZXRfY29yZS5jYC4gQWgsIGEgbWlub3IgaGljY3VwIOKAkyBJIHNlZSBgX19pcF9zZXRfcHV0X2J5aW5kZXhgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24gYGlwX3NldF9wdXRfYnlpbmRleGAuIEkgd2FzIHJpZ2h0LCB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFNvIHRoZSByaWdodCBmb2N1cyBpcyBpbmRlZWQgYGlwX3NldF9wdXRfYnlpbmRleGAuIEknbGwgZGVsdmUgaW50byBpdHMgaW1wbGVtZW50YXRpb24gaW4gYGlwX3NldF9jb3JlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODYwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjI2Ljg2OTIyNDE0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODY1OlxcdFxcdFxcdHNldC1cXHUwMDNlcmVmLS07XFxuIDg2NjpcXHRcXHR9XFxuIDg2NzpcXHRcXHR3cml0ZV91bmxvY2tfYmgoXFx1MDAyNmlwX3NldF9yZWZfbG9jayk7XFxuIDg2ODpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gODY5OlxcdH1cXG4gODcwOlxcdFxcbiA4NzE6XFx0dm9pZFxcbiA4NzI6XFx0aXBfc2V0X3B1dF9ieWluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuIDg3MzpcXHR7XFxuIDg3NDpcXHRcXHRzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCA9IGlwX3NldF9wZXJuZXQobmV0KTtcXG4gODc1OlxcdFxcbiA4NzY6XFx0XFx0X19pcF9zZXRfcHV0X2J5aW5kZXgoaW5zdCwgaW5kZXgpO1xcbiA4Nzc6XFx0fVxcbiA4Nzg6XFx0RVhQT1JUX1NZTUJPTF9HUEwoaXBfc2V0X3B1dF9ieWluZGV4KTtcXG4gODc5OlxcdFxcbiA4ODA6XFx0LyogR2V0IHRoZSBuYW1lIG9mIGEgc2V0IGJlaGluZCBhIHNldCBpbmRleC5cXG4gODgxOlxcdCAqIFNldCBpdHNlbGYgaXMgcHJvdGVjdGVkIGJ5IFJDVSwgYnV0IGl0cyBuYW1lIGlzbid0OiB0byBwcm90ZWN0IGFnYWluc3RcXG4gODgyOlxcdCAqIHJlbmFtaW5nLCBncmFiIGlwX3NldF9yZWZfbG9jayBhcyByZWFkZXIgKHNlZSBpcF9zZXRfcmVuYW1lKCkpIGFuZCBjb3B5IHRoZVxcbiA4ODM6XFx0ICogbmFtZS5cXG4gODg0OlxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjoyNi44NjkzNjQ3M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk1MzMyNzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWwgdGFyZ2V0cyBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhlIG9idmlvdXMgZW50cnkgcG9pbnQgc2VlbXMgdG8gYmUgYGlwX3NldF9wdXRfYnlpbmRleGAsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBpdCdzIHRoZSByaWdodCBjaG9pY2UuIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIGFsc28gdG8gbG9vayBhdCBgbGlzdF9zZXRfdWFkZGAgYW5kIGBsaXN0X3NldF91YWR0YCBhcyBJIGtub3cgdGhlc2UgYXJlIHJlbGF0ZWQsIGJ1dCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgaWYgcG9zc2libGUuIEkgY29uZmlybWVkIGJvdGggYGxpc3Rfc2V0X3VhZGRgIGFuZCBgbGlzdF9zZXRfdWFkdGAgYXJlIHN0YXRpYy5cblxuQWgsIGJ1dCAqd2FpdCosIGBsaXN0X3NldF91YWRkYCwgYWx0aG91Z2ggc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYHNldF92YXJpYW50YCBzbyBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gR29vZCBwb2ludCB0byBub3RlLCBhbHRob3VnaCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgbWFraW5nIGl0IGEgc3Ryb25nZXIgY29udGVuZGVyIGFzIGl0J3MgZGlyZWN0bHkgZXhwb3NlZC4gSSBuZWVkIHRvIGJlIHN0cmF0ZWdpYyBoZXJlLlxuXG5MZXQncyBjaGVjayBgaXBfc2V0X3B1dF9ieWluZGV4YCBhZ2Fpbi4gSXMgaXQgYSAqaG90IHBhdGgqIGZ1bmN0aW9uLCBsaWtlIGBrZnJlZWAsIHRoYXQncyBjYWxsZWQgZXZlcnl3aGVyZT8gTm8sIGl0J3Mgc3BlY2lmaWMgdG8gZGVsZXRpbmcgZWxlbWVudHMgZnJvbSBgbGlzdDpzZXRgLCB3aGljaCBpcyB1c2VmdWwuIEkgdGhpbmsgaXQncyBhIGdvb2QgY2FuZGlkYXRlIHRvIHN0YXJ0IHdpdGguXG5cbkknbSBhbHNvIHNlZWluZyBgaXBfc2V0X3N3YXBgIG1lbnRpb25lZCwgYW5kIHRoZSBjb21tZW50IGFib3V0IHNlcmlhbGl6aW5nIHRoZSBsaXN0IGxvb2t1cCB3aXRoIGl0LCBzd2FwcGluZyBib3RoIGBpcF9zZXRfbGlzdFtdYCBlbnRyaWVzIGFuZCBgc2V0LVx1MDAzZXJlZmAgdW5kZXIgYGlwX3NldF9yZWZfbG9ja2AuIFdvcnRoIGEgZGVlcGVyIGxvb2ssIHNvIEknbGwgYWRkIHRoYXQgdG8gbXkgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjozMy4xNjQ3MDA5NTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzY5MTM3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfc3dhcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTY4Mj1fX2lwX3NldF9wdXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTY4OS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6NjkwOi8qIHNldC1cXHUwMDNlcmVmIGNhbiBiZSBzd2FwcGVkIG91dCBieSBpcF9zZXRfc3dhcCwgbmV0bGluayBldmVudHMgKGxpa2UgZHVtcCkgbmVlZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy02OTEtICogYSBzZXBhcmF0ZSByZWZlcmVuY2UgY291bnRlclxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTg1Mz1fX2lwX3NldF9wdXRfYnlpbmRleChzdHJ1Y3QgaXBfc2V0X25ldCAqaW5zdCwgaXBfc2V0X2lkX3QgaW5kZXgpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtODU3LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6ODU4OlxcdC8qIFNlcmlhbGl6ZSB0aGUgbGlzdCBsb29rdXAgd2l0aCBpcF9zZXRfc3dhcCgpLCB3aGljaCBzd2FwcyBib3RoXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTg1OS1cXHQgKiBpcF9zZXRfbGlzdFtdIGVudHJpZXMgYW5kIHNldC1cXHUwMDNlcmVmIHVuZGVyIGlwX3NldF9yZWZfbG9jay5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzUxPXN0YXRpYyBpbnQgaXBfc2V0X3JlbmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzOTgtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzOTk6c3RhdGljIGludCBpcF9zZXRfc3dhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xNDAwLVxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTc4LVxcdFtJUFNFVF9DTURfU1dBUF1cXHQ9IHtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE3OTpcXHRcXHQuY2FsbFxcdFxcdD0gaXBfc2V0X3N3YXAsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxODAtXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjMzLjQxODQwMDYyOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjkyNjA5NjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbnMgaW4gdGhlIElQIFNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gcmVmaW5lIG15IGFuYWx5c2lzIG9mIHRoaXMgSVAgc2V0IGNvZGUsIHNwZWNpZmljYWxseSBsb29raW5nIGZvciByYWNlIGNvbmRpdGlvbnMuIEkndmUgcmVhbGl6ZWQgdGhhdCBgaXBfc2V0X3N3YXBgIGlzIGEgcmVhbGx5IGludGVyZXN0aW5nIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFRoaXMgbWFrZXMgaXQgYSBwb3RlbnRpYWwga2V5IHBvaW50IHRvIGV4YW1pbmUgYmVjYXVzZSBpdCByZXByZXNlbnRzIGEgZGlzdGluY3QgcG9pbnQgb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGNvdWxkIGV4cG9zZSB0aGUgb3RoZXIgc2lkZSBvZiBhIHBvdGVudGlhbCByYWNlLiBTbywgYGlwX3NldF9zd2FwYCBpcyBkZWZpbml0ZWx5IGdvaW5nIG9uIHRoZSBcIkZvY3VzU3ltYm9sc1wiIGxpc3QuXG5cbkhtbSwgYnV0IHdhaXQuLi4gdGhlIGZhY3QgdGhhdCBpdCdzIGBzdGF0aWNgIG1ha2VzIG1lIHBhdXNlLiBUaGUgZ3VpZGFuY2UgaXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBIb3dldmVyLCBzaW5jZSBgaXBfc2V0X3N3YXBgIGlzIGEgKmNhbGxiYWNrKiwgaXQncyBpbmhlcmVudGx5ICpub3QqIGlubGluZWQuIFNvLCBJIHRoaW5rIGl0J3Mgc3RpbGwgYSB2YWx1YWJsZSBzeW1ib2wgdG8gaW5jbHVkZS4gSSBzaG91bGQgYWxzbyBhZGQgYGlwX3NldF9wdXRfYnlpbmRleGAgdG8gdGhlIGxpc3QuIFRoYXQgb25lIGlzIG5vbi1zdGF0aWMsIHNvIGl0IGZpdHMgdGhlIHByZWZlcnJlZCBwYXR0ZXJuLiBMZXQncyBhZGQgdGhlbSBib3RoIVxuXG5Ob3csIEkgc2hvdWxkIHJlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gSXQncyB3b3J0aCBlbnN1cmluZyBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGFzcGVjdHMuIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBhcmUgdGhlIG1haW4gb25lcywgb2YgY291cnNlLiBSaWdodCwgYW5kIHRob3NlIGhhdmUgZGVwZW5kZW5jaWVzLiBgSVBfU0VUYCBkZXBlbmRzIG9uIGJvdGggYElORVRgIGFuZCBgTkVURklMVEVSYC4gRWFzeSBlbm91Z2guIGBJTkVUYCBpcyBgQ09ORklHX0lORVRgLCBOZXR3b3JraW5nIHN1cHBvcnQsIFRDUC9JUCBuZXR3b3JraW5nLCBhbmQgYE5FVEZJTFRFUmAgaXMgYENPTkZJR19ORVRGSUxURVJgLCB3aGljaCBpcyB0aGUgTmV0ZmlsdGVyIHBhY2tldCBmaWx0ZXJpbmcgZnJhbWV3b3JrLiBTdGFuZGFyZCBjb25maWdzLCBzbyB0aGF0J3MgZ29vZC4gQnV0IEkgbmVlZCB0byBpbmNsdWRlIGBJUF9TRVRgIGFuZCBgSVBfU0VUX0xJU1RfU0VUYCBpbiBteSBhbmFseXNpcy4gSnVzdCB0byBiZSBzYWZlLCBJIHNob3VsZCBhbHNvIGRvdWJsZSBjaGVjayBmb3IgYW55IG90aGVyIHN1YnRsZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTY3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjQwLjcxMTAxMjc2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDM5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI6bWVudWNvbmZpZyBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSVAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ9aWYgSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjpjb25maWcgSVBfU0VUX01BWFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIElQIHNldHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI4OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzYtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM3OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6aXAsbWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ1LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0Njpjb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01NC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTU6Y29uZmlnIElQX1NFVF9IQVNIX0lQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo2NTpjb25maWcgSVBfU0VUX0hBU0hfSVBNQVJLXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hcmsgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzMtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjc0OmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Mi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjkzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTAyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDM6Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTExLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTI6Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcImhhc2g6bWFjIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTIxOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzA6Y29uZmlnIElQX1NFVF9IQVNIX05FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTM5OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDg6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTU4OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY4OmNvbmZpZyBJUF9TRVRfTElTVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVxcdHRyaXN0YXRlIFxcXCJsaXN0OnNldCBzZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzY6NDAuNzU1ODY0MTU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTQwNDUxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBgSVBfU0VUYCBhbmQgYElQX1NFVF9MSVNUX1NFVGAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW1zIGhlcmUuIExldCBtZSBxdWlja2x5IGFzc2VzcyB0aGUgZGVwZW5kZW5jaWVzIGZvciBgSVBfU0VUX0xJU1RfU0VUYC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcHMgdG8gZW5zdXJlIHByb3BlciBpbXBsZW1lbnRhdGlvbiBhbmQgYXZvaWQgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLiBXaGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgZG9lcyBpdCBoaW5nZSB1cG9uPyBEb2VzIGl0IG5lZWQgYElQX1NFVGAgdG8gYmUgZW5hYmxlZCBmaXJzdCwgb3IgZG9lcyBpdCBicmluZyBpdHMgb3duIHNldCBvZiBkZXBlbmRlbmNpZXM/IFVuZGVyc3RhbmRpbmcgdGhpcyBkZXBlbmRlbmN5IGdyYXBoIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIHRoaXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjQ1LjI2OTkxMjk1NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdFxcbiAxNjY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTY3OlxcdFxcbiAxNjg6XFx0Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcImxpc3Q6c2V0IHNldCBzdXBwb3J0XFxcIlxcbiAxNzA6XFx0XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG4gMTcxOlxcdFxcdGhlbHBcXG4gMTcyOlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgbGlzdDpzZXQgc2V0IHR5cGUgc3VwcG9ydC4gSW4gdGhpc1xcbiAxNzM6XFx0XFx0ICBraW5kIG9mIHNldCBvbmUgY2FuIHN0b3JlIHRoZSBuYW1lIG9mIG90aGVyIHNldHMgYW5kIGl0IGZvcm1zXFxuIDE3NDpcXHRcXHQgIGFuIG9yZGVyZWQgdW5pb24gb2YgdGhlIG1lbWJlciBzZXRzLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNzc6XFx0XFxuIDE3ODpcXHRjb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxuIDE3OTpcXHRcXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozNjo0NS4yNjk5ODkzMTRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1MjcwODEwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0IGhpbmdlcyBvbiBgSVBfU0VUYC4gSWYgdGhhdCdzIGVuYWJsZWQsIHRoZW4gd2UgYWxzbyBuZWVkIGBJUF9TRVRfTElTVF9TRVRgLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgd2hlcmUgdGhlIHJlZmVyZW5jZSBjb3VudCAoYHNldC1cdTAwM2VyZWZgKSBpc24ndCBwcm9wZXJseSBwcm90ZWN0ZWQgd2hlbiBkZWNyZW1lbnRlZC4gVGhpcyBjYW4gaGFwcGVuIHdpdGhvdXQgaG9sZGluZyB0aGUgYGlwX3NldF9yZWZfbG9ja2AsIHdoaWNoIGNyZWF0ZXMgYSBjb25mbGljdCB3aXRoIGBpcF9zZXRfc3dhcGAuIFRoZSBmaXggaXMgc2ltcGxlOiBhZGQgYHdyaXRlX2xvY2tfYmgoXHUwMDI2aXBfc2V0X3JlZl9sb2NrKWAgYmVmb3JlIHRoZSBkZWNyZW1lbnQuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGlwc2V0IG1vZHVsZS4gSXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgbmV0bGluayBjb21tYW5kcyB0byBgaXBzZXRgLCBzbyBpdCdzIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyByYWNlLiBJIG5lZWQgdG8gemVybyBpbiBvbiBgaXBfc2V0X3B1dF9ieWluZGV4YCBhbmQgYGlwX3NldF9zd2FwYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgaXBfc2V0X3B1dF9ieWluZGV4YCBpcyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgd2hpY2ggaXQgaXMsIHNvIHRoYXQgaXMgaW5jbHVkZWQuIGBpcF9zZXRfc3dhcGAgaXMgc3RhdGljLCBidXQgc2luY2UgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIGl0J3Mgbm90IGlubGluZWQsIHNvIGl0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuXG5cbkxldCdzIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNjM0LCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjM2OjU3Ljc5NzA3MzE5OFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODkyMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9MSVNUX1NFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICAgIFwiaXBfc2V0X3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9MSVNUX1NFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9wdXRfYnlpbmRleFwiLFxuICAgIFwiaXBfc2V0X3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBuZXRmaWx0ZXIgaXBzZXQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGxvY2sgYXJvdW5kIHRoZSByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGluIGBfX2lwX3NldF9wdXRfYnlpbmRleGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgY29kZS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYGlwX3NldF9wdXRfYnlpbmRleGAgYW5kIGBpcF9zZXRfc3dhcGAgd2hpY2ggYXJlIGludm9sdmVkIGluIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowz5w7h[1] Phase: Succeeded StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 12:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 12:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2] Phase: Succeeded StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 12:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 12:37:08 +0000 UTC FinishedAt: 2026-08-02 12:37:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz5w7h/series-workflowz5w7h-convert-artifact-1412728609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 12:37:18 +0000 UTC FinishedAt: 2026-08-02 12:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 12:37:18 +0000 UTC FinishedAt: 2026-08-02 12:53:21 +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:*648066c9-21bb-4182-8fef-15dd59b92db8,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-workflowz5w7h/series-workflowz5w7h-convert-artifact-1412728609/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": "adc5e86d-1de7-4f6b-9b88-5ab8360835d3", "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-workflowz5w7h/series-workflowz5w7h-build-action-884301391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 12:37:18 +0000 UTC FinishedAt: 2026-08-02 12:53:11 +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:*648066c9-21bb-4182-8fef-15dd59b92db8,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-workflowz5w7h/series-workflowz5w7h-convert-artifact-1412728609/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": "adc5e86d-1de7-4f6b-9b88-5ab8360835d3", "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-workflowz5w7h/series-workflowz5w7h-build-action-884301391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 12:53:21 +0000 UTC FinishedAt: 2026-08-02 12:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 12:53:21 +0000 UTC FinishedAt: 2026-08-02 12:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 12:53:21 +0000 UTC FinishedAt: 2026-08-02 12:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 12:53:21 +0000 UTC FinishedAt: 2026-08-02 12:53:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz5w7h/series-workflowz5w7h-convert-artifact-2872883828/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 12:53:31 +0000 UTC FinishedAt: 2026-08-02 12:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 12:53:31 +0000 UTC FinishedAt: 2026-08-02 12:55:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*adc5e86d-1de7-4f6b-9b88-5ab8360835d3,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-workflowz5w7h/series-workflowz5w7h-build-action-884301391/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-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 12:55:29 +0000 UTC FinishedAt: 2026-08-02 12:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 12:55:29 +0000 UTC FinishedAt: 2026-08-02 12:55:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 12:55:29 +0000 UTC FinishedAt: 2026-08-02 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 12:55:29 +0000 UTC FinishedAt: 2026-08-02 13:15:59 +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:*648066c9-21bb-4182-8fef-15dd59b92db8,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-workflowz5w7h/series-workflowz5w7h-convert-artifact-2872883828/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": "33d267c3-bf90-437e-b2bc-35992b58ad5a", "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-workflowz5w7h/series-workflowz5w7h-build-action-1601957696/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 12:55:29 +0000 UTC FinishedAt: 2026-08-02 13:15:49 +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:*648066c9-21bb-4182-8fef-15dd59b92db8,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-workflowz5w7h/series-workflowz5w7h-convert-artifact-2872883828/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": "33d267c3-bf90-437e-b2bc-35992b58ad5a", "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-workflowz5w7h/series-workflowz5w7h-build-action-1601957696/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 13:15:59 +0000 UTC FinishedAt: 2026-08-02 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 13:15:59 +0000 UTC FinishedAt: 2026-08-02 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 13:15:59 +0000 UTC FinishedAt: 2026-08-02 13:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 13:15:59 +0000 UTC FinishedAt: 2026-08-02 13:18:02 +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:*33d267c3-bf90-437e-b2bc-35992b58ad5a,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-workflowz5w7h/series-workflowz5w7h-build-action-1601957696/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-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"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:*adc5e86d-1de7-4f6b-9b88-5ab8360835d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*33d267c3-bf90-437e-b2bc-35992b58ad5a,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-workflowz5w7h/series-workflowz5w7h-build-action-884301391/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-workflowz5w7h/series-workflowz5w7h-build-action-1601957696/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 13:18:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 13:18:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"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-workflowz5w7h/series-workflowz5w7h-convert-artifact-2298266525/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 13:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 13:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 13:18:12 +0000 UTC FinishedAt: 2026-08-02 13:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 13:18:22 +0000 UTC FinishedAt: 2026-08-02 16:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz5w7h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_put_byindex","ip_set_swap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SET","IP_SET_LIST_SET"],"series_id":"f642acbf-11e4-4aeb-b1f3-109b3999d9f5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 13:18:22 +0000 UTC FinishedAt: 2026-08-02 16:19:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*adc5e86d-1de7-4f6b-9b88-5ab8360835d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*33d267c3-bf90-437e-b2bc-35992b58ad5a,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-workflowz5w7h/series-workflowz5w7h-build-action-884301391/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-workflowz5w7h/series-workflowz5w7h-build-action-1601957696/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-workflowz5w7h/series-workflowz5w7h-convert-artifact-2298266525/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,}