Name: series-workflowf69n2 Phase: Succeeded StartedAt: 2026-08-06 13:34:12 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[0] Phase: Succeeded StartedAt: 2026-08-06 13:34:12 +0000 UTC FinishedAt: 2026-08-06 14:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 13:34:12 +0000 UTC FinishedAt: 2026-08-06 14:20:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VMAP_STACK", "KASAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VMAP_STACK", "KASAN" ], "series_id": "2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZNQVBfU1RBQ0smIzM0OywKICAgICYjMzQ7S0FTQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDZhZDVlYzRiODUzNjEyZDVmZDAyNzVmMTJmNTMxNDdiMjQwYmJkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmNcbmluZGV4IGYwZTJlMTMxYTlhNWEuLjJmZDZmZDI1YzllNzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZm9yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZm9yay5jXG5AQCAtMjgwLDcgJiM0MzsyODAsMTkgQEAgc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG4gXHRpZiAodHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHZtX3N0YWNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR2ZnJlZSh2bV9hcmVhLVx1MDAzZWFkZHIpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUmVzZXQgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSB2ZnJlZSgpOiBpbiBSQ1UgY2FsbGJhY2sgY29udGV4dFxuJiM0MztcdCAqIHZmcmVlKCkgcm91dGVzIHRvIHZmcmVlX2F0b21pYygpLCB3aGljaCB3cml0ZXMgdG8gdGhlIGZyZWVkXG4mIzQzO1x0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXG4mIzQzO1x0ICogKDB4RkYpIG1ha2VzIEtBU0FOIGJ5cGFzcyB0YWcgY2hlY2tzIGZvciB0aGF0IHdyaXRlIGluIGFsbCBtb2Rlc1xuJiM0MztcdCAqIChIV19UQUdTLCBTV19UQUdTLCBHZW5lcmljKSwgYXZvaWRpbmcgYSBmYWxzZSB0YWctbWlzbWF0Y2ggcmVwb3J0LlxuJiM0MztcdCAqXG4mIzQzO1x0ICoga2FzYW5fdW5wb2lzb25fdm1hbGxvYygpIGlzIG5vdCBuZWVkZWQgaGVyZTogaW4gSFdfVEFHUyBpdCBpcyBhXG4mIzQzO1x0ICogbm8tb3Agd2l0aG91dCBLQVNBTl9WTUFMTE9DX1ZNX0FMTE9DLCBhbmQgaW4gU1dfVEFHUy9HZW5lcmljIHRoZVxuJiM0MztcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXG4mIzQzO1x0ICogaW50ZW50IG9mIHRoZSBmaXggaW4gc2NzX2ZyZWUoKSAoY29tbWl0IDUyOGE0YWI0NTMwMCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXHUwMDNlYWRkcikpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWTUFQX1NUQUNLJiMzNDssCiAgICAmIzM0O0tBU0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ2YWQ1ZWM0Yjg1MzYxMmQ1ZmQwMjc1ZjEyZjUzMTQ3YjI0MGJiZGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDE0OjE5OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmMKaW5kZXggZjBlMmUxMzFhOWE1YS4uMmZkNmZkMjVjOWU3OSAxMDA2NDQKLS0tIGEva2VybmVsL2ZvcmsuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZm9yay5jCkBAIC0yODAsNyAmIzQzOzI4MCwxOSBAQCBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaCkKIAlpZiAodHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHZtX3N0YWNrLSZndDtzdGFja192bV9hcmVhKSkKIAkJcmV0dXJuOwogCi0JdmZyZWUodm1fYXJlYS0mZ3Q7YWRkcik7CiYjNDM7CS8qCiYjNDM7CSAqIFJlc2V0IHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgdmZyZWUoKTogaW4gUkNVIGNhbGxiYWNrIGNvbnRleHQKJiM0MzsJICogdmZyZWUoKSByb3V0ZXMgdG8gdmZyZWVfYXRvbWljKCksIHdoaWNoIHdyaXRlcyB0byB0aGUgZnJlZWQKJiM0MzsJICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMCiYjNDM7CSAqICgweEZGKSBtYWtlcyBLQVNBTiBieXBhc3MgdGFnIGNoZWNrcyBmb3IgdGhhdCB3cml0ZSBpbiBhbGwgbW9kZXMKJiM0MzsJICogKEhXX1RBR1MsIFNXX1RBR1MsIEdlbmVyaWMpLCBhdm9pZGluZyBhIGZhbHNlIHRhZy1taXNtYXRjaCByZXBvcnQuCiYjNDM7CSAqCiYjNDM7CSAqIGthc2FuX3VucG9pc29uX3ZtYWxsb2MoKSBpcyBub3QgbmVlZGVkIGhlcmU6IGluIEhXX1RBR1MgaXQgaXMgYQomIzQzOwkgKiBuby1vcCB3aXRob3V0IEtBU0FOX1ZNQUxMT0NfVk1fQUxMT0MsIGFuZCBpbiBTV19UQUdTL0dlbmVyaWMgdGhlCiYjNDM7CSAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlCiYjNDM7CSAqIGludGVudCBvZiB0aGUgZml4IGluIHNjc19mcmVlKCkgKGNvbW1pdCA1MjhhNGFiNDUzMDApLgomIzQzOwkgKi8KJiM0MzsJdmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtJmd0O2FkZHIpKTsKIH0KIAogc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNaW5vciBLQVNBTiBQYXRjaCBpbiBLZXJuZWwgRm9ya2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBga2VybmVsL2ZvcmsuY2AuIEl0JiMzOTtzIHR3ZWFraW5nIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZnJlZWluZyB0aHJlYWQgc3RhY2tzIHVuZGVyIFJDVS4gVGhlIGNoYW5nZSBpcyBzaW1wbGU6IGl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYHZtX2FyZWEtJmd0O2FkZHJgIGRpcmVjdGx5IGluIHRoZSBgdmZyZWUoKWAgY2FsbCB0byB1c2luZyBga2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtJmd0O2FkZHIpYCBpbnN0ZWFkLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGFib3V0IHJlc2V0dGluZyBLQVNBTiB0YWdzIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4gSXQmIzM5O3MgYSB0aW55LCBsb2NhbGl6ZWQgY2hhbmdlLCBmb2N1c2VkIG9uIGB2ZnJlZSgpYCYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIEtBU0FOIHRhZyBtYW5hZ2VtZW50LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1Nob3VsZCBJIGV2ZW4gYm90aGVyIGZ1enppbmcgdGhpcz8mIzM0OyBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGZvcmtpbmcgbWVjaGFuaXNtcywgc28gaXQmIzM5O3MgY2xlYXJseSBpbXBvcnRhbnQuIEhvd2V2ZXIsIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGp1c3QgYSBwb2ludGVyIHRhZyByZXNldC4gSXQmIzM5O3Mgbm90IGEgbWFqb3IgYXJjaGl0ZWN0dXJhbCBzaGlmdCBvciBuZXcgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgbW9yZSBvZiBhIHN1YnRsZSBoYXJkZW5pbmcgbWVhc3VyZS4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzIHRoZSAmIzM0O2l0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGEgcXVpY2sgbG9vayYjMzQ7IGNhbXAsIHNpbmNlIGl0JiMzOTtzIGEgY29yZSBrZXJuZWwgZnVuY3Rpb24uIEl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byB0ZXN0IGV2ZW4gc21hbGwgY2hhbmdlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN1cHBvc2VkIHRvIGRvLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSB0byBtYWtlIGEgYmV0dGVyIGRldGVybWluYXRpb24uIExldCBtZSBnbyBvdmVyIHRoZSBjb2RlIGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RocmVhZF9zdGFja19mcmVlX3JjdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0yNDI9c3RhdGljIGJvb2wgdHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEpXG4tLVxua2VybmVsL2ZvcmsuYy0yNzQtXG5rZXJuZWwvZm9yay5jOjI3NTpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcbmtlcm5lbC9mb3JrLmMtMjc2LXtcbi0tXG5rZXJuZWwvZm9yay5jPTI5OD1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtMzAyLVx0dm1fc3RhY2stXHUwMDNlc3RhY2tfdm1fYXJlYSA9IHRzay1cdTAwM2VzdGFja192bV9hcmVhO1xua2VybmVsL2ZvcmsuYzozMDM6XHRjYWxsX3JjdShcdTAwMjZ2bV9zdGFjay1cdTAwM2VyY3UsIHRocmVhZF9zdGFja19mcmVlX3JjdSk7XG5rZXJuZWwvZm9yay5jLTMwNC19XG4tLVxua2VybmVsL2ZvcmsuYz0zOTM9c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy00MDktXG5rZXJuZWwvZm9yay5jOjQxMDpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcbmtlcm5lbC9mb3JrLmMtNDExLXtcbi0tXG5rZXJuZWwvZm9yay5jPTQxNT1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDE4LVxua2VybmVsL2ZvcmsuYzo0MTk6XHRjYWxsX3JjdShyaCwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcbmtlcm5lbC9mb3JrLmMtNDIwLX1cbi0tXG5rZXJuZWwvZm9yay5jPTQ0Mj1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnRocmVhZF9zdGFja19jYWNoZTtcbmtlcm5lbC9mb3JrLmMtNDQzLVxua2VybmVsL2ZvcmsuYzo0NDQ6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG5rZXJuZWwvZm9yay5jLTQ0NS17XG4tLVxua2VybmVsL2ZvcmsuYz00NDk9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTQ1Mi1cbmtlcm5lbC9mb3JrLmM6NDUzOlx0Y2FsbF9yY3UocmgsIHRocmVhZF9zdGFja19mcmVlX3JjdSk7XG5rZXJuZWwvZm9yay5jLTQ1NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBpbiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIGZ1bmN0aW9uYWwsIGJ1dCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgdGhhdCBvY2N1cnMgd2hlbiBmcmVlaW5nIHRocmVhZCBzdGFja3MuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgZmFjdCB0aGlzIGlzIGEga2VybmVsIGZ1bmN0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgdGltZSBvbiBmdXp6aW5nIHRoaXMuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCBvdXQgdGhlIHJlbGV2YW50IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoaXMgZnVuY3Rpb24mIzM5O3MgY29tcGlsYXRpb24uIEJhc2VkIG9uIHRoZSBuYW1lLCBhbmQgbXkgZXhwZXJpZW5jZSwgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgbGlrZWx5IGNvbnRyb2xsZWQgYnkgYENPTkZJR19WTUFQX1NUQUNLYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBga2VybmVsL2ZvcmsuY2AsIHdoaWNoIGlzIHRoZSBsaWtlbHkgc291cmNlIG9mIGNhbGxzIGZvciBzdGFjayBmcmVlaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XHRcdFx0XHRpZiAocGFnZV90b19uaWQocGFnZSkgIT0gbmlkKVxuIDI2MTpcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjYyOlx0XHRcdFx0fVxuIDI2MzpcdFx0XHR9XG4gMjY0Olx0XG4gMjY1Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5SX0NBQ0hFRF9TVEFDS1M7IGkmIzQzOyYjNDM7KSB7XG4gMjY2Olx0XHRcdFx0c3RydWN0IHZtX3N0cnVjdCAqdG1wID0gTlVMTDtcbiAyNjc6XHRcbiAyNjg6XHRcdFx0XHRpZiAodGhpc19jcHVfdHJ5X2NtcHhjaGcoY2FjaGVkX3N0YWNrc1tpXSwgXHUwMDI2dG1wLCB2bV9hcmVhKSlcbiAyNjk6XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuIDI3MDpcdFx0XHR9XG4gMjcxOlx0XHR9XG4gMjcyOlx0XHRyZXR1cm4gZmFsc2U7XG4gMjczOlx0fVxuIDI3NDpcdFxuIDI3NTpcdHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuIDI3NjpcdHtcbiAyNzc6XHRcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSBjb250YWluZXJfb2YocmgsIHN0cnVjdCB2bV9zdGFjaywgcmN1KTtcbiAyNzg6XHRcdHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEgPSB2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhO1xuIDI3OTpcdFxuIDI4MDpcdFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhKSlcbiAyODE6XHRcdFx0cmV0dXJuO1xuIDI4MjpcdFxuIDI4MzpcdFx0LypcbiAyODQ6XHRcdCAqIFJlc2V0IHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgdmZyZWUoKTogaW4gUkNVIGNhbGxiYWNrIGNvbnRleHRcbiAyODU6XHRcdCAqIHZmcmVlKCkgcm91dGVzIHRvIHZmcmVlX2F0b21pYygpLCB3aGljaCB3cml0ZXMgdG8gdGhlIGZyZWVkXG4gMjg2Olx0XHQgKiBtZW1vcnkgYXMgbGxpc3Qgc3RvcmFnZS4gIFJlc2V0dGluZyB0aGUgdGFnIHRvIEtBU0FOX1RBR19LRVJORUxcbiAyODc6XHRcdCAqICgweEZGKSBtYWtlcyBLQVNBTiBieXBhc3MgdGFnIGNoZWNrcyBmb3IgdGhhdCB3cml0ZSBpbiBhbGwgbW9kZXNcbiAyODg6XHRcdCAqIChIV19UQUdTLCBTV19UQUdTLCBHZW5lcmljKSwgYXZvaWRpbmcgYSBmYWxzZSB0YWctbWlzbWF0Y2ggcmVwb3J0LlxuIDI4OTpcdFx0ICpcbiAyOTA6XHRcdCAqIGthc2FuX3VucG9pc29uX3ZtYWxsb2MoKSBpcyBub3QgbmVlZGVkIGhlcmU6IGluIEhXX1RBR1MgaXQgaXMgYVxuIDI5MTpcdFx0ICogbm8tb3Agd2l0aG91dCBLQVNBTl9WTUFMTE9DX1ZNX0FMTE9DLCBhbmQgaW4gU1dfVEFHUy9HZW5lcmljIHRoZVxuIDI5MjpcdFx0ICogMHhGRiBwb2ludGVyIGFscmVhZHkgYnlwYXNzZXMgc2hhZG93IGNoZWNrcy4gIFRoaXMgbWlycm9ycyB0aGVcbiAyOTM6XHRcdCAqIGludGVudCBvZiB0aGUgZml4IGluIHNjc19mcmVlKCkgKGNvbW1pdCA1MjhhNGFiNDUzMDApLlxuIDI5NDpcdFx0ICovXG4gMjk1Olx0XHR2ZnJlZShrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cdTAwM2VhZGRyKSk7XG4gMjk2Olx0fVxuIDI5NzpcdFxuIDI5ODpcdHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gMjk5Olx0e1xuIDMwMDpcdFx0c3RydWN0IHZtX3N0YWNrICp2bV9zdGFjayA9IHRzay1cdTAwM2VzdGFjaztcbiAzMDE6XHRcbiAzMDI6XHRcdHZtX3N0YWNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEgPSB0c2stXHUwMDNlc3RhY2tfdm1fYXJlYTtcbiAzMDM6XHRcdGNhbGxfcmN1KFx1MDAyNnZtX3N0YWNrLVx1MDAzZXJjdSwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcbiAzMDQ6XHR9XG4gMzA1Olx0XG4gMzA2Olx0c3RhdGljIGludCBmcmVlX3ZtX3N0YWNrX2NhY2hlKHVuc2lnbmVkIGludCBjcHUpXG4gMzA3Olx0e1xuIDMwODpcdFx0c3RydWN0IHZtX3N0cnVjdCAqKmNhY2hlZF92bV9zdGFja19hcmVhcyA9IHBlcl9jcHVfcHRyKGNhY2hlZF9zdGFja3MsIGNwdSk7XG4gMzA5Olx0XHRpbnQgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDI1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGJsb2NrIG9mIGNvZGUgYW5kIHNwZWNpZmljYWxseSB0aGF0IGAjaWZkZWZgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFdoYXQmIzM5O3MgdGhlIGRlZmluZWQgc3ltYm9sPyBXaGF0IGZlYXR1cmVzIG9yIHBsYXRmb3JtcyBpcyB0aGlzIGNvZGUgdGFyZ2V0aW5nPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIGFzc29jaWF0ZWQgYnVpbGQgY29uZmlndXJhdGlvbi4gSXMgaXQgcGxhdGZvcm0tc3BlY2lmaWMsIGZlYXR1cmUtZmxhZ2dlZCwgb3IgZGVidWctcmVsYXRlZD8gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBjcm9zcy1yZWZlcmVuY2UgcmVsYXRlZCBpbmNsdWRlIGZpbGVzIG9yIG1ha2VmaWxlcywgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9uLCBwZXJoYXBzIGEgZGlmZmVyZW50IGFsZ29yaXRobSBmb3IgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSwgb3IgbWF5YmUgYSBmZWF0dXJlIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYnVpbGQgdGltZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgbWFpbnRhaW5hYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiBDT05GSUdfVk1BUF9TVEFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0xOTE9c3RhdGljIGlubGluZSB2b2lkIGZyZWVfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy0xOTUtXG5rZXJuZWwvZm9yay5jOjE5NjojaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcbmtlcm5lbC9mb3JrLmMtMTk3LS8qXG4tLVxua2VybmVsL2ZvcmsuYz04NjY9dm9pZCBfX2luaXQgZm9ya19pbml0KHZvaWQpXG4tLVxua2VybmVsL2ZvcmsuYy04OTktXG5rZXJuZWwvZm9yay5jOjkwMDojaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcbmtlcm5lbC9mb3JrLmMtOTAxLVx0Y3B1aHBfc2V0dXBfc3RhdGUoQ1BVSFBfQlBfUFJFUEFSRV9EWU4sIFwmIzM0O2Zvcms6dm1fc3RhY2tfY2FjaGVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3Qgb2ZmLCB0aGlzIHBhdGNoIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gYENPTkZJR19WTUFQX1NUQUNLYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIG1lbnRpb24gb2YgS0FTQU4gaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYENPTkZJR19LQVNBTmAsIGFuZCBwb3RlbnRpYWxseSBpdHMgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHRhZyB2YXJpYW50czogYENPTkZJR19LQVNBTl9IV19UQUdTYCBvciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgLiBUaGlzIGZpeCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgYWRkcmVzc2luZyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGR1cmluZyB0aHJlYWQgc3RhY2sgZnJlZWluZy4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQmIzM5O3MgYSBjbGVhbiwgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgYSBzaW5nbGUgbGluZSBhZGRpdGlvbiBvZiBga2FzYW5fcmVzZXRfdGFnYC4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIGEgY3Jhc2gsIHdoaWNoIGlzIGdvb2QuIEhvd2V2ZXIsIHRoZSBzaW1wbGljaXR5IG1ha2VzIG1lIHBhdXNlLiBTdGlsbCwgcHJldmVudGluZyBhIGNyYXNoIGlzIHZhbHVhYmxlLiBJJiMzOTttIGdvaW5nIHRvIGxlYW4gdG93YXJkcyAmIzM0O3llcyYjMzQ7LiBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBmb3Igbm93LCBidXQgd2lsbCByZWFzc2VzcyBpZiBJIGhhdmUgdG8gcHJpb3JpdGl6ZS4KCk5vdywgdGhlIHN5bWJvbCBhbmFseXNpcy4gVGhlIHBhdGNoIG1lbnRpb25zIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCB3aGljaCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdHJpY2t5LiBTaW5jZSBpdCYjMzk7cyBSQ1UsIGl0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGNhbGxlZC4gV2hhdCYjMzk7cyB0aGUgcHVibGljIGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoZSBmcmVlPyBJcyBpdCBgZnJlZV90aHJlYWRfc3RhY2tgLCBvciBwZXJoYXBzIGB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlYCwgb3IgbWF5YmUgZXZlbiBgZnJlZV90YXNrYD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzIHRvIHNlZSB3aGVyZSB0aGUgZnV6emluZyBob29rcyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0yNzU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG4tLVxua2VybmVsL2ZvcmsuYy0yOTctXG5rZXJuZWwvZm9yay5jOjI5ODpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL2ZvcmsuYy0yOTkte1xuLS1cbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtMzk1LVx0aWYgKCF0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodHNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxua2VybmVsL2ZvcmsuYzozOTY6XHRcdHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUodHNrKTtcbmtlcm5lbC9mb3JrLmMtMzk3LVxuLS1cbmtlcm5lbC9mb3JrLmM9NDEwPXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDE0LVxua2VybmVsL2ZvcmsuYzo0MTU6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDE2LXtcbi0tXG5rZXJuZWwvZm9yay5jPTQzND1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDM1LXtcbmtlcm5lbC9mb3JrLmM6NDM2Olx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xua2VybmVsL2ZvcmsuYy00MzctXHR0c2stXHUwMDNlc3RhY2sgPSBOVUxMO1xuLS1cbmtlcm5lbC9mb3JrLmM9NDQ0PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDQ4LVxua2VybmVsL2ZvcmsuYzo0NDk6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDUwLXtcbi0tXG5rZXJuZWwvZm9yay5jPTQ2NT1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDY2LXtcbmtlcm5lbC9mb3JrLmM6NDY3Olx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xua2VybmVsL2ZvcmsuYy00NjgtXHR0c2stXHUwMDNlc3RhY2sgPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZnJlZV90aHJlYWRfc3RhY2tgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZnJlZV90aHJlYWRfc3RhY2tgIHZhcmlhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqYWxzbyogc3RhdGljIGlzIGRlZmluaXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUgaGVyZSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIHRocmVhZCBzdGFjayBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIFRoZSBgc3RhdGljYCBrZXl3b3JkLCBhcyB3ZSBib3RoIGtub3csIGhhcyBjcnVjaWFsIGltcGxpY2F0aW9ucyBpbiB0aGlzIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgc2NvcGUgb2YgdGhpcyBzdGFjayBtYW5hZ2VtZW50PyBJcyBgZnJlZV90aHJlYWRfc3RhY2tgIGRlc2lnbmVkIHRvIGJlIGEgZ2xvYmFsIHJlc291cmNlIGZvciB0aGUgKmVudGlyZSogcHJvZ3JhbSwgYSBzaW5nbGUgaW5zdGFuY2Ugc2hhcmVkIGFjcm9zcyBhbGwgdGhyZWFkcz8gT3IgaXMgaXQgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBwZXJoYXBzIGEgdGhyZWFkIHBvb2wgbWFuYWdlciwgZW5zdXJpbmcgdGhhdCBzdGFjayBhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUgYXJlIG1hbmFnZWQgY29uc2lzdGVudGx5PyBUaGUgZ2xvYmFsIHNjZW5hcmlvIHdvdWxkIG1lYW4gd2UgaGF2ZSBhIHNpbmdsZSBwb2ludCBvZiBjb250ZW50aW9uLCBhbmQgdGhyZWFkIHNhZmV0eSBiZWNvbWVzIHBhcmFtb3VudCwgZGVtYW5kaW5nIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBNb2R1bGUtc2NvcGVkLCBob3dldmVyLCBjb3VsZCBiZSBhIG1vcmUgbWFuYWdlYWJsZSwgb3IgcGVyaGFwcyBtb3JlIHNwZWNpYWxpemVkIHNvbHV0aW9uLCBidXQgdGhlbiB3ZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBpbnRlci1tb2R1bGUgdGhyZWFkcyBnZXQgYWxsb2NhdGVkIHRoZWlyIHN0YWNrcy4KClRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbmN5IGFyZSBpbW1lZGlhdGVseSBldmlkZW50LiBJIG5lZWQgdG8ga25vdyBob3cgdGhlIHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIElmIGl0JiMzOTtzIGEgc2ltcGxlIGZyZWUgbGlzdCwgdGhlbiBhdG9taWMgb3BlcmF0aW9ucyBvbiBpdCBhcmUgZXNzZW50aWFsLiBJZiBpdCYjMzk7cyBtb3JlIGNvbXBsZXgsIGEgbG9jayBtaWdodCBiZSBuZWNlc3NhcnkuIEJ1dCBldmVuIHdpdGggYSBsb2NrLCB3ZSBhcmUgbm93IGxvb2tpbmcgYXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGR1ZSB0byBjb250ZW50aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBhIHRocmVhZC1sb2NhbCBzdG9yYWdlIChUTFMpIGFwcHJvYWNoIHdhc24mIzM5O3QgY29uc2lkZXJlZCwgdG8gYXZvaWQgc3VjaCBsb2NrIGNvbnRlbnRpb24sIGFzc3VtaW5nIHRoZSBzdGFja3MgYXJlIGJlaW5nIHVzZWQgYnkgYSBzdWJzZXQgb2YgdGhyZWFkcyBhbmQgbm90IGFsbCB0aHJlYWRzIHNpbXVsdGFuZW91c2x5LgoKQW5vdGhlciBhc3BlY3QgdGhhdCYjMzk7cyBqdW1waW5nIG91dCBhdCBtZSBpcyBsaWZldGltZSBtYW5hZ2VtZW50LiBTaW5jZSBpdCYjMzk7cyBzdGF0aWMsIGl0IGxpdmVzIHRocm91Z2hvdXQgdGhlIHByb2dyYW0mIzM5O3MgZXhlY3V0aW9uLCBvciBhdCBsZWFzdCB0aGUgbW9kdWxlJiMzOTtzIGxpZmV0aW1lLiBBcmUgd2UgbG9va2luZyBhdCBhIHN5c3RlbSB3aGVyZSBzdGFja3MgYXJlIHByZS1hbGxvY2F0ZWQgYXQgc3RhcnR1cCwgYW5kIHRoZW4gc2ltcGx5IHJlLXVzZWQgdGhyb3VnaG91dCB0aGUgcHJvZ3JhbSYjMzk7cyBsaWZlc3Bhbj8gT3IgaXMgaXQgZGVzaWduZWQgdG8gaGFuZGxlIGR5bmFtaWMgdGhyZWFkIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBncmFjZWZ1bGx5LCBldmVuIHVuZGVyIGhlYXZ5IGxvYWQ/IFRoZSBkZXNpZ24gY29uc2lkZXJhdGlvbnMgZm9yIHByZS1hbGxvY2F0aW9uIGFyZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIGR5bmFtaWMgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLiBJcyB0aGlzIGEgc3lzdGVtIHdoZXJlIHRoZXJlIGFyZSBzdGFjayBncm93dGggbGltaXRhdGlvbnMsIG9yIGlzIHRoaXMgYmVpbmcgdXNlZCB0byBncm93PwoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgaXRzIGluaXRpYWxpemF0aW9uLiBJcyB0aGUgc3RhY2sgcHJlLXBvcHVsYXRlZCB3aXRoIGEgc2V0IG9mIGluaXRpYWxseSBmcmVlIHN0YWNrIGZyYW1lcywgb3IgaXMgdGhlIGxpc3QgYnVpbHQgZHluYW1pY2FsbHk/IEhvdyBkb2VzIHRoZSBzeXN0ZW0gaGFuZGxlIHN0YWNrIGV4aGF1c3Rpb24sIGVzcGVjaWFsbHkgaW4gc3lzdGVtcyB3aXRoIGEgaGFyZCBsaW1pdCBvbiByZXNvdXJjZXM/IERvZXMgaXQgZmFpbCBncmFjZWZ1bGx5LCBvciBkb2VzIGl0IGxlYWQgdG8gYSBoYXJkIGNyYXNoPyBUaGUgbGFjayBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGFuIGltcG9ydGFudCBvbWlzc2lvbiBmb3IgYSBzdGF0aWMgdmFyaWFibGUuCgpTbywgaW4gZXNzZW5jZSwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGZyZWVfdGhyZWFkX3N0YWNrYCByYWlzZXMgYSB3aG9sZSBob3N0IG9mIHF1ZXN0aW9ucyBhYm91dCBjb25jdXJyZW5jeSwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3ksIGxpZmV0aW1lLCBlcnJvciBoYW5kbGluZywgYW5kIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gSXQgc3VnZ2VzdHMgYSBmb2N1c2VkIGFwcHJvYWNoIHRvIHN0YWNrIG1hbmFnZW1lbnQsIGJ1dCBJIG5lZWQgYSBsb3QgbW9yZSBjb250ZXh0IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBhbmQgZXZhbHVhdGUgaXRzIGVmZmVjdGl2ZW5lc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfdGhyZWFkX3N0YWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZm9yay5jPTM0NT1zdGF0aWMgaW50IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTM4My1cdCAqIFdlIGNhbiYjMzk7dCBjYWxsIGZpbmRfdm1fYXJlYSgpIGluIGludGVycnVwdCBjb250ZXh0LCBhbmRcbmtlcm5lbC9mb3JrLmM6Mzg0Olx0ICogZnJlZV90aHJlYWRfc3RhY2soKSBjYW4gYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0LFxua2VybmVsL2ZvcmsuYy0zODUtXHQgKiBzbyBjYWNoZSB0aGUgdm1fc3RydWN0LlxuLS1cbmtlcm5lbC9mb3JrLmMtMzkyLVxua2VybmVsL2ZvcmsuYzozOTM6c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvZm9yay5jLTM5NC17XG4tLVxua2VybmVsL2ZvcmsuYz00MjI9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXG4tLVxua2VybmVsL2ZvcmsuYy00MzMtXG5rZXJuZWwvZm9yay5jOjQzNDpzdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDM1LXtcbi0tXG5rZXJuZWwvZm9yay5jPTQ1Nj1zdGF0aWMgaW50IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTQ2NC1cbmtlcm5lbC9mb3JrLmM6NDY1OnN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL2ZvcmsuYy00NjYte1xuLS1cbmtlcm5lbC9mb3JrLmM9NTI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTUzMy1cbmtlcm5lbC9mb3JrLmM6NTM0Olx0ZnJlZV90aHJlYWRfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTM1LX1cbi0tXG5rZXJuZWwvZm9yay5jPTkyNj1zdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpkdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpvcmlnLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTEwMzItXHRleGl0X3Rhc2tfc3RhY2tfYWNjb3VudCh0c2spO1xua2VybmVsL2ZvcmsuYzoxMDMzOlx0ZnJlZV90aHJlYWRfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtMTAzNC1mcmVlX3RzazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwMgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGByZWxlYXNlX3Rhc2tfc3RhY2tgIFVzYWdlKioKCkFscmlnaHQsIHNvIGByZWxlYXNlX3Rhc2tfc3RhY2tgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiB0aGUga2VybmVsIGNvZGUuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoYXQgbGltaXRzIGl0cyBzY29wZSBjb25zaWRlcmFibHksIHR5cGljYWxseSBtZWFuaW5nIGl0JiMzOTtzIG9ubHkgbWVhbnQgdG8gYmUgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0IGFzIGl0cyBkZWZpbml0aW9uLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcmVtaW5kIG15c2VsZiB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGUgcHJvamVjdC4KCk5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgZHVwX3Rhc2tfc3RydWN0YC4gSG1tLCB0aGF0JiMzOTtzIGFsc28gc3RhdGljLiBPa2F5LCBnb29kLiBTaW5jZSBib3RoIGFyZSBzdGF0aWMsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHVzZSBpbiB0YW5kZW0sIGFuZCB0cmFjaW5nIGNhbGxzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udGV4dHMgdGhleSBvcGVyYXRlIGluLCBhbmQgaG93IHRoZXkgcmVsYXRlLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSB0YXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHJlbGVhc2VfdGFza19zdGFja2AuIFRpbWUgdG8gZmluZCBvdXQgZXhhY3RseSAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWxlYXNlX3Rhc2tfc3RhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZm9yay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmM9NTE1PXZvaWQgZXhpdF90YXNrX3N0YWNrX2FjY291bnQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy01MjgtXG5rZXJuZWwvZm9yay5jOjUyOTpzdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvZm9yay5jLTUzMC17XG4tLVxua2VybmVsL2ZvcmsuYz01Mzg9dm9pZCBwdXRfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTU0MC1cdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2dHNrLVx1MDAzZXN0YWNrX3JlZmNvdW50KSlcbmtlcm5lbC9mb3JrLmM6NTQxOlx0XHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTQyLX1cbi0tXG5rZXJuZWwvZm9yay5jPTU0NT12b2lkIGZyZWVfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTU1Ny1cdCAqL1xua2VybmVsL2ZvcmsuYzo1NTg6XHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTU5LSNlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBwdXRfdGFza19zdGFja2AgYW5kIGBmcmVlX3Rhc2tgIGFyZSBib3RoIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLiBgZnJlZV90YXNrYCBpcyBjYWxsZWQgZHVyaW5nIHRhc2sgZXhpdDsgdGhhdCYjMzk7cyBhICp2ZXJ5KiBob3QgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZS4gSG1tLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8KCkl0JiMzOTtzIGEgb25lLWxpbmUgZml4LCBiYXNpY2FsbHkganVzdCByZXNldHRpbmcgYSB0YWcgdG8gYXZvaWQgYSBmYWxzZSBwb3NpdGl2ZS4gTm8gbmV3LCBjb21wbGV4IGxvZ2ljIGJlaW5nIGludHJvZHVjZWQuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGp1c3QgYSByZXNldC4gT2theSwgbm93LCBsZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBza2lwcGluZyBmdXp6aW5nOiBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCB0ZWFyZG93biBjYWxsYmFja3MuLi4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBmaXQgYW55IG9mIHRob3NlLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbW9kaWZpZXMgYSBwb2ludGVyIHZhbHVlIGJlZm9yZSBgdmZyZWVgIQoKV2FpdCwgZG9lcyB0aGlzIGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTGV0IG1lIHRoaW5rLi4uIGBrYXNhbl9yZXNldF90YWdgICpkb2VzKiByZXNldCB0aGUgdGFnLiBBbmQgaW4gSFdfVEFHUywgU1dfVEFHUyBhbmQgR2VuZXJpYyBpdCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBwb2ludGVyIHZhbHVlLiBUaGlzIGlzLCBpbmRlZWQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgaGF2ZSB0byBzYXkgYFdvcnRoRnV6emluZz10cnVlYC4KCk5vdywgc2hvdWxkIEkgbGlzdCBhbnkgZm9jdXMgc3ltYm9scz8gSSBzaG91bGQgYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuIFdlbGwsIGBmcmVlX3Rhc2tgIGlzIGRlZmluaXRlbHkgaG90LiBBbmQgYHB1dF90YXNrX3N0YWNrYCBpcyBhbHNvIGEgaG90IHBhdGggYmVjYXVzZSBpdCBpcyBjYWxsZWQgb24gdGFzayBleGl0LiBgZHVwX3Rhc2tfc3RydWN0YCBpcyBhbm90aGVyIGhvdCBwYXRoLiBJZiBhbGwgdGhlIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZ1bmN0aW9ucyBhcmUgaG90IHBhdGhzLCB0aGVuIGxlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgaXMgd2hhdCBJIHNob3VsZCBkby4KCldoYXQgYWJvdXQgYENPTkZJR2Agb3B0aW9ucz8gSSYjMzk7bGwgbmVlZCBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBBbmQsIG9mIGNvdXJzZSwgYENPTkZJR19LQVNBTmAgYW5kIGVpdGhlciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgIG9yIGBDT05GSUdfS0FTQU5fSFdfVEFHU2AuIFRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gYWN0dWFsbHkgdGVzdCB0aGUgdGFnIHJlc2V0LCBldmVuIHRob3VnaCBga2FzYW5fcmVzZXRfdGFnYCBpcyBhbHdheXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5fcmVzZXRfdGFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva2FzYW4uaD01MTQ9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3JlY29yZF9hdXhfc3RhY2sodm9pZCAqcHRyKSB7fVxuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTktXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTIwOnN0YXRpYyBpbmxpbmUgdm9pZCAqa2FzYW5fcmVzZXRfdGFnKGNvbnN0IHZvaWQgKmFkZHIpXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTIxLXtcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MjI6XHRyZXR1cm4gKHZvaWQgKilhcmNoX2thc2FuX3Jlc2V0X3RhZyhhZGRyKTtcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MjMtfVxuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaD01MzI9Ym9vbCBrYXNhbl9yZXBvcnQoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IHNpemUsXG4tLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oLTUzNi1cbmluY2x1ZGUvbGludXgva2FzYW4uaDo1Mzc6c3RhdGljIGlubGluZSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRkcilcbmluY2x1ZGUvbGludXgva2FzYW4uaC01Mzgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBLZXJuZWwgU3RhY2sgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzdGFjayBhbGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgYW5kIEkgc2VlIGBDT05GSUdfVk1BUF9TVEFDS2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gb2YgaW50ZXJlc3QgaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIG1vc3Qgc2NlbmFyaW9zLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncz8mIzM0OyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHR5cGljYWwgc3RhdGUgb2YgdGhpcyBvcHRpb24gdG8gdW5kZXJzdGFuZCBpdHMgZ2VuZXJhbCBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBpZiBpdOKAmXMgZGlzYWJsZWQgb3IgaWYgSSBkZWNpZGUgdG8gdHdlYWsgaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVk1BUF9TVEFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL0tjb25maWc9MTUwMj1jb25maWcgSEFWRV9BUkNIX1ZNQVBfU1RBQ0tcbi0tXG5hcmNoL0tjb25maWctMTUyMS1cbmFyY2gvS2NvbmZpZzoxNTIyOmNvbmZpZyBWTUFQX1NUQUNLXG5hcmNoL0tjb25maWctMTUyMy1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDI0CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDcyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWTUFQX1NUQUNLYCBiZWluZyBgZGVmYXVsdCB5YCB3aGVuIGBIQVZFX0FSQ0hfVk1BUF9TVEFDS2AgaXMgc2V0IGNvbmZpcm1zIGl0JiMzOTtzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBwYXRoLgoKTm93LCB0aGUgY29yZSBxdWVzdGlvbjogaXMgdGhpcyBvbmUtbGluZSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBmaXggd29ydGggZnV6emluZz8gSXQmIzM5O3MgYSBzaW1wbGUgdGFnIHJlc2V0LiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyBvciBjb21wbGV4aXRpZXMuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIGNoYW5nZXMgbGlrZSBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZmxvdywgYnV0IHRoaXMgKmRvZXMqIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZmxvdzsgaXQgY2hhbmdlcyB0aGUgcG9pbnRlciBwYXNzZWQgdG8gYHZmcmVlYCwgcHJldmVudGluZyBhIEtBU0FOIHJlcG9ydC4gU28sIGluaXRpYWxseSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgaXQgaXMgZnVuY3Rpb25hbGx5IGNoYW5naW5nIGNvcmUga2VybmVsIGNvZGUuCgpIb3dldmVyLCBpdCAqaXMqIGp1c3QgYSBvbmUtbGluZXIgdGFnIHJlc2V0LiBXaWxsIGZ1enppbmcgdGhpcyBzcGVjaWZpY2FsbHkgZmluZCBhbnl0aGluZyBuZXc/IFByb2JhYmx5IG5vdC4gVGhlIHByb21wdCBlbXBoYXNpemVzICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCB0aGlzIGlzIGZ1bmN0aW9uYWwsIHNvIEkgd2FzIGNvcnJlY3QgaW4gdGhlIGZpcnN0IGFzc2Vzc21lbnQuIEkgY291bGQgc2F5IGl0IHRoaXMgcGF0Y2ggKnNob3VsZG4mIzM5O3QqIGJlIGZ1enplZCwgZ2l2ZW4gaXQgaXMgYSB2ZXJ5IHNpbXBsZSBmaXguCgpTbywgdGhlIGp1c3RpZmljYXRpb24gSSBjYW1lIHVwIHdpdGg6ICYjMzQ7VGhpcyBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUgb24gYSB0aHJlYWQgc3RhY2suIFdoaWxlIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGlzIGEgc2ltcGxlIG9uZS1saW5lIGZpeCBpbiBhIGNvcmUga2VybmVsIGhvdCBwYXRoICh0YXNrIGV4aXQvZnJlZSkuIEZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3MsIGJ1dCBpdCBpcyB0ZWNobmljYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7CgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlcjogc2hvdWxkIGl0IGJlIGBmYWxzZWAgc2luY2UgaXQmIzM5O3MgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3M/IFRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzYXkgJiMzNDtzaW1wbGUgYnVnIGZpeCA9IGZhbHNlLiYjMzQ7IFNvIEkmIzM5O20gc3RpY2tpbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93IGxldCYjMzk7cyByZXZpZXcgdGhlIGNvbmZpZ3MsIHRvIGJlIGNlcnRhaW4uIEkga25vdyB0aGF0IGBDT05GSUdfS0FTQU5gIGlzIGVzc2VudGlhbCB0byBhY3R1YWxseSBlbmFibGUgS0FTQU4sIHdoaWNoIGlzIHdoZXJlIHRoZSBmYWxzZSBwb3NpdGl2ZSBpcy4gSXQgd291bGQgYmUgdXNlbGVzcyBpZiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZC4gSSYjMzk7bSBnb2luZyB0byBhZGQgYEtBU0FOYCB0byB0aGUgY29uZmlncy4gSSBhbHJlYWR5IGtub3cgdGhhdCBgVk1BUF9TVEFDS2AgY2FuIGJlIGluY2x1ZGVkIGhlcmUuCgpUaGlua2luZyBhYm91dCBga2FzYW5fcmVzZXRfdGFnYCBhZ2FpbiwgSSByZWFsaXplIHRoYXQgaWYgS0FTQU4gaXMgZGlzYWJsZWQsIHRoZSBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyB0aGUgcG9pbnRlciB1bm1vZGlmaWVkLiBUbyBhY3R1YWxseSB0ZXN0ICp0aGUgbW9kaWZpZWQgY29kZSogKHRoZSB0YWcgcmVzZXQgZG9pbmcgc29tZXRoaW5nKSwgSSAqbXVzdCogaGF2ZSBLQVNBTiBlbmFibGVkLiBTbywgSSBuZWVkIHRvIGFkZCBgS0FTQU5gIGFuZCBgVk1BUF9TVEFDS2AgdG8gYEVuYWJsZUNvbmZpZ3NgLgoKRmluYWxseSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBGb2N1c1N5bWJvbHNgLiBgZnJlZV90YXNrYCBhbmQgYHB1dF90YXNrX3N0YWNrYCBhcmUgaG90IHBhdGhzLCBidXQgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgc3RhdGljLiBUaGVzZSBhcmUgYWxsIGdlbmVyaWMgcm91dGluZXMgcmVsYXRlZCB0byB0YXNrIGZyZWVpbmcuIEkgd29uJiMzOTt0IHNwZWNpZnkgYW55IHNwZWNpZmljIGBGb2N1c1N5bWJvbHNgLCBhcyB0aGUgcGF0Y2ggYWZmZWN0cyBnZW5lcmljIGhvdCBwYXRocy4KClRoZSByZWFzb25pbmcgSSYjMzk7bSBnb2luZyB0byBwcm92aWRlIGlzOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUoKSBvbiBhIHRocmVhZCBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuJiMzNDsKCk5vdyBJJiMzOTtsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZNQVBfU1RBQ0smIzM0OywKICAgICYjMzQ7S0FTQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWTUFQX1NUQUNLJiMzNDssCiAgICAmIzM0O0tBU0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjIyLjE2MTA3MTM3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjUyMDQ1NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZNQVBfU1RBQ0tcIixcbiAgICBcIktBU0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJ3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOToyMi4xNjEwNzg2MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjE0Mjc0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNmFkNWVjNGI4NTM2MTJkNWZkMDI3NWYxMmY1MzE0N2IyNDBiYmRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmNcXG5pbmRleCBmMGUyZTEzMWE5YTVhLi4yZmQ2ZmQyNWM5ZTc5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9mb3JrLmNcXG4rKysgYi9rZXJuZWwvZm9yay5jXFxuQEAgLTI4MCw3ICsyODAsMTkgQEAgc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxuIFxcdGlmICh0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodm1fc3RhY2stXFx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2ZnJlZSh2bV9hcmVhLVxcdTAwM2VhZGRyKTtcXG4rXFx0LypcXG4rXFx0ICogUmVzZXQgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSB2ZnJlZSgpOiBpbiBSQ1UgY2FsbGJhY2sgY29udGV4dFxcbitcXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxcbitcXHQgKiBtZW1vcnkgYXMgbGxpc3Qgc3RvcmFnZS4gIFJlc2V0dGluZyB0aGUgdGFnIHRvIEtBU0FOX1RBR19LRVJORUxcXG4rXFx0ICogKDB4RkYpIG1ha2VzIEtBU0FOIGJ5cGFzcyB0YWcgY2hlY2tzIGZvciB0aGF0IHdyaXRlIGluIGFsbCBtb2Rlc1xcbitcXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cXG4rXFx0ICpcXG4rXFx0ICoga2FzYW5fdW5wb2lzb25fdm1hbGxvYygpIGlzIG5vdCBuZWVkZWQgaGVyZTogaW4gSFdfVEFHUyBpdCBpcyBhXFxuK1xcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcXG4rXFx0ICogMHhGRiBwb2ludGVyIGFscmVhZHkgYnlwYXNzZXMgc2hhZG93IGNoZWNrcy4gIFRoaXMgbWlycm9ycyB0aGVcXG4rXFx0ICogaW50ZW50IG9mIHRoZSBmaXggaW4gc2NzX2ZyZWUoKSAoY29tbWl0IDUyOGE0YWI0NTMwMCkuXFxuK1xcdCAqL1xcbitcXHR2ZnJlZShrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cXHUwMDNlYWRkcikpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOToyMy42MjM0NDA5ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDE4OTY2NzMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWTUFQX1NUQUNLXCIsXG4gICAgXCJLQVNBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUoKSBvbiBhIHRocmVhZCBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZhZDVlYzRiODUzNjEyZDVmZDAyNzVmMTJmNTMxNDdiMjQwYmJkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuY1xuaW5kZXggZjBlMmUxMzFhOWE1YS4uMmZkNmZkMjVjOWU3OSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9mb3JrLmNcbisrKyBiL2tlcm5lbC9mb3JrLmNcbkBAIC0yODAsNyArMjgwLDE5IEBAIHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuIFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0dmZyZWUodm1fYXJlYS1cdTAwM2VhZGRyKTtcbitcdC8qXG4rXHQgKiBSZXNldCB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIHZmcmVlKCk6IGluIFJDVSBjYWxsYmFjayBjb250ZXh0XG4rXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxuK1x0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXG4rXHQgKiAoMHhGRikgbWFrZXMgS0FTQU4gYnlwYXNzIHRhZyBjaGVja3MgZm9yIHRoYXQgd3JpdGUgaW4gYWxsIG1vZGVzXG4rXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cbitcdCAqXG4rXHQgKiBrYXNhbl91bnBvaXNvbl92bWFsbG9jKCkgaXMgbm90IG5lZWRlZCBoZXJlOiBpbiBIV19UQUdTIGl0IGlzIGFcbitcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcbitcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXG4rXHQgKiBpbnRlbnQgb2YgdGhlIGZpeCBpbiBzY3NfZnJlZSgpIChjb21taXQgNTI4YTRhYjQ1MzAwKS5cbitcdCAqL1xuK1x0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXHUwMDNlYWRkcikpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6MjMuNjIzNDQyMTU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTczMTU3Mzk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBLQVNBTiBQYXRjaCBpbiBLZXJuZWwgRm9ya2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGtlcm5lbC9mb3JrLmNgLiBJdCdzIHR3ZWFraW5nIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZnJlZWluZyB0aHJlYWQgc3RhY2tzIHVuZGVyIFJDVS4gVGhlIGNoYW5nZSBpcyBzaW1wbGU6IGl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYHZtX2FyZWEtXHUwMDNlYWRkcmAgZGlyZWN0bHkgaW4gdGhlIGB2ZnJlZSgpYCBjYWxsIHRvIHVzaW5nIGBrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cdTAwM2VhZGRyKWAgaW5zdGVhZC4gRnVuY3Rpb25hbGx5LCBpdCdzIGFib3V0IHJlc2V0dGluZyBLQVNBTiB0YWdzIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4gSXQncyBhIHRpbnksIGxvY2FsaXplZCBjaGFuZ2UsIGZvY3VzZWQgb24gYHZmcmVlKClgJ3MgaW50ZXJhY3Rpb24gd2l0aCBLQVNBTiB0YWcgbWFuYWdlbWVudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlNob3VsZCBJIGV2ZW4gYm90aGVyIGZ1enppbmcgdGhpcz9cIiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsJ3MgZm9ya2luZyBtZWNoYW5pc21zLCBzbyBpdCdzIGNsZWFybHkgaW1wb3J0YW50LiBIb3dldmVyLCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBqdXN0IGEgcG9pbnRlciB0YWcgcmVzZXQuIEl0J3Mgbm90IGEgbWFqb3IgYXJjaGl0ZWN0dXJhbCBzaGlmdCBvciBuZXcgZnVuY3Rpb25hbGl0eS4gSXQncyBtb3JlIG9mIGEgc3VidGxlIGhhcmRlbmluZyBtZWFzdXJlLlxuXG5JJ20gbGVhbmluZyB0b3dhcmRzIHRoZSBcIml0J3MgcHJvYmFibHkgd29ydGggYSBxdWljayBsb29rXCIgY2FtcCwgc2luY2UgaXQncyBhIGNvcmUga2VybmVsIGZ1bmN0aW9uLiBJdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gdGVzdCBldmVuIHNtYWxsIGNoYW5nZXMuIExldCdzIHNlZSB3aGF0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN1cHBvc2VkIHRvIGRvLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSB0byBtYWtlIGEgYmV0dGVyIGRldGVybWluYXRpb24uIExldCBtZSBnbyBvdmVyIHRoZSBjb2RlIGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6MjkuMzU1MDIwMTYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDg1OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRocmVhZF9zdGFja19mcmVlX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZm9yay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9mb3JrLmM9MjQyPXN0YXRpYyBib29sIHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZShzdHJ1Y3Qgdm1fc3RydWN0ICp2bV9hcmVhKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0yNzQtXFxua2VybmVsL2ZvcmsuYzoyNzU6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxua2VybmVsL2ZvcmsuYy0yNzYte1xcbi0tXFxua2VybmVsL2ZvcmsuYz0yOTg9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtMzAyLVxcdHZtX3N0YWNrLVxcdTAwM2VzdGFja192bV9hcmVhID0gdHNrLVxcdTAwM2VzdGFja192bV9hcmVhO1xcbmtlcm5lbC9mb3JrLmM6MzAzOlxcdGNhbGxfcmN1KFxcdTAwMjZ2bV9zdGFjay1cXHUwMDNlcmN1LCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbmtlcm5lbC9mb3JrLmMtMzA0LX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00MDktXFxua2VybmVsL2ZvcmsuYzo0MTA6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxua2VybmVsL2ZvcmsuYy00MTEte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00MTU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNDE4LVxcbmtlcm5lbC9mb3JrLmM6NDE5OlxcdGNhbGxfcmN1KHJoLCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbmtlcm5lbC9mb3JrLmMtNDIwLX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQyPXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqdGhyZWFkX3N0YWNrX2NhY2hlO1xcbmtlcm5lbC9mb3JrLmMtNDQzLVxcbmtlcm5lbC9mb3JrLmM6NDQ0OnN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxcbmtlcm5lbC9mb3JrLmMtNDQ1LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQ5PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTQ1Mi1cXG5rZXJuZWwvZm9yay5jOjQ1MzpcXHRjYWxsX3JjdShyaCwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcXG5rZXJuZWwvZm9yay5jLTQ1NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjI5LjQzMzUxMDIxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjk2ODAwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBLZXJuZWwgQ2hhbmdlKipcblxuT2theSwgc28gdGhlcmUncyBhIG1vZGlmaWNhdGlvbiBpbiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIGZ1bmN0aW9uYWwsIGJ1dCBpdCdzIGFkZHJlc3NpbmcgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSB0aGF0IG9jY3VycyB3aGVuIGZyZWVpbmcgdGhyZWFkIHN0YWNrcy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmYWN0IHRoaXMgaXMgYSBrZXJuZWwgZnVuY3Rpb24sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBzcGVuZGluZyBzb21lIHRpbWUgb24gZnV6emluZyB0aGlzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGZpbmQgb3V0IHRoZSByZWxldmFudCBgQ09ORklHYCBvcHRpb25zIHRoYXQgY29udHJvbCB0aGlzIGZ1bmN0aW9uJ3MgY29tcGlsYXRpb24uIEJhc2VkIG9uIHRoZSBuYW1lLCBhbmQgbXkgZXhwZXJpZW5jZSwgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgbGlrZWx5IGNvbnRyb2xsZWQgYnkgYENPTkZJR19WTUFQX1NUQUNLYC4gTGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBrZXJuZWwvZm9yay5jYCwgd2hpY2ggaXMgdGhlIGxpa2VseSBzb3VyY2Ugb2YgY2FsbHMgZm9yIHN0YWNrIGZyZWVpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTozMy40NjMxOTM1NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTYwNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9mb3JrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcdFxcdFxcdFxcdGlmIChwYWdlX3RvX25pZChwYWdlKSAhPSBuaWQpXFxuIDI2MTpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI2MjpcXHRcXHRcXHRcXHR9XFxuIDI2MzpcXHRcXHRcXHR9XFxuIDI2NDpcXHRcXG4gMjY1OlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOUl9DQUNIRURfU1RBQ0tTOyBpKyspIHtcXG4gMjY2OlxcdFxcdFxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKnRtcCA9IE5VTEw7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdFxcdFxcdFxcdGlmICh0aGlzX2NwdV90cnlfY21weGNoZyhjYWNoZWRfc3RhY2tzW2ldLCBcXHUwMDI2dG1wLCB2bV9hcmVhKSlcXG4gMjY5OlxcdFxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiAyNzA6XFx0XFx0XFx0fVxcbiAyNzE6XFx0XFx0fVxcbiAyNzI6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyNzM6XFx0fVxcbiAyNzQ6XFx0XFxuIDI3NTpcXHRzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcXG4gMjc2OlxcdHtcXG4gMjc3OlxcdFxcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSBjb250YWluZXJfb2YocmgsIHN0cnVjdCB2bV9zdGFjaywgcmN1KTtcXG4gMjc4OlxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEgPSB2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYTtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYSkpXFxuIDI4MTpcXHRcXHRcXHRyZXR1cm47XFxuIDI4MjpcXHRcXG4gMjgzOlxcdFxcdC8qXFxuIDI4NDpcXHRcXHQgKiBSZXNldCB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIHZmcmVlKCk6IGluIFJDVSBjYWxsYmFjayBjb250ZXh0XFxuIDI4NTpcXHRcXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxcbiAyODY6XFx0XFx0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXFxuIDI4NzpcXHRcXHQgKiAoMHhGRikgbWFrZXMgS0FTQU4gYnlwYXNzIHRhZyBjaGVja3MgZm9yIHRoYXQgd3JpdGUgaW4gYWxsIG1vZGVzXFxuIDI4ODpcXHRcXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cXG4gMjg5OlxcdFxcdCAqXFxuIDI5MDpcXHRcXHQgKiBrYXNhbl91bnBvaXNvbl92bWFsbG9jKCkgaXMgbm90IG5lZWRlZCBoZXJlOiBpbiBIV19UQUdTIGl0IGlzIGFcXG4gMjkxOlxcdFxcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcXG4gMjkyOlxcdFxcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXFxuIDI5MzpcXHRcXHQgKiBpbnRlbnQgb2YgdGhlIGZpeCBpbiBzY3NfZnJlZSgpIChjb21taXQgNTI4YTRhYjQ1MzAwKS5cXG4gMjk0OlxcdFxcdCAqL1xcbiAyOTU6XFx0XFx0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXFx1MDAzZWFkZHIpKTtcXG4gMjk2OlxcdH1cXG4gMjk3OlxcdFxcbiAyOTg6XFx0c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gMjk5OlxcdHtcXG4gMzAwOlxcdFxcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSB0c2stXFx1MDAzZXN0YWNrO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHR2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYSA9IHRzay1cXHUwMDNlc3RhY2tfdm1fYXJlYTtcXG4gMzAzOlxcdFxcdGNhbGxfcmN1KFxcdTAwMjZ2bV9zdGFjay1cXHUwMDNlcmN1LCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbiAzMDQ6XFx0fVxcbiAzMDU6XFx0XFxuIDMwNjpcXHRzdGF0aWMgaW50IGZyZWVfdm1fc3RhY2tfY2FjaGUodW5zaWduZWQgaW50IGNwdSlcXG4gMzA3OlxcdHtcXG4gMzA4OlxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKipjYWNoZWRfdm1fc3RhY2tfYXJlYXMgPSBwZXJfY3B1X3B0cihjYWNoZWRfc3RhY2tzLCBjcHUpO1xcbiAzMDk6XFx0XFx0aW50IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjMzLjQ3MDE2MDA1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTM4OTQ1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB6ZXJvIGluIG9uIHRoaXMgYmxvY2sgb2YgY29kZSBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgYCNpZmRlZmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gV2hhdCdzIHRoZSBkZWZpbmVkIHN5bWJvbD8gV2hhdCBmZWF0dXJlcyBvciBwbGF0Zm9ybXMgaXMgdGhpcyBjb2RlIHRhcmdldGluZz8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBhc3NvY2lhdGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIElzIGl0IHBsYXRmb3JtLXNwZWNpZmljLCBmZWF0dXJlLWZsYWdnZWQsIG9yIGRlYnVnLXJlbGF0ZWQ/IEknbSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBjcm9zcy1yZWZlcmVuY2UgcmVsYXRlZCBpbmNsdWRlIGZpbGVzIG9yIG1ha2VmaWxlcywgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb24sIHBlcmhhcHMgYSBkaWZmZXJlbnQgYWxnb3JpdGhtIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLCBvciBtYXliZSBhIGZlYXR1cmUgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZCBhdCBidWlsZCB0aW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCBtYWludGFpbmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjM3LjI2NDA1ODIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzQxMDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2ZvcmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZm9yay5jPTE5MT1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtMTk1LVxcbmtlcm5lbC9mb3JrLmM6MTk2OiNpZmRlZiBDT05GSUdfVk1BUF9TVEFDS1xcbmtlcm5lbC9mb3JrLmMtMTk3LS8qXFxuLS1cXG5rZXJuZWwvZm9yay5jPTg2Nj12b2lkIF9faW5pdCBmb3JrX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9mb3JrLmMtODk5LVxcbmtlcm5lbC9mb3JrLmM6OTAwOiNpZmRlZiBDT05GSUdfVk1BUF9TVEFDS1xcbmtlcm5lbC9mb3JrLmMtOTAxLVxcdGNwdWhwX3NldHVwX3N0YXRlKENQVUhQX0JQX1BSRVBBUkVfRFlOLCBcXFwiZm9yazp2bV9zdGFja19jYWNoZVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjM3LjM0NzQ3NDE5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMjczMzQwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCBvZmYsIHRoaXMgcGF0Y2ggaXMgY29uZGl0aW9uYWwsIGRlcGVuZGluZyBvbiBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIHRoZSBtZW50aW9uIG9mIEtBU0FOIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGBDT05GSUdfS0FTQU5gLCBhbmQgcG90ZW50aWFsbHkgaXRzIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSB0YWcgdmFyaWFudHM6IGBDT05GSUdfS0FTQU5fSFdfVEFHU2Agb3IgYENPTkZJR19LQVNBTl9TV19UQUdTYC4gVGhpcyBmaXggaXMgc3BlY2lmaWNhbGx5IGFib3V0IGFkZHJlc3NpbmcgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBkdXJpbmcgdGhyZWFkIHN0YWNrIGZyZWVpbmcuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQncyBhIGNsZWFuLCBzdHJhaWdodGZvcndhcmQgZml4IOKAkyBhIHNpbmdsZSBsaW5lIGFkZGl0aW9uIG9mIGBrYXNhbl9yZXNldF90YWdgLiBGdW5jdGlvbmFsbHksIGl0J3MgcHJldmVudGluZyBhIGNyYXNoLCB3aGljaCBpcyBnb29kLiBIb3dldmVyLCB0aGUgc2ltcGxpY2l0eSBtYWtlcyBtZSBwYXVzZS4gU3RpbGwsIHByZXZlbnRpbmcgYSBjcmFzaCBpcyB2YWx1YWJsZS4gSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBcInllc1wiLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgIGZvciBub3csIGJ1dCB3aWxsIHJlYXNzZXNzIGlmIEkgaGF2ZSB0byBwcmlvcml0aXplLlxuXG5Ob3csIHRoZSBzeW1ib2wgYW5hbHlzaXMuIFRoZSBwYXRjaCBtZW50aW9ucyBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCwgd2hpY2ggaXMgc3RhdGljLiBUaGF0J3MgYSBsaXR0bGUgdHJpY2t5LiBTaW5jZSBpdCdzIFJDVSwgaXQncyBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGNhbGxlZC4gV2hhdCdzIHRoZSBwdWJsaWMgZnVuY3Rpb24gdGhhdCBpbml0aWF0ZXMgdGhlIGZyZWU/IElzIGl0IGBmcmVlX3RocmVhZF9zdGFja2AsIG9yIHBlcmhhcHMgYHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWVgLCBvciBtYXliZSBldmVuIGBmcmVlX3Rhc2tgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHByb2Nlc3MgdG8gc2VlIHdoZXJlIHRoZSBmdXp6aW5nIGhvb2tzIHdvdWxkIGJlIG1vc3QgZWZmZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjQzLjU3NDgxMjQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc1ODQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz0yNzU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTI5Ny1cXG5rZXJuZWwvZm9yay5jOjI5ODpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC9mb3JrLmMtMjk5LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0zOTUtXFx0aWYgKCF0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodHNrLVxcdTAwM2VzdGFja192bV9hcmVhKSlcXG5rZXJuZWwvZm9yay5jOjM5NjpcXHRcXHR0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHRzayk7XFxua2VybmVsL2ZvcmsuYy0zOTctXFxuLS1cXG5rZXJuZWwvZm9yay5jPTQxMD1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNDE0LVxcbmtlcm5lbC9mb3JrLmM6NDE1OnN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MTYte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00MzQ9c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MzUte1xcbmtlcm5lbC9mb3JrLmM6NDM2OlxcdHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUodHNrKTtcXG5rZXJuZWwvZm9yay5jLTQzNy1cXHR0c2stXFx1MDAzZXN0YWNrID0gTlVMTDtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQ0PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00NDgtXFxua2VybmVsL2ZvcmsuYzo0NDk6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ1MC17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTQ2NT1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ2Ni17XFxua2VybmVsL2ZvcmsuYzo0Njc6XFx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xcbmtlcm5lbC9mb3JrLmMtNDY4LVxcdHRzay1cXHUwMDNlc3RhY2sgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo0My42Mzc1NzU4ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NjUzNDY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZnJlZV90aHJlYWRfc3RhY2tgKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZyZWVfdGhyZWFkX3N0YWNrYCB2YXJpYWJsZSwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyAqYWxzbyogc3RhdGljIGlzIGRlZmluaXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gV2UncmUgdGFsa2luZyBhYm91dCBhIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZSBoZXJlLCBwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhyZWFkIHN0YWNrIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gVGhlIGBzdGF0aWNgIGtleXdvcmQsIGFzIHdlIGJvdGgga25vdywgaGFzIGNydWNpYWwgaW1wbGljYXRpb25zIGluIHRoaXMgY29udGV4dC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgc2NvcGUgb2YgdGhpcyBzdGFjayBtYW5hZ2VtZW50PyBJcyBgZnJlZV90aHJlYWRfc3RhY2tgIGRlc2lnbmVkIHRvIGJlIGEgZ2xvYmFsIHJlc291cmNlIGZvciB0aGUgKmVudGlyZSogcHJvZ3JhbSwgYSBzaW5nbGUgaW5zdGFuY2Ugc2hhcmVkIGFjcm9zcyBhbGwgdGhyZWFkcz8gT3IgaXMgaXQgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBwZXJoYXBzIGEgdGhyZWFkIHBvb2wgbWFuYWdlciwgZW5zdXJpbmcgdGhhdCBzdGFjayBhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUgYXJlIG1hbmFnZWQgY29uc2lzdGVudGx5PyBUaGUgZ2xvYmFsIHNjZW5hcmlvIHdvdWxkIG1lYW4gd2UgaGF2ZSBhIHNpbmdsZSBwb2ludCBvZiBjb250ZW50aW9uLCBhbmQgdGhyZWFkIHNhZmV0eSBiZWNvbWVzIHBhcmFtb3VudCwgZGVtYW5kaW5nIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBNb2R1bGUtc2NvcGVkLCBob3dldmVyLCBjb3VsZCBiZSBhIG1vcmUgbWFuYWdlYWJsZSwgb3IgcGVyaGFwcyBtb3JlIHNwZWNpYWxpemVkIHNvbHV0aW9uLCBidXQgdGhlbiB3ZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBpbnRlci1tb2R1bGUgdGhyZWFkcyBnZXQgYWxsb2NhdGVkIHRoZWlyIHN0YWNrcy5cblxuVGhlIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYXJlIGltbWVkaWF0ZWx5IGV2aWRlbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgdmFyaWFibGUgaXMgYmVpbmcgdXNlZC4gSWYgaXQncyBhIHNpbXBsZSBmcmVlIGxpc3QsIHRoZW4gYXRvbWljIG9wZXJhdGlvbnMgb24gaXQgYXJlIGVzc2VudGlhbC4gSWYgaXQncyBtb3JlIGNvbXBsZXgsIGEgbG9jayBtaWdodCBiZSBuZWNlc3NhcnkuIEJ1dCBldmVuIHdpdGggYSBsb2NrLCB3ZSBhcmUgbm93IGxvb2tpbmcgYXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGR1ZSB0byBjb250ZW50aW9uLiBJJ20gd29uZGVyaW5nIGlmIGEgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgKFRMUykgYXBwcm9hY2ggd2Fzbid0IGNvbnNpZGVyZWQsIHRvIGF2b2lkIHN1Y2ggbG9jayBjb250ZW50aW9uLCBhc3N1bWluZyB0aGUgc3RhY2tzIGFyZSBiZWluZyB1c2VkIGJ5IGEgc3Vic2V0IG9mIHRocmVhZHMgYW5kIG5vdCBhbGwgdGhyZWFkcyBzaW11bHRhbmVvdXNseS5cblxuQW5vdGhlciBhc3BlY3QgdGhhdCdzIGp1bXBpbmcgb3V0IGF0IG1lIGlzIGxpZmV0aW1lIG1hbmFnZW1lbnQuIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCBsaXZlcyB0aHJvdWdob3V0IHRoZSBwcm9ncmFtJ3MgZXhlY3V0aW9uLCBvciBhdCBsZWFzdCB0aGUgbW9kdWxlJ3MgbGlmZXRpbWUuIEFyZSB3ZSBsb29raW5nIGF0IGEgc3lzdGVtIHdoZXJlIHN0YWNrcyBhcmUgcHJlLWFsbG9jYXRlZCBhdCBzdGFydHVwLCBhbmQgdGhlbiBzaW1wbHkgcmUtdXNlZCB0aHJvdWdob3V0IHRoZSBwcm9ncmFtJ3MgbGlmZXNwYW4/IE9yIGlzIGl0IGRlc2lnbmVkIHRvIGhhbmRsZSBkeW5hbWljIHRocmVhZCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gZ3JhY2VmdWxseSwgZXZlbiB1bmRlciBoZWF2eSBsb2FkPyBUaGUgZGVzaWduIGNvbnNpZGVyYXRpb25zIGZvciBwcmUtYWxsb2NhdGlvbiBhcmUgdmVyeSBkaWZmZXJlbnQgZnJvbSBkeW5hbWljIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gSXMgdGhpcyBhIHN5c3RlbSB3aGVyZSB0aGVyZSBhcmUgc3RhY2sgZ3Jvd3RoIGxpbWl0YXRpb25zLCBvciBpcyB0aGlzIGJlaW5nIHVzZWQgdG8gZ3Jvdz9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBpdHMgaW5pdGlhbGl6YXRpb24uIElzIHRoZSBzdGFjayBwcmUtcG9wdWxhdGVkIHdpdGggYSBzZXQgb2YgaW5pdGlhbGx5IGZyZWUgc3RhY2sgZnJhbWVzLCBvciBpcyB0aGUgbGlzdCBidWlsdCBkeW5hbWljYWxseT8gSG93IGRvZXMgdGhlIHN5c3RlbSBoYW5kbGUgc3RhY2sgZXhoYXVzdGlvbiwgZXNwZWNpYWxseSBpbiBzeXN0ZW1zIHdpdGggYSBoYXJkIGxpbWl0IG9uIHJlc291cmNlcz8gRG9lcyBpdCBmYWlsIGdyYWNlZnVsbHksIG9yIGRvZXMgaXQgbGVhZCB0byBhIGhhcmQgY3Jhc2g/IFRoZSBsYWNrIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYW4gaW1wb3J0YW50IG9taXNzaW9uIGZvciBhIHN0YXRpYyB2YXJpYWJsZS5cblxuU28sIGluIGVzc2VuY2UsIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBmcmVlX3RocmVhZF9zdGFja2AgcmFpc2VzIGEgd2hvbGUgaG9zdCBvZiBxdWVzdGlvbnMgYWJvdXQgY29uY3VycmVuY3ksIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LCBsaWZldGltZSwgZXJyb3IgaGFuZGxpbmcsIGFuZCBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uIEl0IHN1Z2dlc3RzIGEgZm9jdXNlZCBhcHByb2FjaCB0byBzdGFjayBtYW5hZ2VtZW50LCBidXQgSSBuZWVkIGEgbG90IG1vcmUgY29udGV4dCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYW5kIGV2YWx1YXRlIGl0cyBlZmZlY3RpdmVuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6NDkuNzI0MTEzMjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTk3NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZyZWVfdGhyZWFkX3N0YWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz0zNDU9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTM4My1cXHQgKiBXZSBjYW4ndCBjYWxsIGZpbmRfdm1fYXJlYSgpIGluIGludGVycnVwdCBjb250ZXh0LCBhbmRcXG5rZXJuZWwvZm9yay5jOjM4NDpcXHQgKiBmcmVlX3RocmVhZF9zdGFjaygpIGNhbiBiZSBjYWxsZWQgaW4gaW50ZXJydXB0IGNvbnRleHQsXFxua2VybmVsL2ZvcmsuYy0zODUtXFx0ICogc28gY2FjaGUgdGhlIHZtX3N0cnVjdC5cXG4tLVxcbmtlcm5lbC9mb3JrLmMtMzkyLVxcbmtlcm5lbC9mb3JrLmM6MzkzOnN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC9mb3JrLmMtMzk0LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDIyPXN0YXRpYyBpbnQgYWxsb2NfdGhyZWFkX3N0YWNrX25vZGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBub2RlKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00MzMtXFxua2VybmVsL2ZvcmsuYzo0MzQ6c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MzUte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00NTY9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTQ2NC1cXG5rZXJuZWwvZm9yay5jOjQ2NTpzdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ2Ni17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTUyOT1zdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTUzMy1cXG5rZXJuZWwvZm9yay5jOjUzNDpcXHRmcmVlX3RocmVhZF9zdGFjayh0c2spO1xcbmtlcm5lbC9mb3JrLmMtNTM1LX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmR1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9yaWcsIGludCBub2RlKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0xMDMyLVxcdGV4aXRfdGFza19zdGFja19hY2NvdW50KHRzayk7XFxua2VybmVsL2ZvcmsuYzoxMDMzOlxcdGZyZWVfdGhyZWFkX3N0YWNrKHRzayk7XFxua2VybmVsL2ZvcmsuYy0xMDM0LWZyZWVfdHNrOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo0OS44MTU3MTU3MDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MDk1MjIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgcmVsZWFzZV90YXNrX3N0YWNrYCBVc2FnZSoqXG5cbkFscmlnaHQsIHNvIGByZWxlYXNlX3Rhc2tfc3RhY2tgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiB0aGUga2VybmVsIGNvZGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgdGhhdCBsaW1pdHMgaXRzIHNjb3BlIGNvbnNpZGVyYWJseSwgdHlwaWNhbGx5IG1lYW5pbmcgaXQncyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCB3aXRoaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdCBhcyBpdHMgZGVmaW5pdGlvbi4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgYW5kIHJlbWluZCBteXNlbGYgd2hlcmUgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgcHJvamVjdC5cblxuTm93LCBsZXQncyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYGR1cF90YXNrX3N0cnVjdGAuIEhtbSwgdGhhdCdzIGFsc28gc3RhdGljLiBPa2F5LCBnb29kLiBTaW5jZSBib3RoIGFyZSBzdGF0aWMsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHVzZSBpbiB0YW5kZW0sIGFuZCB0cmFjaW5nIGNhbGxzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udGV4dHMgdGhleSBvcGVyYXRlIGluLCBhbmQgaG93IHRoZXkgcmVsYXRlLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSB0YXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgd2l0aCBgcmVsZWFzZV90YXNrX3N0YWNrYC4gVGltZSB0byBmaW5kIG91dCBleGFjdGx5ICp3aG8qIGlzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjUzLjk1NjY3MTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgwMDAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVsZWFzZV90YXNrX3N0YWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz01MTU9dm9pZCBleGl0X3Rhc2tfc3RhY2tfYWNjb3VudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNTI4LVxcbmtlcm5lbC9mb3JrLmM6NTI5OnN0YXRpYyB2b2lkIHJlbGVhc2VfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTUzMC17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTUzOD12b2lkIHB1dF90YXNrX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy01NDAtXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2dHNrLVxcdTAwM2VzdGFja19yZWZjb3VudCkpXFxua2VybmVsL2ZvcmsuYzo1NDE6XFx0XFx0cmVsZWFzZV90YXNrX3N0YWNrKHRzayk7XFxua2VybmVsL2ZvcmsuYy01NDItfVxcbi0tXFxua2VybmVsL2ZvcmsuYz01NDU9dm9pZCBmcmVlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTU1Ny1cXHQgKi9cXG5rZXJuZWwvZm9yay5jOjU1ODpcXHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcXG5rZXJuZWwvZm9yay5jLTU1OS0jZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo1NC41MzQ2NzU2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY5OTMwNDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBwdXRfdGFza19zdGFja2AgYW5kIGBmcmVlX3Rhc2tgIGFyZSBib3RoIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLiBgZnJlZV90YXNrYCBpcyBjYWxsZWQgZHVyaW5nIHRhc2sgZXhpdDsgdGhhdCdzIGEgKnZlcnkqIGhvdCBwYXRoLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlLiBIbW0sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1xuXG5JdCdzIGEgb25lLWxpbmUgZml4LCBiYXNpY2FsbHkganVzdCByZXNldHRpbmcgYSB0YWcgdG8gYXZvaWQgYSBmYWxzZSBwb3NpdGl2ZS4gTm8gbmV3LCBjb21wbGV4IGxvZ2ljIGJlaW5nIGludHJvZHVjZWQuIEl0J3MgZXNzZW50aWFsbHkganVzdCBhIHJlc2V0LiBPa2F5LCBub3csIGxldCdzIGdvIHRocm91Z2ggdGhlIHByb21wdCdzIGNyaXRlcmlhIGZvciBza2lwcGluZyBmdXp6aW5nOiBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCB0ZWFyZG93biBjYWxsYmFja3MuLi4gVGhpcyBwYXRjaCBkb2Vzbid0IGZpdCBhbnkgb2YgdGhvc2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IG1vZGlmaWVzIGEgcG9pbnRlciB2YWx1ZSBiZWZvcmUgYHZmcmVlYCFcblxuV2FpdCwgZG9lcyB0aGlzIGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTGV0IG1lIHRoaW5rLi4uIGBrYXNhbl9yZXNldF90YWdgICpkb2VzKiByZXNldCB0aGUgdGFnLiBBbmQgaW4gSFdfVEFHUywgU1dfVEFHUyBhbmQgR2VuZXJpYyBpdCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBwb2ludGVyIHZhbHVlLiBUaGlzIGlzLCBpbmRlZWQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgaGF2ZSB0byBzYXkgYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCBzaG91bGQgSSBsaXN0IGFueSBmb2N1cyBzeW1ib2xzPyBJIHNob3VsZCBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gV2VsbCwgYGZyZWVfdGFza2AgaXMgZGVmaW5pdGVseSBob3QuIEFuZCBgcHV0X3Rhc2tfc3RhY2tgIGlzIGFsc28gYSBob3QgcGF0aCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBvbiB0YXNrIGV4aXQuIGBkdXBfdGFza19zdHJ1Y3RgIGlzIGFub3RoZXIgaG90IHBhdGguIElmIGFsbCB0aGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGFyZSBob3QgcGF0aHMsIHRoZW4gbGVhdmluZyBgRm9jdXNTeW1ib2xzYCBlbXB0eSBpcyB3aGF0IEkgc2hvdWxkIGRvLlxuXG5XaGF0IGFib3V0IGBDT05GSUdgIG9wdGlvbnM/IEknbGwgbmVlZCBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBBbmQsIG9mIGNvdXJzZSwgYENPTkZJR19LQVNBTmAgYW5kIGVpdGhlciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgIG9yIGBDT05GSUdfS0FTQU5fSFdfVEFHU2AuIFRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gYWN0dWFsbHkgdGVzdCB0aGUgdGFnIHJlc2V0LCBldmVuIHRob3VnaCBga2FzYW5fcmVzZXRfdGFnYCBpcyBhbHdheXMgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoyMDowNS4yMzM5ODI1ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzY5MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImthc2FuX3Jlc2V0X3RhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2thc2FuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTUxND1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fcmVjb3JkX2F1eF9zdGFjayh2b2lkICpwdHIpIHt9XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE5LVxcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MjA6c3RhdGljIGlubGluZSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRkcilcXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTIxLXtcXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTIyOlxcdHJldHVybiAodm9pZCAqKWFyY2hfa2FzYW5fcmVzZXRfdGFnKGFkZHIpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MjMtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUzMj1ib29sIGthc2FuX3JlcG9ydChjb25zdCB2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MzYtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUzNzpzdGF0aWMgaW5saW5lIHZvaWQgKmthc2FuX3Jlc2V0X3RhZyhjb25zdCB2b2lkICphZGRyKVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01Mzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoyMDowNS4zMzI3NTYxMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjAzOTA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIEtlcm5lbCBTdGFjayBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBzdGFjayBhbGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgYW5kIEkgc2VlIGBDT05GSUdfVk1BUF9TVEFDS2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gb2YgaW50ZXJlc3QgaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBcIklzIHRoaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIG1vc3Qgc2NlbmFyaW9zLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncz9cIiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHR5cGljYWwgc3RhdGUgb2YgdGhpcyBvcHRpb24gdG8gdW5kZXJzdGFuZCBpdHMgZ2VuZXJhbCBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBpZiBpdOKAmXMgZGlzYWJsZWQgb3IgaWYgSSBkZWNpZGUgdG8gdHdlYWsgaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MjA6MDkuMTc0Nzk4MTQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU5OTY3MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWTUFQX1NUQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL0tjb25maWc9MTUwMj1jb25maWcgSEFWRV9BUkNIX1ZNQVBfU1RBQ0tcXG4tLVxcbmFyY2gvS2NvbmZpZy0xNTIxLVxcbmFyY2gvS2NvbmZpZzoxNTIyOmNvbmZpZyBWTUFQX1NUQUNLXFxuYXJjaC9LY29uZmlnLTE1MjMtXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjIwOjExLjUzNDc2OTkxN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjEyMzg2MjA5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWTUFQX1NUQUNLYCBiZWluZyBgZGVmYXVsdCB5YCB3aGVuIGBIQVZFX0FSQ0hfVk1BUF9TVEFDS2AgaXMgc2V0IGNvbmZpcm1zIGl0J3MgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHBhdGguXG5cbk5vdywgdGhlIGNvcmUgcXVlc3Rpb246IGlzIHRoaXMgb25lLWxpbmUgS0FTQU4gZmFsc2UgcG9zaXRpdmUgZml4IHdvcnRoIGZ1enppbmc/IEl0J3MgYSBzaW1wbGUgdGFnIHJlc2V0LiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGxvZ2ljIG9yIGNvbXBsZXhpdGllcy4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY2hhbmdlcyBsaWtlIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGZsb3csIGJ1dCB0aGlzICpkb2VzKiBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGZsb3c7IGl0IGNoYW5nZXMgdGhlIHBvaW50ZXIgcGFzc2VkIHRvIGB2ZnJlZWAsIHByZXZlbnRpbmcgYSBLQVNBTiByZXBvcnQuIFNvLCBpbml0aWFsbHksIEknbSBsZWFuaW5nIHRvd2FyZCBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgaXQgaXMgZnVuY3Rpb25hbGx5IGNoYW5naW5nIGNvcmUga2VybmVsIGNvZGUuXG5cbkhvd2V2ZXIsIGl0ICppcyoganVzdCBhIG9uZS1saW5lciB0YWcgcmVzZXQuIFdpbGwgZnV6emluZyB0aGlzIHNwZWNpZmljYWxseSBmaW5kIGFueXRoaW5nIG5ldz8gUHJvYmFibHkgbm90LiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIHRoaXMgaXMgZnVuY3Rpb25hbCwgc28gSSB3YXMgY29ycmVjdCBpbiB0aGUgZmlyc3QgYXNzZXNzbWVudC4gSSBjb3VsZCBzYXkgaXQgdGhpcyBwYXRjaCAqc2hvdWxkbid0KiBiZSBmdXp6ZWQsIGdpdmVuIGl0IGlzIGEgdmVyeSBzaW1wbGUgZml4LlxuXG5TbywgdGhlIGp1c3RpZmljYXRpb24gSSBjYW1lIHVwIHdpdGg6IFwiVGhpcyBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUgb24gYSB0aHJlYWQgc3RhY2suIFdoaWxlIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGlzIGEgc2ltcGxlIG9uZS1saW5lIGZpeCBpbiBhIGNvcmUga2VybmVsIGhvdCBwYXRoICh0YXNrIGV4aXQvZnJlZSkuIEZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3MsIGJ1dCBpdCBpcyB0ZWNobmljYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXI6IHNob3VsZCBpdCBiZSBgZmFsc2VgIHNpbmNlIGl0J3MgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3M/IFRoZSBwcm9tcHQgZG9lc24ndCBleHBsaWNpdGx5IHNheSBcInNpbXBsZSBidWcgZml4ID0gZmFsc2UuXCIgU28gSSdtIHN0aWNraW5nIHdpdGggYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93IGxldCdzIHJldmlldyB0aGUgY29uZmlncywgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoYXQgYENPTkZJR19LQVNBTmAgaXMgZXNzZW50aWFsIHRvIGFjdHVhbGx5IGVuYWJsZSBLQVNBTiwgd2hpY2ggaXMgd2hlcmUgdGhlIGZhbHNlIHBvc2l0aXZlIGlzLiBJdCB3b3VsZCBiZSB1c2VsZXNzIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gYWRkIGBLQVNBTmAgdG8gdGhlIGNvbmZpZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYFZNQVBfU1RBQ0tgIGNhbiBiZSBpbmNsdWRlZCBoZXJlLlxuXG5UaGlua2luZyBhYm91dCBga2FzYW5fcmVzZXRfdGFnYCBhZ2FpbiwgSSByZWFsaXplIHRoYXQgaWYgS0FTQU4gaXMgZGlzYWJsZWQsIHRoZSBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyB0aGUgcG9pbnRlciB1bm1vZGlmaWVkLiBUbyBhY3R1YWxseSB0ZXN0ICp0aGUgbW9kaWZpZWQgY29kZSogKHRoZSB0YWcgcmVzZXQgZG9pbmcgc29tZXRoaW5nKSwgSSAqbXVzdCogaGF2ZSBLQVNBTiBlbmFibGVkLiBTbywgSSBuZWVkIHRvIGFkZCBgS0FTQU5gIGFuZCBgVk1BUF9TVEFDS2AgdG8gYEVuYWJsZUNvbmZpZ3NgLlxuXG5GaW5hbGx5LCBsZXQncyBsb29rIGF0IHRoZSBgRm9jdXNTeW1ib2xzYC4gYGZyZWVfdGFza2AgYW5kIGBwdXRfdGFza19zdGFja2AgYXJlIGhvdCBwYXRocywgYnV0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN0YXRpYy4gVGhlc2UgYXJlIGFsbCBnZW5lcmljIHJvdXRpbmVzIHJlbGF0ZWQgdG8gdGFzayBmcmVlaW5nLiBJIHdvbid0IHNwZWNpZnkgYW55IHNwZWNpZmljIGBGb2N1c1N5bWJvbHNgLCBhcyB0aGUgcGF0Y2ggYWZmZWN0cyBnZW5lcmljIGhvdCBwYXRocy5cblxuVGhlIHJlYXNvbmluZyBJJ20gZ29pbmcgdG8gcHJvdmlkZSBpczogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCJcblxuTm93IEknbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MjQsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjIwOjMzLjY1ODYzNTY1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDQ2OTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVk1BUF9TVEFDS1wiLFxuICAgIFwiS0FTQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVk1BUF9TVEFDS1wiLFxuICAgIFwiS0FTQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowf69n2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 13:34:12 +0000 UTC FinishedAt: 2026-08-06 14:20:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VMAP_STACK", "KASAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VMAP_STACK", "KASAN" ], "series_id": "2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZNQVBfU1RBQ0smIzM0OywKICAgICYjMzQ7S0FTQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDZhZDVlYzRiODUzNjEyZDVmZDAyNzVmMTJmNTMxNDdiMjQwYmJkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmNcbmluZGV4IGYwZTJlMTMxYTlhNWEuLjJmZDZmZDI1YzllNzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZm9yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZm9yay5jXG5AQCAtMjgwLDcgJiM0MzsyODAsMTkgQEAgc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG4gXHRpZiAodHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHZtX3N0YWNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR2ZnJlZSh2bV9hcmVhLVx1MDAzZWFkZHIpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUmVzZXQgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSB2ZnJlZSgpOiBpbiBSQ1UgY2FsbGJhY2sgY29udGV4dFxuJiM0MztcdCAqIHZmcmVlKCkgcm91dGVzIHRvIHZmcmVlX2F0b21pYygpLCB3aGljaCB3cml0ZXMgdG8gdGhlIGZyZWVkXG4mIzQzO1x0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXG4mIzQzO1x0ICogKDB4RkYpIG1ha2VzIEtBU0FOIGJ5cGFzcyB0YWcgY2hlY2tzIGZvciB0aGF0IHdyaXRlIGluIGFsbCBtb2Rlc1xuJiM0MztcdCAqIChIV19UQUdTLCBTV19UQUdTLCBHZW5lcmljKSwgYXZvaWRpbmcgYSBmYWxzZSB0YWctbWlzbWF0Y2ggcmVwb3J0LlxuJiM0MztcdCAqXG4mIzQzO1x0ICoga2FzYW5fdW5wb2lzb25fdm1hbGxvYygpIGlzIG5vdCBuZWVkZWQgaGVyZTogaW4gSFdfVEFHUyBpdCBpcyBhXG4mIzQzO1x0ICogbm8tb3Agd2l0aG91dCBLQVNBTl9WTUFMTE9DX1ZNX0FMTE9DLCBhbmQgaW4gU1dfVEFHUy9HZW5lcmljIHRoZVxuJiM0MztcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXG4mIzQzO1x0ICogaW50ZW50IG9mIHRoZSBmaXggaW4gc2NzX2ZyZWUoKSAoY29tbWl0IDUyOGE0YWI0NTMwMCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXHUwMDNlYWRkcikpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWTUFQX1NUQUNLJiMzNDssCiAgICAmIzM0O0tBU0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ2YWQ1ZWM0Yjg1MzYxMmQ1ZmQwMjc1ZjEyZjUzMTQ3YjI0MGJiZGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDE0OjE5OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmMKaW5kZXggZjBlMmUxMzFhOWE1YS4uMmZkNmZkMjVjOWU3OSAxMDA2NDQKLS0tIGEva2VybmVsL2ZvcmsuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZm9yay5jCkBAIC0yODAsNyAmIzQzOzI4MCwxOSBAQCBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaCkKIAlpZiAodHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHZtX3N0YWNrLSZndDtzdGFja192bV9hcmVhKSkKIAkJcmV0dXJuOwogCi0JdmZyZWUodm1fYXJlYS0mZ3Q7YWRkcik7CiYjNDM7CS8qCiYjNDM7CSAqIFJlc2V0IHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgdmZyZWUoKTogaW4gUkNVIGNhbGxiYWNrIGNvbnRleHQKJiM0MzsJICogdmZyZWUoKSByb3V0ZXMgdG8gdmZyZWVfYXRvbWljKCksIHdoaWNoIHdyaXRlcyB0byB0aGUgZnJlZWQKJiM0MzsJICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMCiYjNDM7CSAqICgweEZGKSBtYWtlcyBLQVNBTiBieXBhc3MgdGFnIGNoZWNrcyBmb3IgdGhhdCB3cml0ZSBpbiBhbGwgbW9kZXMKJiM0MzsJICogKEhXX1RBR1MsIFNXX1RBR1MsIEdlbmVyaWMpLCBhdm9pZGluZyBhIGZhbHNlIHRhZy1taXNtYXRjaCByZXBvcnQuCiYjNDM7CSAqCiYjNDM7CSAqIGthc2FuX3VucG9pc29uX3ZtYWxsb2MoKSBpcyBub3QgbmVlZGVkIGhlcmU6IGluIEhXX1RBR1MgaXQgaXMgYQomIzQzOwkgKiBuby1vcCB3aXRob3V0IEtBU0FOX1ZNQUxMT0NfVk1fQUxMT0MsIGFuZCBpbiBTV19UQUdTL0dlbmVyaWMgdGhlCiYjNDM7CSAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlCiYjNDM7CSAqIGludGVudCBvZiB0aGUgZml4IGluIHNjc19mcmVlKCkgKGNvbW1pdCA1MjhhNGFiNDUzMDApLgomIzQzOwkgKi8KJiM0MzsJdmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtJmd0O2FkZHIpKTsKIH0KIAogc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI1NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNaW5vciBLQVNBTiBQYXRjaCBpbiBLZXJuZWwgRm9ya2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBga2VybmVsL2ZvcmsuY2AuIEl0JiMzOTtzIHR3ZWFraW5nIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZnJlZWluZyB0aHJlYWQgc3RhY2tzIHVuZGVyIFJDVS4gVGhlIGNoYW5nZSBpcyBzaW1wbGU6IGl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYHZtX2FyZWEtJmd0O2FkZHJgIGRpcmVjdGx5IGluIHRoZSBgdmZyZWUoKWAgY2FsbCB0byB1c2luZyBga2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtJmd0O2FkZHIpYCBpbnN0ZWFkLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGFib3V0IHJlc2V0dGluZyBLQVNBTiB0YWdzIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4gSXQmIzM5O3MgYSB0aW55LCBsb2NhbGl6ZWQgY2hhbmdlLCBmb2N1c2VkIG9uIGB2ZnJlZSgpYCYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIEtBU0FOIHRhZyBtYW5hZ2VtZW50LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1Nob3VsZCBJIGV2ZW4gYm90aGVyIGZ1enppbmcgdGhpcz8mIzM0OyBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGZvcmtpbmcgbWVjaGFuaXNtcywgc28gaXQmIzM5O3MgY2xlYXJseSBpbXBvcnRhbnQuIEhvd2V2ZXIsIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGp1c3QgYSBwb2ludGVyIHRhZyByZXNldC4gSXQmIzM5O3Mgbm90IGEgbWFqb3IgYXJjaGl0ZWN0dXJhbCBzaGlmdCBvciBuZXcgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgbW9yZSBvZiBhIHN1YnRsZSBoYXJkZW5pbmcgbWVhc3VyZS4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzIHRoZSAmIzM0O2l0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGEgcXVpY2sgbG9vayYjMzQ7IGNhbXAsIHNpbmNlIGl0JiMzOTtzIGEgY29yZSBrZXJuZWwgZnVuY3Rpb24uIEl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byB0ZXN0IGV2ZW4gc21hbGwgY2hhbmdlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN1cHBvc2VkIHRvIGRvLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSB0byBtYWtlIGEgYmV0dGVyIGRldGVybWluYXRpb24uIExldCBtZSBnbyBvdmVyIHRoZSBjb2RlIGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RocmVhZF9zdGFja19mcmVlX3JjdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0yNDI9c3RhdGljIGJvb2wgdHJ5X3JlbGVhc2VfdGhyZWFkX3N0YWNrX3RvX2NhY2hlKHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEpXG4tLVxua2VybmVsL2ZvcmsuYy0yNzQtXG5rZXJuZWwvZm9yay5jOjI3NTpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcbmtlcm5lbC9mb3JrLmMtMjc2LXtcbi0tXG5rZXJuZWwvZm9yay5jPTI5OD1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtMzAyLVx0dm1fc3RhY2stXHUwMDNlc3RhY2tfdm1fYXJlYSA9IHRzay1cdTAwM2VzdGFja192bV9hcmVhO1xua2VybmVsL2ZvcmsuYzozMDM6XHRjYWxsX3JjdShcdTAwMjZ2bV9zdGFjay1cdTAwM2VyY3UsIHRocmVhZF9zdGFja19mcmVlX3JjdSk7XG5rZXJuZWwvZm9yay5jLTMwNC19XG4tLVxua2VybmVsL2ZvcmsuYz0zOTM9c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy00MDktXG5rZXJuZWwvZm9yay5jOjQxMDpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcbmtlcm5lbC9mb3JrLmMtNDExLXtcbi0tXG5rZXJuZWwvZm9yay5jPTQxNT1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDE4LVxua2VybmVsL2ZvcmsuYzo0MTk6XHRjYWxsX3JjdShyaCwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcbmtlcm5lbC9mb3JrLmMtNDIwLX1cbi0tXG5rZXJuZWwvZm9yay5jPTQ0Mj1zdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnRocmVhZF9zdGFja19jYWNoZTtcbmtlcm5lbC9mb3JrLmMtNDQzLVxua2VybmVsL2ZvcmsuYzo0NDQ6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG5rZXJuZWwvZm9yay5jLTQ0NS17XG4tLVxua2VybmVsL2ZvcmsuYz00NDk9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTQ1Mi1cbmtlcm5lbC9mb3JrLmM6NDUzOlx0Y2FsbF9yY3UocmgsIHRocmVhZF9zdGFja19mcmVlX3JjdSk7XG5rZXJuZWwvZm9yay5jLTQ1NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBpbiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIGZ1bmN0aW9uYWwsIGJ1dCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgdGhhdCBvY2N1cnMgd2hlbiBmcmVlaW5nIHRocmVhZCBzdGFja3MuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCB0aGUgZmFjdCB0aGlzIGlzIGEga2VybmVsIGZ1bmN0aW9uLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgdGltZSBvbiBmdXp6aW5nIHRoaXMuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZmluZCBvdXQgdGhlIHJlbGV2YW50IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoaXMgZnVuY3Rpb24mIzM5O3MgY29tcGlsYXRpb24uIEJhc2VkIG9uIHRoZSBuYW1lLCBhbmQgbXkgZXhwZXJpZW5jZSwgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgbGlrZWx5IGNvbnRyb2xsZWQgYnkgYENPTkZJR19WTUFQX1NUQUNLYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBga2VybmVsL2ZvcmsuY2AsIHdoaWNoIGlzIHRoZSBsaWtlbHkgc291cmNlIG9mIGNhbGxzIGZvciBzdGFjayBmcmVlaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYwOlx0XHRcdFx0XHRpZiAocGFnZV90b19uaWQocGFnZSkgIT0gbmlkKVxuIDI2MTpcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gMjYyOlx0XHRcdFx0fVxuIDI2MzpcdFx0XHR9XG4gMjY0Olx0XG4gMjY1Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5SX0NBQ0hFRF9TVEFDS1M7IGkmIzQzOyYjNDM7KSB7XG4gMjY2Olx0XHRcdFx0c3RydWN0IHZtX3N0cnVjdCAqdG1wID0gTlVMTDtcbiAyNjc6XHRcbiAyNjg6XHRcdFx0XHRpZiAodGhpc19jcHVfdHJ5X2NtcHhjaGcoY2FjaGVkX3N0YWNrc1tpXSwgXHUwMDI2dG1wLCB2bV9hcmVhKSlcbiAyNjk6XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuIDI3MDpcdFx0XHR9XG4gMjcxOlx0XHR9XG4gMjcyOlx0XHRyZXR1cm4gZmFsc2U7XG4gMjczOlx0fVxuIDI3NDpcdFxuIDI3NTpcdHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuIDI3NjpcdHtcbiAyNzc6XHRcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSBjb250YWluZXJfb2YocmgsIHN0cnVjdCB2bV9zdGFjaywgcmN1KTtcbiAyNzg6XHRcdHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEgPSB2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhO1xuIDI3OTpcdFxuIDI4MDpcdFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhKSlcbiAyODE6XHRcdFx0cmV0dXJuO1xuIDI4MjpcdFxuIDI4MzpcdFx0LypcbiAyODQ6XHRcdCAqIFJlc2V0IHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgdmZyZWUoKTogaW4gUkNVIGNhbGxiYWNrIGNvbnRleHRcbiAyODU6XHRcdCAqIHZmcmVlKCkgcm91dGVzIHRvIHZmcmVlX2F0b21pYygpLCB3aGljaCB3cml0ZXMgdG8gdGhlIGZyZWVkXG4gMjg2Olx0XHQgKiBtZW1vcnkgYXMgbGxpc3Qgc3RvcmFnZS4gIFJlc2V0dGluZyB0aGUgdGFnIHRvIEtBU0FOX1RBR19LRVJORUxcbiAyODc6XHRcdCAqICgweEZGKSBtYWtlcyBLQVNBTiBieXBhc3MgdGFnIGNoZWNrcyBmb3IgdGhhdCB3cml0ZSBpbiBhbGwgbW9kZXNcbiAyODg6XHRcdCAqIChIV19UQUdTLCBTV19UQUdTLCBHZW5lcmljKSwgYXZvaWRpbmcgYSBmYWxzZSB0YWctbWlzbWF0Y2ggcmVwb3J0LlxuIDI4OTpcdFx0ICpcbiAyOTA6XHRcdCAqIGthc2FuX3VucG9pc29uX3ZtYWxsb2MoKSBpcyBub3QgbmVlZGVkIGhlcmU6IGluIEhXX1RBR1MgaXQgaXMgYVxuIDI5MTpcdFx0ICogbm8tb3Agd2l0aG91dCBLQVNBTl9WTUFMTE9DX1ZNX0FMTE9DLCBhbmQgaW4gU1dfVEFHUy9HZW5lcmljIHRoZVxuIDI5MjpcdFx0ICogMHhGRiBwb2ludGVyIGFscmVhZHkgYnlwYXNzZXMgc2hhZG93IGNoZWNrcy4gIFRoaXMgbWlycm9ycyB0aGVcbiAyOTM6XHRcdCAqIGludGVudCBvZiB0aGUgZml4IGluIHNjc19mcmVlKCkgKGNvbW1pdCA1MjhhNGFiNDUzMDApLlxuIDI5NDpcdFx0ICovXG4gMjk1Olx0XHR2ZnJlZShrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cdTAwM2VhZGRyKSk7XG4gMjk2Olx0fVxuIDI5NzpcdFxuIDI5ODpcdHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gMjk5Olx0e1xuIDMwMDpcdFx0c3RydWN0IHZtX3N0YWNrICp2bV9zdGFjayA9IHRzay1cdTAwM2VzdGFjaztcbiAzMDE6XHRcbiAzMDI6XHRcdHZtX3N0YWNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEgPSB0c2stXHUwMDNlc3RhY2tfdm1fYXJlYTtcbiAzMDM6XHRcdGNhbGxfcmN1KFx1MDAyNnZtX3N0YWNrLVx1MDAzZXJjdSwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcbiAzMDQ6XHR9XG4gMzA1Olx0XG4gMzA2Olx0c3RhdGljIGludCBmcmVlX3ZtX3N0YWNrX2NhY2hlKHVuc2lnbmVkIGludCBjcHUpXG4gMzA3Olx0e1xuIDMwODpcdFx0c3RydWN0IHZtX3N0cnVjdCAqKmNhY2hlZF92bV9zdGFja19hcmVhcyA9IHBlcl9jcHVfcHRyKGNhY2hlZF9zdGFja3MsIGNwdSk7XG4gMzA5Olx0XHRpbnQgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDI1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGJsb2NrIG9mIGNvZGUgYW5kIHNwZWNpZmljYWxseSB0aGF0IGAjaWZkZWZgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFdoYXQmIzM5O3MgdGhlIGRlZmluZWQgc3ltYm9sPyBXaGF0IGZlYXR1cmVzIG9yIHBsYXRmb3JtcyBpcyB0aGlzIGNvZGUgdGFyZ2V0aW5nPyBJIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgdGhlIGFzc29jaWF0ZWQgYnVpbGQgY29uZmlndXJhdGlvbi4gSXMgaXQgcGxhdGZvcm0tc3BlY2lmaWMsIGZlYXR1cmUtZmxhZ2dlZCwgb3IgZGVidWctcmVsYXRlZD8gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBjcm9zcy1yZWZlcmVuY2UgcmVsYXRlZCBpbmNsdWRlIGZpbGVzIG9yIG1ha2VmaWxlcywgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9uLCBwZXJoYXBzIGEgZGlmZmVyZW50IGFsZ29yaXRobSBmb3IgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSwgb3IgbWF5YmUgYSBmZWF0dXJlIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQgYXQgYnVpbGQgdGltZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgbWFpbnRhaW5hYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpZmRlZiBDT05GSUdfVk1BUF9TVEFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0xOTE9c3RhdGljIGlubGluZSB2b2lkIGZyZWVfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy0xOTUtXG5rZXJuZWwvZm9yay5jOjE5NjojaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcbmtlcm5lbC9mb3JrLmMtMTk3LS8qXG4tLVxua2VybmVsL2ZvcmsuYz04NjY9dm9pZCBfX2luaXQgZm9ya19pbml0KHZvaWQpXG4tLVxua2VybmVsL2ZvcmsuYy04OTktXG5rZXJuZWwvZm9yay5jOjkwMDojaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcbmtlcm5lbC9mb3JrLmMtOTAxLVx0Y3B1aHBfc2V0dXBfc3RhdGUoQ1BVSFBfQlBfUFJFUEFSRV9EWU4sIFwmIzM0O2Zvcms6dm1fc3RhY2tfY2FjaGVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3Qgb2ZmLCB0aGlzIHBhdGNoIGlzIGNvbmRpdGlvbmFsLCBkZXBlbmRpbmcgb24gYENPTkZJR19WTUFQX1NUQUNLYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIG1lbnRpb24gb2YgS0FTQU4gaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYENPTkZJR19LQVNBTmAsIGFuZCBwb3RlbnRpYWxseSBpdHMgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHRhZyB2YXJpYW50czogYENPTkZJR19LQVNBTl9IV19UQUdTYCBvciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgLiBUaGlzIGZpeCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgYWRkcmVzc2luZyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGR1cmluZyB0aHJlYWQgc3RhY2sgZnJlZWluZy4KClRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQmIzM5O3MgYSBjbGVhbiwgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgYSBzaW5nbGUgbGluZSBhZGRpdGlvbiBvZiBga2FzYW5fcmVzZXRfdGFnYC4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIGEgY3Jhc2gsIHdoaWNoIGlzIGdvb2QuIEhvd2V2ZXIsIHRoZSBzaW1wbGljaXR5IG1ha2VzIG1lIHBhdXNlLiBTdGlsbCwgcHJldmVudGluZyBhIGNyYXNoIGlzIHZhbHVhYmxlLiBJJiMzOTttIGdvaW5nIHRvIGxlYW4gdG93YXJkcyAmIzM0O3llcyYjMzQ7LiBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBmb3Igbm93LCBidXQgd2lsbCByZWFzc2VzcyBpZiBJIGhhdmUgdG8gcHJpb3JpdGl6ZS4KCk5vdywgdGhlIHN5bWJvbCBhbmFseXNpcy4gVGhlIHBhdGNoIG1lbnRpb25zIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCB3aGljaCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdHJpY2t5LiBTaW5jZSBpdCYjMzk7cyBSQ1UsIGl0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGNhbGxlZC4gV2hhdCYjMzk7cyB0aGUgcHVibGljIGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoZSBmcmVlPyBJcyBpdCBgZnJlZV90aHJlYWRfc3RhY2tgLCBvciBwZXJoYXBzIGB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlYCwgb3IgbWF5YmUgZXZlbiBgZnJlZV90YXNrYD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzIHRvIHNlZSB3aGVyZSB0aGUgZnV6emluZyBob29rcyB3b3VsZCBiZSBtb3N0IGVmZmVjdGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYz0yNzU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXG4tLVxua2VybmVsL2ZvcmsuYy0yOTctXG5rZXJuZWwvZm9yay5jOjI5ODpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL2ZvcmsuYy0yOTkte1xuLS1cbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9mb3JrLmMtMzk1LVx0aWYgKCF0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodHNrLVx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxua2VybmVsL2ZvcmsuYzozOTY6XHRcdHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUodHNrKTtcbmtlcm5lbC9mb3JrLmMtMzk3LVxuLS1cbmtlcm5lbC9mb3JrLmM9NDEwPXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDE0LVxua2VybmVsL2ZvcmsuYzo0MTU6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDE2LXtcbi0tXG5rZXJuZWwvZm9yay5jPTQzND1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDM1LXtcbmtlcm5lbC9mb3JrLmM6NDM2Olx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xua2VybmVsL2ZvcmsuYy00MzctXHR0c2stXHUwMDNlc3RhY2sgPSBOVUxMO1xuLS1cbmtlcm5lbC9mb3JrLmM9NDQ0PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuLS1cbmtlcm5lbC9mb3JrLmMtNDQ4LVxua2VybmVsL2ZvcmsuYzo0NDk6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDUwLXtcbi0tXG5rZXJuZWwvZm9yay5jPTQ2NT1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDY2LXtcbmtlcm5lbC9mb3JrLmM6NDY3Olx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xua2VybmVsL2ZvcmsuYy00NjgtXHR0c2stXHUwMDNlc3RhY2sgPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZnJlZV90aHJlYWRfc3RhY2tgKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZnJlZV90aHJlYWRfc3RhY2tgIHZhcmlhYmxlLCBhbmQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqYWxzbyogc3RhdGljIGlzIGRlZmluaXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmUgaGVyZSwgcHJlc3VtYWJseSByZWxhdGVkIHRvIHRocmVhZCBzdGFjayBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIFRoZSBgc3RhdGljYCBrZXl3b3JkLCBhcyB3ZSBib3RoIGtub3csIGhhcyBjcnVjaWFsIGltcGxpY2F0aW9ucyBpbiB0aGlzIGNvbnRleHQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgc2NvcGUgb2YgdGhpcyBzdGFjayBtYW5hZ2VtZW50PyBJcyBgZnJlZV90aHJlYWRfc3RhY2tgIGRlc2lnbmVkIHRvIGJlIGEgZ2xvYmFsIHJlc291cmNlIGZvciB0aGUgKmVudGlyZSogcHJvZ3JhbSwgYSBzaW5nbGUgaW5zdGFuY2Ugc2hhcmVkIGFjcm9zcyBhbGwgdGhyZWFkcz8gT3IgaXMgaXQgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBwZXJoYXBzIGEgdGhyZWFkIHBvb2wgbWFuYWdlciwgZW5zdXJpbmcgdGhhdCBzdGFjayBhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUgYXJlIG1hbmFnZWQgY29uc2lzdGVudGx5PyBUaGUgZ2xvYmFsIHNjZW5hcmlvIHdvdWxkIG1lYW4gd2UgaGF2ZSBhIHNpbmdsZSBwb2ludCBvZiBjb250ZW50aW9uLCBhbmQgdGhyZWFkIHNhZmV0eSBiZWNvbWVzIHBhcmFtb3VudCwgZGVtYW5kaW5nIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBNb2R1bGUtc2NvcGVkLCBob3dldmVyLCBjb3VsZCBiZSBhIG1vcmUgbWFuYWdlYWJsZSwgb3IgcGVyaGFwcyBtb3JlIHNwZWNpYWxpemVkIHNvbHV0aW9uLCBidXQgdGhlbiB3ZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBpbnRlci1tb2R1bGUgdGhyZWFkcyBnZXQgYWxsb2NhdGVkIHRoZWlyIHN0YWNrcy4KClRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbmN5IGFyZSBpbW1lZGlhdGVseSBldmlkZW50LiBJIG5lZWQgdG8ga25vdyBob3cgdGhlIHZhcmlhYmxlIGlzIGJlaW5nIHVzZWQuIElmIGl0JiMzOTtzIGEgc2ltcGxlIGZyZWUgbGlzdCwgdGhlbiBhdG9taWMgb3BlcmF0aW9ucyBvbiBpdCBhcmUgZXNzZW50aWFsLiBJZiBpdCYjMzk7cyBtb3JlIGNvbXBsZXgsIGEgbG9jayBtaWdodCBiZSBuZWNlc3NhcnkuIEJ1dCBldmVuIHdpdGggYSBsb2NrLCB3ZSBhcmUgbm93IGxvb2tpbmcgYXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGR1ZSB0byBjb250ZW50aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBhIHRocmVhZC1sb2NhbCBzdG9yYWdlIChUTFMpIGFwcHJvYWNoIHdhc24mIzM5O3QgY29uc2lkZXJlZCwgdG8gYXZvaWQgc3VjaCBsb2NrIGNvbnRlbnRpb24sIGFzc3VtaW5nIHRoZSBzdGFja3MgYXJlIGJlaW5nIHVzZWQgYnkgYSBzdWJzZXQgb2YgdGhyZWFkcyBhbmQgbm90IGFsbCB0aHJlYWRzIHNpbXVsdGFuZW91c2x5LgoKQW5vdGhlciBhc3BlY3QgdGhhdCYjMzk7cyBqdW1waW5nIG91dCBhdCBtZSBpcyBsaWZldGltZSBtYW5hZ2VtZW50LiBTaW5jZSBpdCYjMzk7cyBzdGF0aWMsIGl0IGxpdmVzIHRocm91Z2hvdXQgdGhlIHByb2dyYW0mIzM5O3MgZXhlY3V0aW9uLCBvciBhdCBsZWFzdCB0aGUgbW9kdWxlJiMzOTtzIGxpZmV0aW1lLiBBcmUgd2UgbG9va2luZyBhdCBhIHN5c3RlbSB3aGVyZSBzdGFja3MgYXJlIHByZS1hbGxvY2F0ZWQgYXQgc3RhcnR1cCwgYW5kIHRoZW4gc2ltcGx5IHJlLXVzZWQgdGhyb3VnaG91dCB0aGUgcHJvZ3JhbSYjMzk7cyBsaWZlc3Bhbj8gT3IgaXMgaXQgZGVzaWduZWQgdG8gaGFuZGxlIGR5bmFtaWMgdGhyZWFkIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBncmFjZWZ1bGx5LCBldmVuIHVuZGVyIGhlYXZ5IGxvYWQ/IFRoZSBkZXNpZ24gY29uc2lkZXJhdGlvbnMgZm9yIHByZS1hbGxvY2F0aW9uIGFyZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIGR5bmFtaWMgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLiBJcyB0aGlzIGEgc3lzdGVtIHdoZXJlIHRoZXJlIGFyZSBzdGFjayBncm93dGggbGltaXRhdGlvbnMsIG9yIGlzIHRoaXMgYmVpbmcgdXNlZCB0byBncm93PwoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgaXRzIGluaXRpYWxpemF0aW9uLiBJcyB0aGUgc3RhY2sgcHJlLXBvcHVsYXRlZCB3aXRoIGEgc2V0IG9mIGluaXRpYWxseSBmcmVlIHN0YWNrIGZyYW1lcywgb3IgaXMgdGhlIGxpc3QgYnVpbHQgZHluYW1pY2FsbHk/IEhvdyBkb2VzIHRoZSBzeXN0ZW0gaGFuZGxlIHN0YWNrIGV4aGF1c3Rpb24sIGVzcGVjaWFsbHkgaW4gc3lzdGVtcyB3aXRoIGEgaGFyZCBsaW1pdCBvbiByZXNvdXJjZXM/IERvZXMgaXQgZmFpbCBncmFjZWZ1bGx5LCBvciBkb2VzIGl0IGxlYWQgdG8gYSBoYXJkIGNyYXNoPyBUaGUgbGFjayBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGFuIGltcG9ydGFudCBvbWlzc2lvbiBmb3IgYSBzdGF0aWMgdmFyaWFibGUuCgpTbywgaW4gZXNzZW5jZSwgdGhlIHN0YXRpYyBuYXR1cmUgb2YgYGZyZWVfdGhyZWFkX3N0YWNrYCByYWlzZXMgYSB3aG9sZSBob3N0IG9mIHF1ZXN0aW9ucyBhYm91dCBjb25jdXJyZW5jeSwgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3ksIGxpZmV0aW1lLCBlcnJvciBoYW5kbGluZywgYW5kIG92ZXJhbGwgc3lzdGVtIGRlc2lnbi4gSXQgc3VnZ2VzdHMgYSBmb2N1c2VkIGFwcHJvYWNoIHRvIHN0YWNrIG1hbmFnZW1lbnQsIGJ1dCBJIG5lZWQgYSBsb3QgbW9yZSBjb250ZXh0IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBhbmQgZXZhbHVhdGUgaXRzIGVmZmVjdGl2ZW5lc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfdGhyZWFkX3N0YWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2ZvcmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZm9yay5jPTM0NT1zdGF0aWMgaW50IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTM4My1cdCAqIFdlIGNhbiYjMzk7dCBjYWxsIGZpbmRfdm1fYXJlYSgpIGluIGludGVycnVwdCBjb250ZXh0LCBhbmRcbmtlcm5lbC9mb3JrLmM6Mzg0Olx0ICogZnJlZV90aHJlYWRfc3RhY2soKSBjYW4gYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0LFxua2VybmVsL2ZvcmsuYy0zODUtXHQgKiBzbyBjYWNoZSB0aGUgdm1fc3RydWN0LlxuLS1cbmtlcm5lbC9mb3JrLmMtMzkyLVxua2VybmVsL2ZvcmsuYzozOTM6c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvZm9yay5jLTM5NC17XG4tLVxua2VybmVsL2ZvcmsuYz00MjI9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXG4tLVxua2VybmVsL2ZvcmsuYy00MzMtXG5rZXJuZWwvZm9yay5jOjQzNDpzdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC9mb3JrLmMtNDM1LXtcbi0tXG5rZXJuZWwvZm9yay5jPTQ1Nj1zdGF0aWMgaW50IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTQ2NC1cbmtlcm5lbC9mb3JrLmM6NDY1OnN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL2ZvcmsuYy00NjYte1xuLS1cbmtlcm5lbC9mb3JrLmM9NTI5PXN0YXRpYyB2b2lkIHJlbGVhc2VfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTUzMy1cbmtlcm5lbC9mb3JrLmM6NTM0Olx0ZnJlZV90aHJlYWRfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTM1LX1cbi0tXG5rZXJuZWwvZm9yay5jPTkyNj1zdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpkdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpvcmlnLCBpbnQgbm9kZSlcbi0tXG5rZXJuZWwvZm9yay5jLTEwMzItXHRleGl0X3Rhc2tfc3RhY2tfYWNjb3VudCh0c2spO1xua2VybmVsL2ZvcmsuYzoxMDMzOlx0ZnJlZV90aHJlYWRfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtMTAzNC1mcmVlX3RzazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwMgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGByZWxlYXNlX3Rhc2tfc3RhY2tgIFVzYWdlKioKCkFscmlnaHQsIHNvIGByZWxlYXNlX3Rhc2tfc3RhY2tgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiB0aGUga2VybmVsIGNvZGUuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoYXQgbGltaXRzIGl0cyBzY29wZSBjb25zaWRlcmFibHksIHR5cGljYWxseSBtZWFuaW5nIGl0JiMzOTtzIG9ubHkgbWVhbnQgdG8gYmUgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0IGFzIGl0cyBkZWZpbml0aW9uLiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBhbmQgcmVtaW5kIG15c2VsZiB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIHdpdGhpbiB0aGUgcHJvamVjdC4KCk5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgZHVwX3Rhc2tfc3RydWN0YC4gSG1tLCB0aGF0JiMzOTtzIGFsc28gc3RhdGljLiBPa2F5LCBnb29kLiBTaW5jZSBib3RoIGFyZSBzdGF0aWMsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHVzZSBpbiB0YW5kZW0sIGFuZCB0cmFjaW5nIGNhbGxzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udGV4dHMgdGhleSBvcGVyYXRlIGluLCBhbmQgaG93IHRoZXkgcmVsYXRlLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSB0YXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHJlbGVhc2VfdGFza19zdGFja2AuIFRpbWUgdG8gZmluZCBvdXQgZXhhY3RseSAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWxlYXNlX3Rhc2tfc3RhY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZm9yay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9mb3JrLmM9NTE1PXZvaWQgZXhpdF90YXNrX3N0YWNrX2FjY291bnQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2ZvcmsuYy01MjgtXG5rZXJuZWwvZm9yay5jOjUyOTpzdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5rZXJuZWwvZm9yay5jLTUzMC17XG4tLVxua2VybmVsL2ZvcmsuYz01Mzg9dm9pZCBwdXRfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTU0MC1cdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2dHNrLVx1MDAzZXN0YWNrX3JlZmNvdW50KSlcbmtlcm5lbC9mb3JrLmM6NTQxOlx0XHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTQyLX1cbi0tXG5rZXJuZWwvZm9yay5jPTU0NT12b2lkIGZyZWVfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZm9yay5jLTU1Ny1cdCAqL1xua2VybmVsL2ZvcmsuYzo1NTg6XHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcbmtlcm5lbC9mb3JrLmMtNTU5LSNlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBwdXRfdGFza19zdGFja2AgYW5kIGBmcmVlX3Rhc2tgIGFyZSBib3RoIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLiBgZnJlZV90YXNrYCBpcyBjYWxsZWQgZHVyaW5nIHRhc2sgZXhpdDsgdGhhdCYjMzk7cyBhICp2ZXJ5KiBob3QgcGF0aC4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBhZGRyZXNzZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZS4gSG1tLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8KCkl0JiMzOTtzIGEgb25lLWxpbmUgZml4LCBiYXNpY2FsbHkganVzdCByZXNldHRpbmcgYSB0YWcgdG8gYXZvaWQgYSBmYWxzZSBwb3NpdGl2ZS4gTm8gbmV3LCBjb21wbGV4IGxvZ2ljIGJlaW5nIGludHJvZHVjZWQuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGp1c3QgYSByZXNldC4gT2theSwgbm93LCBsZXQmIzM5O3MgZ28gdGhyb3VnaCB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGZvciBza2lwcGluZyBmdXp6aW5nOiBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCB0ZWFyZG93biBjYWxsYmFja3MuLi4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBmaXQgYW55IG9mIHRob3NlLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbW9kaWZpZXMgYSBwb2ludGVyIHZhbHVlIGJlZm9yZSBgdmZyZWVgIQoKV2FpdCwgZG9lcyB0aGlzIGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTGV0IG1lIHRoaW5rLi4uIGBrYXNhbl9yZXNldF90YWdgICpkb2VzKiByZXNldCB0aGUgdGFnLiBBbmQgaW4gSFdfVEFHUywgU1dfVEFHUyBhbmQgR2VuZXJpYyBpdCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBwb2ludGVyIHZhbHVlLiBUaGlzIGlzLCBpbmRlZWQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgaGF2ZSB0byBzYXkgYFdvcnRoRnV6emluZz10cnVlYC4KCk5vdywgc2hvdWxkIEkgbGlzdCBhbnkgZm9jdXMgc3ltYm9scz8gSSBzaG91bGQgYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuIFdlbGwsIGBmcmVlX3Rhc2tgIGlzIGRlZmluaXRlbHkgaG90LiBBbmQgYHB1dF90YXNrX3N0YWNrYCBpcyBhbHNvIGEgaG90IHBhdGggYmVjYXVzZSBpdCBpcyBjYWxsZWQgb24gdGFzayBleGl0LiBgZHVwX3Rhc2tfc3RydWN0YCBpcyBhbm90aGVyIGhvdCBwYXRoLiBJZiBhbGwgdGhlIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZ1bmN0aW9ucyBhcmUgaG90IHBhdGhzLCB0aGVuIGxlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgaXMgd2hhdCBJIHNob3VsZCBkby4KCldoYXQgYWJvdXQgYENPTkZJR2Agb3B0aW9ucz8gSSYjMzk7bGwgbmVlZCBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBBbmQsIG9mIGNvdXJzZSwgYENPTkZJR19LQVNBTmAgYW5kIGVpdGhlciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgIG9yIGBDT05GSUdfS0FTQU5fSFdfVEFHU2AuIFRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gYWN0dWFsbHkgdGVzdCB0aGUgdGFnIHJlc2V0LCBldmVuIHRob3VnaCBga2FzYW5fcmVzZXRfdGFnYCBpcyBhbHdheXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5fcmVzZXRfdGFnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9rYXNhbi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgva2FzYW4uaD01MTQ9c3RhdGljIGlubGluZSB2b2lkIGthc2FuX3JlY29yZF9hdXhfc3RhY2sodm9pZCAqcHRyKSB7fVxuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaC01MTktXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTIwOnN0YXRpYyBpbmxpbmUgdm9pZCAqa2FzYW5fcmVzZXRfdGFnKGNvbnN0IHZvaWQgKmFkZHIpXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTIxLXtcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MjI6XHRyZXR1cm4gKHZvaWQgKilhcmNoX2thc2FuX3Jlc2V0X3RhZyhhZGRyKTtcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MjMtfVxuLS1cbmluY2x1ZGUvbGludXgva2FzYW4uaD01MzI9Ym9vbCBrYXNhbl9yZXBvcnQoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IHNpemUsXG4tLVxuaW5jbHVkZS9saW51eC9rYXNhbi5oLTUzNi1cbmluY2x1ZGUvbGludXgva2FzYW4uaDo1Mzc6c3RhdGljIGlubGluZSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRkcilcbmluY2x1ZGUvbGludXgva2FzYW4uaC01Mzgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBLZXJuZWwgU3RhY2sgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzdGFjayBhbGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgYW5kIEkgc2VlIGBDT05GSUdfVk1BUF9TVEFDS2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gb2YgaW50ZXJlc3QgaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIG1vc3Qgc2NlbmFyaW9zLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncz8mIzM0OyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHR5cGljYWwgc3RhdGUgb2YgdGhpcyBvcHRpb24gdG8gdW5kZXJzdGFuZCBpdHMgZ2VuZXJhbCBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBpZiBpdOKAmXMgZGlzYWJsZWQgb3IgaWYgSSBkZWNpZGUgdG8gdHdlYWsgaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVk1BUF9TVEFDSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL0tjb25maWc9MTUwMj1jb25maWcgSEFWRV9BUkNIX1ZNQVBfU1RBQ0tcbi0tXG5hcmNoL0tjb25maWctMTUyMS1cbmFyY2gvS2NvbmZpZzoxNTIyOmNvbmZpZyBWTUFQX1NUQUNLXG5hcmNoL0tjb25maWctMTUyMy1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDI0CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDcyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gdGhlIFBhdGNoJiMzOTtzIEZ1enppbmcgV29ydGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWTUFQX1NUQUNLYCBiZWluZyBgZGVmYXVsdCB5YCB3aGVuIGBIQVZFX0FSQ0hfVk1BUF9TVEFDS2AgaXMgc2V0IGNvbmZpcm1zIGl0JiMzOTtzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBwYXRoLgoKTm93LCB0aGUgY29yZSBxdWVzdGlvbjogaXMgdGhpcyBvbmUtbGluZSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBmaXggd29ydGggZnV6emluZz8gSXQmIzM5O3MgYSBzaW1wbGUgdGFnIHJlc2V0LiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyBvciBjb21wbGV4aXRpZXMuIFRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIGNoYW5nZXMgbGlrZSBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZmxvdywgYnV0IHRoaXMgKmRvZXMqIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZmxvdzsgaXQgY2hhbmdlcyB0aGUgcG9pbnRlciBwYXNzZWQgdG8gYHZmcmVlYCwgcHJldmVudGluZyBhIEtBU0FOIHJlcG9ydC4gU28sIGluaXRpYWxseSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgaXQgaXMgZnVuY3Rpb25hbGx5IGNoYW5naW5nIGNvcmUga2VybmVsIGNvZGUuCgpIb3dldmVyLCBpdCAqaXMqIGp1c3QgYSBvbmUtbGluZXIgdGFnIHJlc2V0LiBXaWxsIGZ1enppbmcgdGhpcyBzcGVjaWZpY2FsbHkgZmluZCBhbnl0aGluZyBuZXc/IFByb2JhYmx5IG5vdC4gVGhlIHByb21wdCBlbXBoYXNpemVzICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCB0aGlzIGlzIGZ1bmN0aW9uYWwsIHNvIEkgd2FzIGNvcnJlY3QgaW4gdGhlIGZpcnN0IGFzc2Vzc21lbnQuIEkgY291bGQgc2F5IGl0IHRoaXMgcGF0Y2ggKnNob3VsZG4mIzM5O3QqIGJlIGZ1enplZCwgZ2l2ZW4gaXQgaXMgYSB2ZXJ5IHNpbXBsZSBmaXguCgpTbywgdGhlIGp1c3RpZmljYXRpb24gSSBjYW1lIHVwIHdpdGg6ICYjMzQ7VGhpcyBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUgb24gYSB0aHJlYWQgc3RhY2suIFdoaWxlIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGlzIGEgc2ltcGxlIG9uZS1saW5lIGZpeCBpbiBhIGNvcmUga2VybmVsIGhvdCBwYXRoICh0YXNrIGV4aXQvZnJlZSkuIEZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3MsIGJ1dCBpdCBpcyB0ZWNobmljYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7CgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlcjogc2hvdWxkIGl0IGJlIGBmYWxzZWAgc2luY2UgaXQmIzM5O3MgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3M/IFRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSBzYXkgJiMzNDtzaW1wbGUgYnVnIGZpeCA9IGZhbHNlLiYjMzQ7IFNvIEkmIzM5O20gc3RpY2tpbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93IGxldCYjMzk7cyByZXZpZXcgdGhlIGNvbmZpZ3MsIHRvIGJlIGNlcnRhaW4uIEkga25vdyB0aGF0IGBDT05GSUdfS0FTQU5gIGlzIGVzc2VudGlhbCB0byBhY3R1YWxseSBlbmFibGUgS0FTQU4sIHdoaWNoIGlzIHdoZXJlIHRoZSBmYWxzZSBwb3NpdGl2ZSBpcy4gSXQgd291bGQgYmUgdXNlbGVzcyBpZiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZC4gSSYjMzk7bSBnb2luZyB0byBhZGQgYEtBU0FOYCB0byB0aGUgY29uZmlncy4gSSBhbHJlYWR5IGtub3cgdGhhdCBgVk1BUF9TVEFDS2AgY2FuIGJlIGluY2x1ZGVkIGhlcmUuCgpUaGlua2luZyBhYm91dCBga2FzYW5fcmVzZXRfdGFnYCBhZ2FpbiwgSSByZWFsaXplIHRoYXQgaWYgS0FTQU4gaXMgZGlzYWJsZWQsIHRoZSBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyB0aGUgcG9pbnRlciB1bm1vZGlmaWVkLiBUbyBhY3R1YWxseSB0ZXN0ICp0aGUgbW9kaWZpZWQgY29kZSogKHRoZSB0YWcgcmVzZXQgZG9pbmcgc29tZXRoaW5nKSwgSSAqbXVzdCogaGF2ZSBLQVNBTiBlbmFibGVkLiBTbywgSSBuZWVkIHRvIGFkZCBgS0FTQU5gIGFuZCBgVk1BUF9TVEFDS2AgdG8gYEVuYWJsZUNvbmZpZ3NgLgoKRmluYWxseSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBGb2N1c1N5bWJvbHNgLiBgZnJlZV90YXNrYCBhbmQgYHB1dF90YXNrX3N0YWNrYCBhcmUgaG90IHBhdGhzLCBidXQgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgc3RhdGljLiBUaGVzZSBhcmUgYWxsIGdlbmVyaWMgcm91dGluZXMgcmVsYXRlZCB0byB0YXNrIGZyZWVpbmcuIEkgd29uJiMzOTt0IHNwZWNpZnkgYW55IHNwZWNpZmljIGBGb2N1c1N5bWJvbHNgLCBhcyB0aGUgcGF0Y2ggYWZmZWN0cyBnZW5lcmljIGhvdCBwYXRocy4KClRoZSByZWFzb25pbmcgSSYjMzk7bSBnb2luZyB0byBwcm92aWRlIGlzOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUoKSBvbiBhIHRocmVhZCBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuJiMzNDsKCk5vdyBJJiMzOTtsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZNQVBfU1RBQ0smIzM0OywKICAgICYjMzQ7S0FTQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWTUFQX1NUQUNLJiMzNDssCiAgICAmIzM0O0tBU0FOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjIyLjE2MTA3MTM3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjUyMDQ1NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZNQVBfU1RBQ0tcIixcbiAgICBcIktBU0FOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgS0FTQU4gZmFsc2UgcG9zaXRpdmUgYnkgcmVzZXR0aW5nIHRoZSBwb2ludGVyIHRhZyBiZWZvcmUgY2FsbGluZyB2ZnJlZSgpIG9uIGEgdGhyZWFkIHN0YWNrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJ3MgdGFzayBmcmVlaW5nIGxvZ2ljLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRhc2sgZXhpdCBhbmQgY2xlYW51cC4gU2luY2UgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyAobGlrZSBmcmVlX3Rhc2sgYW5kIHB1dF90YXNrX3N0YWNrKSBhcmUgZ2VuZXJpYyBob3QgcGF0aHMsIG5vIHNwZWNpZmljIEZvY3VzU3ltYm9scyBhcmUgcHJvdmlkZWQuIENPTkZJR19WTUFQX1NUQUNLIGFuZCBDT05GSUdfS0FTQU4gYXJlIHJlcXVpcmVkIHRvIGV4ZXJjaXNlIHRoZSB0YWcgcmVzZXR0aW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOToyMi4xNjEwNzg2MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjE0Mjc0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNmFkNWVjNGI4NTM2MTJkNWZkMDI3NWYxMmY1MzE0N2IyNDBiYmRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2ZvcmsuYyBiL2tlcm5lbC9mb3JrLmNcXG5pbmRleCBmMGUyZTEzMWE5YTVhLi4yZmQ2ZmQyNWM5ZTc5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9mb3JrLmNcXG4rKysgYi9rZXJuZWwvZm9yay5jXFxuQEAgLTI4MCw3ICsyODAsMTkgQEAgc3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxuIFxcdGlmICh0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodm1fc3RhY2stXFx1MDAzZXN0YWNrX3ZtX2FyZWEpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2ZnJlZSh2bV9hcmVhLVxcdTAwM2VhZGRyKTtcXG4rXFx0LypcXG4rXFx0ICogUmVzZXQgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSB2ZnJlZSgpOiBpbiBSQ1UgY2FsbGJhY2sgY29udGV4dFxcbitcXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxcbitcXHQgKiBtZW1vcnkgYXMgbGxpc3Qgc3RvcmFnZS4gIFJlc2V0dGluZyB0aGUgdGFnIHRvIEtBU0FOX1RBR19LRVJORUxcXG4rXFx0ICogKDB4RkYpIG1ha2VzIEtBU0FOIGJ5cGFzcyB0YWcgY2hlY2tzIGZvciB0aGF0IHdyaXRlIGluIGFsbCBtb2Rlc1xcbitcXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cXG4rXFx0ICpcXG4rXFx0ICoga2FzYW5fdW5wb2lzb25fdm1hbGxvYygpIGlzIG5vdCBuZWVkZWQgaGVyZTogaW4gSFdfVEFHUyBpdCBpcyBhXFxuK1xcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcXG4rXFx0ICogMHhGRiBwb2ludGVyIGFscmVhZHkgYnlwYXNzZXMgc2hhZG93IGNoZWNrcy4gIFRoaXMgbWlycm9ycyB0aGVcXG4rXFx0ICogaW50ZW50IG9mIHRoZSBmaXggaW4gc2NzX2ZyZWUoKSAoY29tbWl0IDUyOGE0YWI0NTMwMCkuXFxuK1xcdCAqL1xcbitcXHR2ZnJlZShrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cXHUwMDNlYWRkcikpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOToyMy42MjM0NDA5ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDE4OTY2NzMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWTUFQX1NUQUNLXCIsXG4gICAgXCJLQVNBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUoKSBvbiBhIHRocmVhZCBzdGFjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIHRhc2sgZnJlZWluZyBsb2dpYy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0YXNrIGV4aXQgYW5kIGNsZWFudXAuIFNpbmNlIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgKGxpa2UgZnJlZV90YXNrIGFuZCBwdXRfdGFza19zdGFjaykgYXJlIGdlbmVyaWMgaG90IHBhdGhzLCBubyBzcGVjaWZpYyBGb2N1c1N5bWJvbHMgYXJlIHByb3ZpZGVkLiBDT05GSUdfVk1BUF9TVEFDSyBhbmQgQ09ORklHX0tBU0FOIGFyZSByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgdGFnIHJlc2V0dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDZhZDVlYzRiODUzNjEyZDVmZDAyNzVmMTJmNTMxNDdiMjQwYmJkZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTk6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuY1xuaW5kZXggZjBlMmUxMzFhOWE1YS4uMmZkNmZkMjVjOWU3OSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9mb3JrLmNcbisrKyBiL2tlcm5lbC9mb3JrLmNcbkBAIC0yODAsNyArMjgwLDE5IEBAIHN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxuIFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cdTAwM2VzdGFja192bV9hcmVhKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0dmZyZWUodm1fYXJlYS1cdTAwM2VhZGRyKTtcbitcdC8qXG4rXHQgKiBSZXNldCB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIHZmcmVlKCk6IGluIFJDVSBjYWxsYmFjayBjb250ZXh0XG4rXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxuK1x0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXG4rXHQgKiAoMHhGRikgbWFrZXMgS0FTQU4gYnlwYXNzIHRhZyBjaGVja3MgZm9yIHRoYXQgd3JpdGUgaW4gYWxsIG1vZGVzXG4rXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cbitcdCAqXG4rXHQgKiBrYXNhbl91bnBvaXNvbl92bWFsbG9jKCkgaXMgbm90IG5lZWRlZCBoZXJlOiBpbiBIV19UQUdTIGl0IGlzIGFcbitcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcbitcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXG4rXHQgKiBpbnRlbnQgb2YgdGhlIGZpeCBpbiBzY3NfZnJlZSgpIChjb21taXQgNTI4YTRhYjQ1MzAwKS5cbitcdCAqL1xuK1x0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXHUwMDNlYWRkcikpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6MjMuNjIzNDQyMTU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTczMTU3Mzk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBLQVNBTiBQYXRjaCBpbiBLZXJuZWwgRm9ya2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGtlcm5lbC9mb3JrLmNgLiBJdCdzIHR3ZWFraW5nIGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZnJlZWluZyB0aHJlYWQgc3RhY2tzIHVuZGVyIFJDVS4gVGhlIGNoYW5nZSBpcyBzaW1wbGU6IGl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYHZtX2FyZWEtXHUwMDNlYWRkcmAgZGlyZWN0bHkgaW4gdGhlIGB2ZnJlZSgpYCBjYWxsIHRvIHVzaW5nIGBrYXNhbl9yZXNldF90YWcodm1fYXJlYS1cdTAwM2VhZGRyKWAgaW5zdGVhZC4gRnVuY3Rpb25hbGx5LCBpdCdzIGFib3V0IHJlc2V0dGluZyBLQVNBTiB0YWdzIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4gSXQncyBhIHRpbnksIGxvY2FsaXplZCBjaGFuZ2UsIGZvY3VzZWQgb24gYHZmcmVlKClgJ3MgaW50ZXJhY3Rpb24gd2l0aCBLQVNBTiB0YWcgbWFuYWdlbWVudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlNob3VsZCBJIGV2ZW4gYm90aGVyIGZ1enppbmcgdGhpcz9cIiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCBpcyBhIGZ1bmRhbWVudGFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUga2VybmVsJ3MgZm9ya2luZyBtZWNoYW5pc21zLCBzbyBpdCdzIGNsZWFybHkgaW1wb3J0YW50LiBIb3dldmVyLCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBqdXN0IGEgcG9pbnRlciB0YWcgcmVzZXQuIEl0J3Mgbm90IGEgbWFqb3IgYXJjaGl0ZWN0dXJhbCBzaGlmdCBvciBuZXcgZnVuY3Rpb25hbGl0eS4gSXQncyBtb3JlIG9mIGEgc3VidGxlIGhhcmRlbmluZyBtZWFzdXJlLlxuXG5JJ20gbGVhbmluZyB0b3dhcmRzIHRoZSBcIml0J3MgcHJvYmFibHkgd29ydGggYSBxdWljayBsb29rXCIgY2FtcCwgc2luY2UgaXQncyBhIGNvcmUga2VybmVsIGZ1bmN0aW9uLiBJdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gdGVzdCBldmVuIHNtYWxsIGNoYW5nZXMuIExldCdzIHNlZSB3aGF0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN1cHBvc2VkIHRvIGRvLCBhbmQgdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSB0byBtYWtlIGEgYmV0dGVyIGRldGVybWluYXRpb24uIExldCBtZSBnbyBvdmVyIHRoZSBjb2RlIGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6MjkuMzU1MDIwMTYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDg1OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRocmVhZF9zdGFja19mcmVlX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZm9yay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9mb3JrLmM9MjQyPXN0YXRpYyBib29sIHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZShzdHJ1Y3Qgdm1fc3RydWN0ICp2bV9hcmVhKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0yNzQtXFxua2VybmVsL2ZvcmsuYzoyNzU6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxua2VybmVsL2ZvcmsuYy0yNzYte1xcbi0tXFxua2VybmVsL2ZvcmsuYz0yOTg9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtMzAyLVxcdHZtX3N0YWNrLVxcdTAwM2VzdGFja192bV9hcmVhID0gdHNrLVxcdTAwM2VzdGFja192bV9hcmVhO1xcbmtlcm5lbC9mb3JrLmM6MzAzOlxcdGNhbGxfcmN1KFxcdTAwMjZ2bV9zdGFjay1cXHUwMDNlcmN1LCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbmtlcm5lbC9mb3JrLmMtMzA0LX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00MDktXFxua2VybmVsL2ZvcmsuYzo0MTA6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxua2VybmVsL2ZvcmsuYy00MTEte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00MTU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNDE4LVxcbmtlcm5lbC9mb3JrLmM6NDE5OlxcdGNhbGxfcmN1KHJoLCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbmtlcm5lbC9mb3JrLmMtNDIwLX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQyPXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqdGhyZWFkX3N0YWNrX2NhY2hlO1xcbmtlcm5lbC9mb3JrLmMtNDQzLVxcbmtlcm5lbC9mb3JrLmM6NDQ0OnN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxcbmtlcm5lbC9mb3JrLmMtNDQ1LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQ5PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTQ1Mi1cXG5rZXJuZWwvZm9yay5jOjQ1MzpcXHRjYWxsX3JjdShyaCwgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KTtcXG5rZXJuZWwvZm9yay5jLTQ1NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjI5LjQzMzUxMDIxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjk2ODAwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29yZSBLZXJuZWwgQ2hhbmdlKipcblxuT2theSwgc28gdGhlcmUncyBhIG1vZGlmaWNhdGlvbiBpbiBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YC4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIGZ1bmN0aW9uYWwsIGJ1dCBpdCdzIGFkZHJlc3NpbmcgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSB0aGF0IG9jY3VycyB3aGVuIGZyZWVpbmcgdGhyZWFkIHN0YWNrcy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmYWN0IHRoaXMgaXMgYSBrZXJuZWwgZnVuY3Rpb24sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBzcGVuZGluZyBzb21lIHRpbWUgb24gZnV6emluZyB0aGlzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGZpbmQgb3V0IHRoZSByZWxldmFudCBgQ09ORklHYCBvcHRpb25zIHRoYXQgY29udHJvbCB0aGlzIGZ1bmN0aW9uJ3MgY29tcGlsYXRpb24uIEJhc2VkIG9uIHRoZSBuYW1lLCBhbmQgbXkgZXhwZXJpZW5jZSwgYHRocmVhZF9zdGFja19mcmVlX3JjdWAgaXMgbGlrZWx5IGNvbnRyb2xsZWQgYnkgYENPTkZJR19WTUFQX1NUQUNLYC4gTGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBrZXJuZWwvZm9yay5jYCwgd2hpY2ggaXMgdGhlIGxpa2VseSBzb3VyY2Ugb2YgY2FsbHMgZm9yIHN0YWNrIGZyZWVpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTozMy40NjMxOTM1NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTYwNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9mb3JrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcdFxcdFxcdFxcdGlmIChwYWdlX3RvX25pZChwYWdlKSAhPSBuaWQpXFxuIDI2MTpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDI2MjpcXHRcXHRcXHRcXHR9XFxuIDI2MzpcXHRcXHRcXHR9XFxuIDI2NDpcXHRcXG4gMjY1OlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOUl9DQUNIRURfU1RBQ0tTOyBpKyspIHtcXG4gMjY2OlxcdFxcdFxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKnRtcCA9IE5VTEw7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdFxcdFxcdFxcdGlmICh0aGlzX2NwdV90cnlfY21weGNoZyhjYWNoZWRfc3RhY2tzW2ldLCBcXHUwMDI2dG1wLCB2bV9hcmVhKSlcXG4gMjY5OlxcdFxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcbiAyNzA6XFx0XFx0XFx0fVxcbiAyNzE6XFx0XFx0fVxcbiAyNzI6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyNzM6XFx0fVxcbiAyNzQ6XFx0XFxuIDI3NTpcXHRzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcXG4gMjc2OlxcdHtcXG4gMjc3OlxcdFxcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSBjb250YWluZXJfb2YocmgsIHN0cnVjdCB2bV9zdGFjaywgcmN1KTtcXG4gMjc4OlxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKnZtX2FyZWEgPSB2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYTtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0aWYgKHRyeV9yZWxlYXNlX3RocmVhZF9zdGFja190b19jYWNoZSh2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYSkpXFxuIDI4MTpcXHRcXHRcXHRyZXR1cm47XFxuIDI4MjpcXHRcXG4gMjgzOlxcdFxcdC8qXFxuIDI4NDpcXHRcXHQgKiBSZXNldCB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIHZmcmVlKCk6IGluIFJDVSBjYWxsYmFjayBjb250ZXh0XFxuIDI4NTpcXHRcXHQgKiB2ZnJlZSgpIHJvdXRlcyB0byB2ZnJlZV9hdG9taWMoKSwgd2hpY2ggd3JpdGVzIHRvIHRoZSBmcmVlZFxcbiAyODY6XFx0XFx0ICogbWVtb3J5IGFzIGxsaXN0IHN0b3JhZ2UuICBSZXNldHRpbmcgdGhlIHRhZyB0byBLQVNBTl9UQUdfS0VSTkVMXFxuIDI4NzpcXHRcXHQgKiAoMHhGRikgbWFrZXMgS0FTQU4gYnlwYXNzIHRhZyBjaGVja3MgZm9yIHRoYXQgd3JpdGUgaW4gYWxsIG1vZGVzXFxuIDI4ODpcXHRcXHQgKiAoSFdfVEFHUywgU1dfVEFHUywgR2VuZXJpYyksIGF2b2lkaW5nIGEgZmFsc2UgdGFnLW1pc21hdGNoIHJlcG9ydC5cXG4gMjg5OlxcdFxcdCAqXFxuIDI5MDpcXHRcXHQgKiBrYXNhbl91bnBvaXNvbl92bWFsbG9jKCkgaXMgbm90IG5lZWRlZCBoZXJlOiBpbiBIV19UQUdTIGl0IGlzIGFcXG4gMjkxOlxcdFxcdCAqIG5vLW9wIHdpdGhvdXQgS0FTQU5fVk1BTExPQ19WTV9BTExPQywgYW5kIGluIFNXX1RBR1MvR2VuZXJpYyB0aGVcXG4gMjkyOlxcdFxcdCAqIDB4RkYgcG9pbnRlciBhbHJlYWR5IGJ5cGFzc2VzIHNoYWRvdyBjaGVja3MuICBUaGlzIG1pcnJvcnMgdGhlXFxuIDI5MzpcXHRcXHQgKiBpbnRlbnQgb2YgdGhlIGZpeCBpbiBzY3NfZnJlZSgpIChjb21taXQgNTI4YTRhYjQ1MzAwKS5cXG4gMjk0OlxcdFxcdCAqL1xcbiAyOTU6XFx0XFx0dmZyZWUoa2FzYW5fcmVzZXRfdGFnKHZtX2FyZWEtXFx1MDAzZWFkZHIpKTtcXG4gMjk2OlxcdH1cXG4gMjk3OlxcdFxcbiAyOTg6XFx0c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gMjk5OlxcdHtcXG4gMzAwOlxcdFxcdHN0cnVjdCB2bV9zdGFjayAqdm1fc3RhY2sgPSB0c2stXFx1MDAzZXN0YWNrO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHR2bV9zdGFjay1cXHUwMDNlc3RhY2tfdm1fYXJlYSA9IHRzay1cXHUwMDNlc3RhY2tfdm1fYXJlYTtcXG4gMzAzOlxcdFxcdGNhbGxfcmN1KFxcdTAwMjZ2bV9zdGFjay1cXHUwMDNlcmN1LCB0aHJlYWRfc3RhY2tfZnJlZV9yY3UpO1xcbiAzMDQ6XFx0fVxcbiAzMDU6XFx0XFxuIDMwNjpcXHRzdGF0aWMgaW50IGZyZWVfdm1fc3RhY2tfY2FjaGUodW5zaWduZWQgaW50IGNwdSlcXG4gMzA3OlxcdHtcXG4gMzA4OlxcdFxcdHN0cnVjdCB2bV9zdHJ1Y3QgKipjYWNoZWRfdm1fc3RhY2tfYXJlYXMgPSBwZXJfY3B1X3B0cihjYWNoZWRfc3RhY2tzLCBjcHUpO1xcbiAzMDk6XFx0XFx0aW50IGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjMzLjQ3MDE2MDA1MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTM4OTQ1OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB6ZXJvIGluIG9uIHRoaXMgYmxvY2sgb2YgY29kZSBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgYCNpZmRlZmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gV2hhdCdzIHRoZSBkZWZpbmVkIHN5bWJvbD8gV2hhdCBmZWF0dXJlcyBvciBwbGF0Zm9ybXMgaXMgdGhpcyBjb2RlIHRhcmdldGluZz8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBhc3NvY2lhdGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIElzIGl0IHBsYXRmb3JtLXNwZWNpZmljLCBmZWF0dXJlLWZsYWdnZWQsIG9yIGRlYnVnLXJlbGF0ZWQ/IEknbSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBjcm9zcy1yZWZlcmVuY2UgcmVsYXRlZCBpbmNsdWRlIGZpbGVzIG9yIG1ha2VmaWxlcywgdG8gbmFpbCBkb3duIHRoZSBwcmVjaXNlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6YXRpb24sIHBlcmhhcHMgYSBkaWZmZXJlbnQgYWxnb3JpdGhtIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLCBvciBtYXliZSBhIGZlYXR1cmUgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZCBhdCBidWlsZCB0aW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCBtYWludGFpbmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjM3LjI2NDA1ODIwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzQxMDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaWZkZWYgQ09ORklHX1ZNQVBfU1RBQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2ZvcmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZm9yay5jPTE5MT1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtMTk1LVxcbmtlcm5lbC9mb3JrLmM6MTk2OiNpZmRlZiBDT05GSUdfVk1BUF9TVEFDS1xcbmtlcm5lbC9mb3JrLmMtMTk3LS8qXFxuLS1cXG5rZXJuZWwvZm9yay5jPTg2Nj12b2lkIF9faW5pdCBmb3JrX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9mb3JrLmMtODk5LVxcbmtlcm5lbC9mb3JrLmM6OTAwOiNpZmRlZiBDT05GSUdfVk1BUF9TVEFDS1xcbmtlcm5lbC9mb3JrLmMtOTAxLVxcdGNwdWhwX3NldHVwX3N0YXRlKENQVUhQX0JQX1BSRVBBUkVfRFlOLCBcXFwiZm9yazp2bV9zdGFja19jYWNoZVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjM3LjM0NzQ3NDE5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMjczMzQwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCBvZmYsIHRoaXMgcGF0Y2ggaXMgY29uZGl0aW9uYWwsIGRlcGVuZGluZyBvbiBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIHRoZSBtZW50aW9uIG9mIEtBU0FOIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGBDT05GSUdfS0FTQU5gLCBhbmQgcG90ZW50aWFsbHkgaXRzIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSB0YWcgdmFyaWFudHM6IGBDT05GSUdfS0FTQU5fSFdfVEFHU2Agb3IgYENPTkZJR19LQVNBTl9TV19UQUdTYC4gVGhpcyBmaXggaXMgc3BlY2lmaWNhbGx5IGFib3V0IGFkZHJlc3NpbmcgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBkdXJpbmcgdGhyZWFkIHN0YWNrIGZyZWVpbmcuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nIGVmZm9ydD8gSXQncyBhIGNsZWFuLCBzdHJhaWdodGZvcndhcmQgZml4IOKAkyBhIHNpbmdsZSBsaW5lIGFkZGl0aW9uIG9mIGBrYXNhbl9yZXNldF90YWdgLiBGdW5jdGlvbmFsbHksIGl0J3MgcHJldmVudGluZyBhIGNyYXNoLCB3aGljaCBpcyBnb29kLiBIb3dldmVyLCB0aGUgc2ltcGxpY2l0eSBtYWtlcyBtZSBwYXVzZS4gU3RpbGwsIHByZXZlbnRpbmcgYSBjcmFzaCBpcyB2YWx1YWJsZS4gSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBcInllc1wiLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgIGZvciBub3csIGJ1dCB3aWxsIHJlYXNzZXNzIGlmIEkgaGF2ZSB0byBwcmlvcml0aXplLlxuXG5Ob3csIHRoZSBzeW1ib2wgYW5hbHlzaXMuIFRoZSBwYXRjaCBtZW50aW9ucyBgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1YCwgd2hpY2ggaXMgc3RhdGljLiBUaGF0J3MgYSBsaXR0bGUgdHJpY2t5LiBTaW5jZSBpdCdzIFJDVSwgaXQncyBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGNhbGxlZC4gV2hhdCdzIHRoZSBwdWJsaWMgZnVuY3Rpb24gdGhhdCBpbml0aWF0ZXMgdGhlIGZyZWU/IElzIGl0IGBmcmVlX3RocmVhZF9zdGFja2AsIG9yIHBlcmhhcHMgYHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWVgLCBvciBtYXliZSBldmVuIGBmcmVlX3Rhc2tgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHByb2Nlc3MgdG8gc2VlIHdoZXJlIHRoZSBmdXp6aW5nIGhvb2tzIHdvdWxkIGJlIG1vc3QgZWZmZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjQzLjU3NDgxMjQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc1ODQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz0yNzU9c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmgpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTI5Ny1cXG5rZXJuZWwvZm9yay5jOjI5ODpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC9mb3JrLmMtMjk5LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9MzkzPXN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0zOTUtXFx0aWYgKCF0cnlfcmVsZWFzZV90aHJlYWRfc3RhY2tfdG9fY2FjaGUodHNrLVxcdTAwM2VzdGFja192bV9hcmVhKSlcXG5rZXJuZWwvZm9yay5jOjM5NjpcXHRcXHR0aHJlYWRfc3RhY2tfZGVsYXllZF9mcmVlKHRzayk7XFxua2VybmVsL2ZvcmsuYy0zOTctXFxuLS1cXG5rZXJuZWwvZm9yay5jPTQxMD1zdGF0aWMgdm9pZCB0aHJlYWRfc3RhY2tfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyaClcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNDE0LVxcbmtlcm5lbC9mb3JrLmM6NDE1OnN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MTYte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00MzQ9c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MzUte1xcbmtlcm5lbC9mb3JrLmM6NDM2OlxcdHRocmVhZF9zdGFja19kZWxheWVkX2ZyZWUodHNrKTtcXG5rZXJuZWwvZm9yay5jLTQzNy1cXHR0c2stXFx1MDAzZXN0YWNrID0gTlVMTDtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDQ0PXN0YXRpYyB2b2lkIHRocmVhZF9zdGFja19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJoKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00NDgtXFxua2VybmVsL2ZvcmsuYzo0NDk6c3RhdGljIHZvaWQgdGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ1MC17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTQ2NT1zdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ2Ni17XFxua2VybmVsL2ZvcmsuYzo0Njc6XFx0dGhyZWFkX3N0YWNrX2RlbGF5ZWRfZnJlZSh0c2spO1xcbmtlcm5lbC9mb3JrLmMtNDY4LVxcdHRzay1cXHUwMDNlc3RhY2sgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo0My42Mzc1NzU4ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NjUzNDY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgU3RhdGljIE5hdHVyZSBvZiBgZnJlZV90aHJlYWRfc3RhY2tgKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZyZWVfdGhyZWFkX3N0YWNrYCB2YXJpYWJsZSwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyAqYWxzbyogc3RhdGljIGlzIGRlZmluaXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gV2UncmUgdGFsa2luZyBhYm91dCBhIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZSBoZXJlLCBwcmVzdW1hYmx5IHJlbGF0ZWQgdG8gdGhyZWFkIHN0YWNrIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gVGhlIGBzdGF0aWNgIGtleXdvcmQsIGFzIHdlIGJvdGgga25vdywgaGFzIGNydWNpYWwgaW1wbGljYXRpb25zIGluIHRoaXMgY29udGV4dC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgc2NvcGUgb2YgdGhpcyBzdGFjayBtYW5hZ2VtZW50PyBJcyBgZnJlZV90aHJlYWRfc3RhY2tgIGRlc2lnbmVkIHRvIGJlIGEgZ2xvYmFsIHJlc291cmNlIGZvciB0aGUgKmVudGlyZSogcHJvZ3JhbSwgYSBzaW5nbGUgaW5zdGFuY2Ugc2hhcmVkIGFjcm9zcyBhbGwgdGhyZWFkcz8gT3IgaXMgaXQgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBwZXJoYXBzIGEgdGhyZWFkIHBvb2wgbWFuYWdlciwgZW5zdXJpbmcgdGhhdCBzdGFjayBhbGxvY2F0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUgYXJlIG1hbmFnZWQgY29uc2lzdGVudGx5PyBUaGUgZ2xvYmFsIHNjZW5hcmlvIHdvdWxkIG1lYW4gd2UgaGF2ZSBhIHNpbmdsZSBwb2ludCBvZiBjb250ZW50aW9uLCBhbmQgdGhyZWFkIHNhZmV0eSBiZWNvbWVzIHBhcmFtb3VudCwgZGVtYW5kaW5nIGNhcmVmdWwgc3luY2hyb25pemF0aW9uLiBNb2R1bGUtc2NvcGVkLCBob3dldmVyLCBjb3VsZCBiZSBhIG1vcmUgbWFuYWdlYWJsZSwgb3IgcGVyaGFwcyBtb3JlIHNwZWNpYWxpemVkIHNvbHV0aW9uLCBidXQgdGhlbiB3ZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBpbnRlci1tb2R1bGUgdGhyZWFkcyBnZXQgYWxsb2NhdGVkIHRoZWlyIHN0YWNrcy5cblxuVGhlIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYXJlIGltbWVkaWF0ZWx5IGV2aWRlbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgdmFyaWFibGUgaXMgYmVpbmcgdXNlZC4gSWYgaXQncyBhIHNpbXBsZSBmcmVlIGxpc3QsIHRoZW4gYXRvbWljIG9wZXJhdGlvbnMgb24gaXQgYXJlIGVzc2VudGlhbC4gSWYgaXQncyBtb3JlIGNvbXBsZXgsIGEgbG9jayBtaWdodCBiZSBuZWNlc3NhcnkuIEJ1dCBldmVuIHdpdGggYSBsb2NrLCB3ZSBhcmUgbm93IGxvb2tpbmcgYXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGR1ZSB0byBjb250ZW50aW9uLiBJJ20gd29uZGVyaW5nIGlmIGEgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgKFRMUykgYXBwcm9hY2ggd2Fzbid0IGNvbnNpZGVyZWQsIHRvIGF2b2lkIHN1Y2ggbG9jayBjb250ZW50aW9uLCBhc3N1bWluZyB0aGUgc3RhY2tzIGFyZSBiZWluZyB1c2VkIGJ5IGEgc3Vic2V0IG9mIHRocmVhZHMgYW5kIG5vdCBhbGwgdGhyZWFkcyBzaW11bHRhbmVvdXNseS5cblxuQW5vdGhlciBhc3BlY3QgdGhhdCdzIGp1bXBpbmcgb3V0IGF0IG1lIGlzIGxpZmV0aW1lIG1hbmFnZW1lbnQuIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCBsaXZlcyB0aHJvdWdob3V0IHRoZSBwcm9ncmFtJ3MgZXhlY3V0aW9uLCBvciBhdCBsZWFzdCB0aGUgbW9kdWxlJ3MgbGlmZXRpbWUuIEFyZSB3ZSBsb29raW5nIGF0IGEgc3lzdGVtIHdoZXJlIHN0YWNrcyBhcmUgcHJlLWFsbG9jYXRlZCBhdCBzdGFydHVwLCBhbmQgdGhlbiBzaW1wbHkgcmUtdXNlZCB0aHJvdWdob3V0IHRoZSBwcm9ncmFtJ3MgbGlmZXNwYW4/IE9yIGlzIGl0IGRlc2lnbmVkIHRvIGhhbmRsZSBkeW5hbWljIHRocmVhZCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gZ3JhY2VmdWxseSwgZXZlbiB1bmRlciBoZWF2eSBsb2FkPyBUaGUgZGVzaWduIGNvbnNpZGVyYXRpb25zIGZvciBwcmUtYWxsb2NhdGlvbiBhcmUgdmVyeSBkaWZmZXJlbnQgZnJvbSBkeW5hbWljIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gSXMgdGhpcyBhIHN5c3RlbSB3aGVyZSB0aGVyZSBhcmUgc3RhY2sgZ3Jvd3RoIGxpbWl0YXRpb25zLCBvciBpcyB0aGlzIGJlaW5nIHVzZWQgdG8gZ3Jvdz9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBpdHMgaW5pdGlhbGl6YXRpb24uIElzIHRoZSBzdGFjayBwcmUtcG9wdWxhdGVkIHdpdGggYSBzZXQgb2YgaW5pdGlhbGx5IGZyZWUgc3RhY2sgZnJhbWVzLCBvciBpcyB0aGUgbGlzdCBidWlsdCBkeW5hbWljYWxseT8gSG93IGRvZXMgdGhlIHN5c3RlbSBoYW5kbGUgc3RhY2sgZXhoYXVzdGlvbiwgZXNwZWNpYWxseSBpbiBzeXN0ZW1zIHdpdGggYSBoYXJkIGxpbWl0IG9uIHJlc291cmNlcz8gRG9lcyBpdCBmYWlsIGdyYWNlZnVsbHksIG9yIGRvZXMgaXQgbGVhZCB0byBhIGhhcmQgY3Jhc2g/IFRoZSBsYWNrIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYW4gaW1wb3J0YW50IG9taXNzaW9uIGZvciBhIHN0YXRpYyB2YXJpYWJsZS5cblxuU28sIGluIGVzc2VuY2UsIHRoZSBzdGF0aWMgbmF0dXJlIG9mIGBmcmVlX3RocmVhZF9zdGFja2AgcmFpc2VzIGEgd2hvbGUgaG9zdCBvZiBxdWVzdGlvbnMgYWJvdXQgY29uY3VycmVuY3ksIG1lbW9yeSBtYW5hZ2VtZW50IHN0cmF0ZWd5LCBsaWZldGltZSwgZXJyb3IgaGFuZGxpbmcsIGFuZCBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uIEl0IHN1Z2dlc3RzIGEgZm9jdXNlZCBhcHByb2FjaCB0byBzdGFjayBtYW5hZ2VtZW50LCBidXQgSSBuZWVkIGEgbG90IG1vcmUgY29udGV4dCB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYW5kIGV2YWx1YXRlIGl0cyBlZmZlY3RpdmVuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTk6NDkuNzI0MTEzMjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTk3NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZyZWVfdGhyZWFkX3N0YWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz0zNDU9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTM4My1cXHQgKiBXZSBjYW4ndCBjYWxsIGZpbmRfdm1fYXJlYSgpIGluIGludGVycnVwdCBjb250ZXh0LCBhbmRcXG5rZXJuZWwvZm9yay5jOjM4NDpcXHQgKiBmcmVlX3RocmVhZF9zdGFjaygpIGNhbiBiZSBjYWxsZWQgaW4gaW50ZXJydXB0IGNvbnRleHQsXFxua2VybmVsL2ZvcmsuYy0zODUtXFx0ICogc28gY2FjaGUgdGhlIHZtX3N0cnVjdC5cXG4tLVxcbmtlcm5lbC9mb3JrLmMtMzkyLVxcbmtlcm5lbC9mb3JrLmM6MzkzOnN0YXRpYyB2b2lkIGZyZWVfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC9mb3JrLmMtMzk0LXtcXG4tLVxcbmtlcm5lbC9mb3JrLmM9NDIyPXN0YXRpYyBpbnQgYWxsb2NfdGhyZWFkX3N0YWNrX25vZGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBub2RlKVxcbi0tXFxua2VybmVsL2ZvcmsuYy00MzMtXFxua2VybmVsL2ZvcmsuYzo0MzQ6c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL2ZvcmsuYy00MzUte1xcbi0tXFxua2VybmVsL2ZvcmsuYz00NTY9c3RhdGljIGludCBhbGxvY190aHJlYWRfc3RhY2tfbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IG5vZGUpXFxuLS1cXG5rZXJuZWwvZm9yay5jLTQ2NC1cXG5rZXJuZWwvZm9yay5jOjQ2NTpzdGF0aWMgdm9pZCBmcmVlX3RocmVhZF9zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTQ2Ni17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTUyOT1zdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfc3RhY2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTUzMy1cXG5rZXJuZWwvZm9yay5jOjUzNDpcXHRmcmVlX3RocmVhZF9zdGFjayh0c2spO1xcbmtlcm5lbC9mb3JrLmMtNTM1LX1cXG4tLVxcbmtlcm5lbC9mb3JrLmM9OTI2PXN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmR1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9yaWcsIGludCBub2RlKVxcbi0tXFxua2VybmVsL2ZvcmsuYy0xMDMyLVxcdGV4aXRfdGFza19zdGFja19hY2NvdW50KHRzayk7XFxua2VybmVsL2ZvcmsuYzoxMDMzOlxcdGZyZWVfdGhyZWFkX3N0YWNrKHRzayk7XFxua2VybmVsL2ZvcmsuYy0xMDM0LWZyZWVfdHNrOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo0OS44MTU3MTU3MDRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MDk1MjIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgcmVsZWFzZV90YXNrX3N0YWNrYCBVc2FnZSoqXG5cbkFscmlnaHQsIHNvIGByZWxlYXNlX3Rhc2tfc3RhY2tgIGlzIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiB0aGUga2VybmVsIGNvZGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZzsgdGhhdCBsaW1pdHMgaXRzIHNjb3BlIGNvbnNpZGVyYWJseSwgdHlwaWNhbGx5IG1lYW5pbmcgaXQncyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCB3aXRoaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdCBhcyBpdHMgZGVmaW5pdGlvbi4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgYW5kIHJlbWluZCBteXNlbGYgd2hlcmUgaXQncyBkZWZpbmVkIHdpdGhpbiB0aGUgcHJvamVjdC5cblxuTm93LCBsZXQncyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYGR1cF90YXNrX3N0cnVjdGAuIEhtbSwgdGhhdCdzIGFsc28gc3RhdGljLiBPa2F5LCBnb29kLiBTaW5jZSBib3RoIGFyZSBzdGF0aWMsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHVzZSBpbiB0YW5kZW0sIGFuZCB0cmFjaW5nIGNhbGxzIGlzIGxpa2VseSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udGV4dHMgdGhleSBvcGVyYXRlIGluLCBhbmQgaG93IHRoZXkgcmVsYXRlLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSB0YXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgd2l0aCBgcmVsZWFzZV90YXNrX3N0YWNrYC4gVGltZSB0byBmaW5kIG91dCBleGFjdGx5ICp3aG8qIGlzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIHRvIGdldCBhIGhhbmRsZSBvbiBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzEwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE5OjUzLjk1NjY3MTQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgwMDAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVsZWFzZV90YXNrX3N0YWNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9mb3JrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2ZvcmsuYz01MTU9dm9pZCBleGl0X3Rhc2tfc3RhY2tfYWNjb3VudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmtlcm5lbC9mb3JrLmMtNTI4LVxcbmtlcm5lbC9mb3JrLmM6NTI5OnN0YXRpYyB2b2lkIHJlbGVhc2VfdGFza19zdGFjayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvZm9yay5jLTUzMC17XFxuLS1cXG5rZXJuZWwvZm9yay5jPTUzOD12b2lkIHB1dF90YXNrX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2ZvcmsuYy01NDAtXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2dHNrLVxcdTAwM2VzdGFja19yZWZjb3VudCkpXFxua2VybmVsL2ZvcmsuYzo1NDE6XFx0XFx0cmVsZWFzZV90YXNrX3N0YWNrKHRzayk7XFxua2VybmVsL2ZvcmsuYy01NDItfVxcbi0tXFxua2VybmVsL2ZvcmsuYz01NDU9dm9pZCBmcmVlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZm9yay5jLTU1Ny1cXHQgKi9cXG5rZXJuZWwvZm9yay5jOjU1ODpcXHRyZWxlYXNlX3Rhc2tfc3RhY2sodHNrKTtcXG5rZXJuZWwvZm9yay5jLTU1OS0jZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxOTo1NC41MzQ2NzU2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY5OTMwNDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpcyBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBwdXRfdGFza19zdGFja2AgYW5kIGBmcmVlX3Rhc2tgIGFyZSBib3RoIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLiBgZnJlZV90YXNrYCBpcyBjYWxsZWQgZHVyaW5nIHRhc2sgZXhpdDsgdGhhdCdzIGEgKnZlcnkqIGhvdCBwYXRoLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlLiBIbW0sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1xuXG5JdCdzIGEgb25lLWxpbmUgZml4LCBiYXNpY2FsbHkganVzdCByZXNldHRpbmcgYSB0YWcgdG8gYXZvaWQgYSBmYWxzZSBwb3NpdGl2ZS4gTm8gbmV3LCBjb21wbGV4IGxvZ2ljIGJlaW5nIGludHJvZHVjZWQuIEl0J3MgZXNzZW50aWFsbHkganVzdCBhIHJlc2V0LiBPa2F5LCBub3csIGxldCdzIGdvIHRocm91Z2ggdGhlIHByb21wdCdzIGNyaXRlcmlhIGZvciBza2lwcGluZyBmdXp6aW5nOiBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCB0ZWFyZG93biBjYWxsYmFja3MuLi4gVGhpcyBwYXRjaCBkb2Vzbid0IGZpdCBhbnkgb2YgdGhvc2UuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IG1vZGlmaWVzIGEgcG9pbnRlciB2YWx1ZSBiZWZvcmUgYHZmcmVlYCFcblxuV2FpdCwgZG9lcyB0aGlzIGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdz8gTGV0IG1lIHRoaW5rLi4uIGBrYXNhbl9yZXNldF90YWdgICpkb2VzKiByZXNldCB0aGUgdGFnLiBBbmQgaW4gSFdfVEFHUywgU1dfVEFHUyBhbmQgR2VuZXJpYyBpdCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBwb2ludGVyIHZhbHVlLiBUaGlzIGlzLCBpbmRlZWQsIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgaGF2ZSB0byBzYXkgYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCBzaG91bGQgSSBsaXN0IGFueSBmb2N1cyBzeW1ib2xzPyBJIHNob3VsZCBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gV2VsbCwgYGZyZWVfdGFza2AgaXMgZGVmaW5pdGVseSBob3QuIEFuZCBgcHV0X3Rhc2tfc3RhY2tgIGlzIGFsc28gYSBob3QgcGF0aCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBvbiB0YXNrIGV4aXQuIGBkdXBfdGFza19zdHJ1Y3RgIGlzIGFub3RoZXIgaG90IHBhdGguIElmIGFsbCB0aGUgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGFyZSBob3QgcGF0aHMsIHRoZW4gbGVhdmluZyBgRm9jdXNTeW1ib2xzYCBlbXB0eSBpcyB3aGF0IEkgc2hvdWxkIGRvLlxuXG5XaGF0IGFib3V0IGBDT05GSUdgIG9wdGlvbnM/IEknbGwgbmVlZCBgQ09ORklHX1ZNQVBfU1RBQ0tgLiBBbmQsIG9mIGNvdXJzZSwgYENPTkZJR19LQVNBTmAgYW5kIGVpdGhlciBgQ09ORklHX0tBU0FOX1NXX1RBR1NgIG9yIGBDT05GSUdfS0FTQU5fSFdfVEFHU2AuIFRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gYWN0dWFsbHkgdGVzdCB0aGUgdGFnIHJlc2V0LCBldmVuIHRob3VnaCBga2FzYW5fcmVzZXRfdGFnYCBpcyBhbHdheXMgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoyMDowNS4yMzM5ODI1ODhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4NzY5MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImthc2FuX3Jlc2V0X3RhZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2thc2FuLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9rYXNhbi5oPTUxND1zdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fcmVjb3JkX2F1eF9zdGFjayh2b2lkICpwdHIpIHt9XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTE5LVxcbmluY2x1ZGUvbGludXgva2FzYW4uaDo1MjA6c3RhdGljIGlubGluZSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRkcilcXG5pbmNsdWRlL2xpbnV4L2thc2FuLmgtNTIxLXtcXG5pbmNsdWRlL2xpbnV4L2thc2FuLmg6NTIyOlxcdHJldHVybiAodm9pZCAqKWFyY2hfa2FzYW5fcmVzZXRfdGFnKGFkZHIpO1xcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MjMtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oPTUzMj1ib29sIGthc2FuX3JlcG9ydChjb25zdCB2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01MzYtXFxuaW5jbHVkZS9saW51eC9rYXNhbi5oOjUzNzpzdGF0aWMgaW5saW5lIHZvaWQgKmthc2FuX3Jlc2V0X3RhZyhjb25zdCB2b2lkICphZGRyKVxcbmluY2x1ZGUvbGludXgva2FzYW4uaC01Mzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoyMDowNS4zMzI3NTYxMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjAzOTA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIEtlcm5lbCBTdGFjayBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBzdGFjayBhbGxvY2F0aW9uIGluIHRoZSBrZXJuZWwgYW5kIEkgc2VlIGBDT05GSUdfVk1BUF9TVEFDS2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gb2YgaW50ZXJlc3QgaGVyZS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBcIklzIHRoaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIG1vc3Qgc2NlbmFyaW9zLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBzZXR0aW5ncz9cIiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHR5cGljYWwgc3RhdGUgb2YgdGhpcyBvcHRpb24gdG8gdW5kZXJzdGFuZCBpdHMgZ2VuZXJhbCBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBpZiBpdOKAmXMgZGlzYWJsZWQgb3IgaWYgSSBkZWNpZGUgdG8gdHdlYWsgaXQuIFRpbWUgdG8gZGlnIGluIGFuZCBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MjA6MDkuMTc0Nzk4MTQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU5OTY3MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWTUFQX1NUQUNLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL0tjb25maWc9MTUwMj1jb25maWcgSEFWRV9BUkNIX1ZNQVBfU1RBQ0tcXG4tLVxcbmFyY2gvS2NvbmZpZy0xNTIxLVxcbmFyY2gvS2NvbmZpZzoxNTIyOmNvbmZpZyBWTUFQX1NUQUNLXFxuYXJjaC9LY29uZmlnLTE1MjMtXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjIwOjExLjUzNDc2OTkxN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjEyMzg2MjA5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWTUFQX1NUQUNLYCBiZWluZyBgZGVmYXVsdCB5YCB3aGVuIGBIQVZFX0FSQ0hfVk1BUF9TVEFDS2AgaXMgc2V0IGNvbmZpcm1zIGl0J3MgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHBhdGguXG5cbk5vdywgdGhlIGNvcmUgcXVlc3Rpb246IGlzIHRoaXMgb25lLWxpbmUgS0FTQU4gZmFsc2UgcG9zaXRpdmUgZml4IHdvcnRoIGZ1enppbmc/IEl0J3MgYSBzaW1wbGUgdGFnIHJlc2V0LiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGxvZ2ljIG9yIGNvbXBsZXhpdGllcy4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgY2hhbmdlcyBsaWtlIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGZsb3csIGJ1dCB0aGlzICpkb2VzKiBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGZsb3c7IGl0IGNoYW5nZXMgdGhlIHBvaW50ZXIgcGFzc2VkIHRvIGB2ZnJlZWAsIHByZXZlbnRpbmcgYSBLQVNBTiByZXBvcnQuIFNvLCBpbml0aWFsbHksIEknbSBsZWFuaW5nIHRvd2FyZCBgV29ydGhGdXp6aW5nPXRydWVgIGJlY2F1c2UgaXQgaXMgZnVuY3Rpb25hbGx5IGNoYW5naW5nIGNvcmUga2VybmVsIGNvZGUuXG5cbkhvd2V2ZXIsIGl0ICppcyoganVzdCBhIG9uZS1saW5lciB0YWcgcmVzZXQuIFdpbGwgZnV6emluZyB0aGlzIHNwZWNpZmljYWxseSBmaW5kIGFueXRoaW5nIG5ldz8gUHJvYmFibHkgbm90LiBUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYW5kIHRoaXMgaXMgZnVuY3Rpb25hbCwgc28gSSB3YXMgY29ycmVjdCBpbiB0aGUgZmlyc3QgYXNzZXNzbWVudC4gSSBjb3VsZCBzYXkgaXQgdGhpcyBwYXRjaCAqc2hvdWxkbid0KiBiZSBmdXp6ZWQsIGdpdmVuIGl0IGlzIGEgdmVyeSBzaW1wbGUgZml4LlxuXG5TbywgdGhlIGp1c3RpZmljYXRpb24gSSBjYW1lIHVwIHdpdGg6IFwiVGhpcyBwYXRjaCBmaXhlcyBhIEtBU0FOIGZhbHNlIHBvc2l0aXZlIGJ5IHJlc2V0dGluZyB0aGUgcG9pbnRlciB0YWcgYmVmb3JlIGNhbGxpbmcgdmZyZWUgb24gYSB0aHJlYWQgc3RhY2suIFdoaWxlIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IGlzIGEgc2ltcGxlIG9uZS1saW5lIGZpeCBpbiBhIGNvcmUga2VybmVsIGhvdCBwYXRoICh0YXNrIGV4aXQvZnJlZSkuIEZ1enppbmcgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgaXMgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3MsIGJ1dCBpdCBpcyB0ZWNobmljYWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXI6IHNob3VsZCBpdCBiZSBgZmFsc2VgIHNpbmNlIGl0J3MgdW5saWtlbHkgdG8geWllbGQgbmV3IGJ1Z3M/IFRoZSBwcm9tcHQgZG9lc24ndCBleHBsaWNpdGx5IHNheSBcInNpbXBsZSBidWcgZml4ID0gZmFsc2UuXCIgU28gSSdtIHN0aWNraW5nIHdpdGggYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93IGxldCdzIHJldmlldyB0aGUgY29uZmlncywgdG8gYmUgY2VydGFpbi4gSSBrbm93IHRoYXQgYENPTkZJR19LQVNBTmAgaXMgZXNzZW50aWFsIHRvIGFjdHVhbGx5IGVuYWJsZSBLQVNBTiwgd2hpY2ggaXMgd2hlcmUgdGhlIGZhbHNlIHBvc2l0aXZlIGlzLiBJdCB3b3VsZCBiZSB1c2VsZXNzIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkLiBJJ20gZ29pbmcgdG8gYWRkIGBLQVNBTmAgdG8gdGhlIGNvbmZpZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYFZNQVBfU1RBQ0tgIGNhbiBiZSBpbmNsdWRlZCBoZXJlLlxuXG5UaGlua2luZyBhYm91dCBga2FzYW5fcmVzZXRfdGFnYCBhZ2FpbiwgSSByZWFsaXplIHRoYXQgaWYgS0FTQU4gaXMgZGlzYWJsZWQsIHRoZSBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyB0aGUgcG9pbnRlciB1bm1vZGlmaWVkLiBUbyBhY3R1YWxseSB0ZXN0ICp0aGUgbW9kaWZpZWQgY29kZSogKHRoZSB0YWcgcmVzZXQgZG9pbmcgc29tZXRoaW5nKSwgSSAqbXVzdCogaGF2ZSBLQVNBTiBlbmFibGVkLiBTbywgSSBuZWVkIHRvIGFkZCBgS0FTQU5gIGFuZCBgVk1BUF9TVEFDS2AgdG8gYEVuYWJsZUNvbmZpZ3NgLlxuXG5GaW5hbGx5LCBsZXQncyBsb29rIGF0IHRoZSBgRm9jdXNTeW1ib2xzYC4gYGZyZWVfdGFza2AgYW5kIGBwdXRfdGFza19zdGFja2AgYXJlIGhvdCBwYXRocywgYnV0IGB0aHJlYWRfc3RhY2tfZnJlZV9yY3VgIGlzIHN0YXRpYy4gVGhlc2UgYXJlIGFsbCBnZW5lcmljIHJvdXRpbmVzIHJlbGF0ZWQgdG8gdGFzayBmcmVlaW5nLiBJIHdvbid0IHNwZWNpZnkgYW55IHNwZWNpZmljIGBGb2N1c1N5bWJvbHNgLCBhcyB0aGUgcGF0Y2ggYWZmZWN0cyBnZW5lcmljIGhvdCBwYXRocy5cblxuVGhlIHJlYXNvbmluZyBJJ20gZ29pbmcgdG8gcHJvdmlkZSBpczogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCJcblxuTm93IEknbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MjQsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjIwOjMzLjY1ODYzNTY1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDQ2OTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVk1BUF9TVEFDS1wiLFxuICAgIFwiS0FTQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVk1BUF9TVEFDS1wiLFxuICAgIFwiS0FTQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBLQVNBTiBmYWxzZSBwb3NpdGl2ZSBieSByZXNldHRpbmcgdGhlIHBvaW50ZXIgdGFnIGJlZm9yZSBjYWxsaW5nIHZmcmVlKCkgb24gYSB0aHJlYWQgc3RhY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyB0YXNrIGZyZWVpbmcgbG9naWMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGFzayBleGl0IGFuZCBjbGVhbnVwLiBTaW5jZSB0aGUgYWZmZWN0ZWQgZnVuY3Rpb25zIChsaWtlIGZyZWVfdGFzayBhbmQgcHV0X3Rhc2tfc3RhY2spIGFyZSBnZW5lcmljIGhvdCBwYXRocywgbm8gc3BlY2lmaWMgRm9jdXNTeW1ib2xzIGFyZSBwcm92aWRlZC4gQ09ORklHX1ZNQVBfU1RBQ0sgYW5kIENPTkZJR19LQVNBTiBhcmUgcmVxdWlyZWQgdG8gZXhlcmNpc2UgdGhlIHRhZyByZXNldHRpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowf69n2[1] Phase: Succeeded StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 14:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 14:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2] Phase: Succeeded StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 14:20:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 14:20:44 +0000 UTC FinishedAt: 2026-08-06 14:20:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowf69n2/series-workflowf69n2-convert-artifact-3563971949/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 14:20:55 +0000 UTC FinishedAt: 2026-08-06 14:38:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 14:20:55 +0000 UTC FinishedAt: 2026-08-06 14:38: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:*aaaae6e5-a5dc-4e96-aa59-b462acc8bf6a,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-workflowf69n2/series-workflowf69n2-convert-artifact-3563971949/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": "e8294555-d3ad-4425-a81f-0771720a0c9a", "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-workflowf69n2/series-workflowf69n2-build-action-1257394019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 14:20:55 +0000 UTC FinishedAt: 2026-08-06 14:38: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:*aaaae6e5-a5dc-4e96-aa59-b462acc8bf6a,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-workflowf69n2/series-workflowf69n2-convert-artifact-3563971949/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": "e8294555-d3ad-4425-a81f-0771720a0c9a", "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-workflowf69n2/series-workflowf69n2-build-action-1257394019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 14:38:21 +0000 UTC FinishedAt: 2026-08-06 14:38:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 14:38:21 +0000 UTC FinishedAt: 2026-08-06 14:38:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 14:38:21 +0000 UTC FinishedAt: 2026-08-06 14:38:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 14:38:21 +0000 UTC FinishedAt: 2026-08-06 14:38:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowf69n2/series-workflowf69n2-convert-artifact-1995657672/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 14:38:31 +0000 UTC FinishedAt: 2026-08-06 14:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 14:38:31 +0000 UTC FinishedAt: 2026-08-06 14:40:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8294555-d3ad-4425-a81f-0771720a0c9a,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-workflowf69n2/series-workflowf69n2-build-action-1257394019/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-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 14:40:39 +0000 UTC FinishedAt: 2026-08-06 14:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 14:40:39 +0000 UTC FinishedAt: 2026-08-06 14:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 14:40:39 +0000 UTC FinishedAt: 2026-08-06 14:57:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 14:40:39 +0000 UTC FinishedAt: 2026-08-06 14:57:33 +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:*aaaae6e5-a5dc-4e96-aa59-b462acc8bf6a,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-workflowf69n2/series-workflowf69n2-convert-artifact-1995657672/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": "63d513cd-86da-4fde-a720-e182f6907079", "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-workflowf69n2/series-workflowf69n2-build-action-4208756340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 14:40:39 +0000 UTC FinishedAt: 2026-08-06 14:57:23 +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:*aaaae6e5-a5dc-4e96-aa59-b462acc8bf6a,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-workflowf69n2/series-workflowf69n2-convert-artifact-1995657672/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": "63d513cd-86da-4fde-a720-e182f6907079", "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-workflowf69n2/series-workflowf69n2-build-action-4208756340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 14:57:33 +0000 UTC FinishedAt: 2026-08-06 14:57:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 14:57:33 +0000 UTC FinishedAt: 2026-08-06 14:57:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 14:57:33 +0000 UTC FinishedAt: 2026-08-06 14:59:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 14:57:33 +0000 UTC FinishedAt: 2026-08-06 14:59:27 +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:*63d513cd-86da-4fde-a720-e182f6907079,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-workflowf69n2/series-workflowf69n2-build-action-4208756340/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-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},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:*e8294555-d3ad-4425-a81f-0771720a0c9a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*63d513cd-86da-4fde-a720-e182f6907079,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-workflowf69n2/series-workflowf69n2-build-action-1257394019/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-workflowf69n2/series-workflowf69n2-build-action-4208756340/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 14:59:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 14:59:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},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-workflowf69n2/series-workflowf69n2-convert-artifact-184321409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 14:59:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 14:59:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 14:59:37 +0000 UTC FinishedAt: 2026-08-06 14:59:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 14:59:47 +0000 UTC FinishedAt: 2026-08-06 18:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf69n2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["VMAP_STACK","KASAN"],"series_id":"2c31a539-c0d0-4ab1-b69b-aaf1e14ccadd","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 14:59:47 +0000 UTC FinishedAt: 2026-08-06 18:01:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e8294555-d3ad-4425-a81f-0771720a0c9a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*63d513cd-86da-4fde-a720-e182f6907079,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-workflowf69n2/series-workflowf69n2-build-action-1257394019/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-workflowf69n2/series-workflowf69n2-build-action-4208756340/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-workflowf69n2/series-workflowf69n2-convert-artifact-184321409/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,}